2016-06-03 3 views
0

quickstart for the diagrams package говорит мне, чтобы скомпилировать и запустить следующую программу:Haskell диаграммы SVG обрезается

{-# LANGUAGE NoMonomorphismRestriction #-} 

import Diagrams.Prelude 
import Diagrams.Backend.SVG.CmdLine 

main = mainWith (circle 1 :: Diagram B) 

Это их утверждает:

Если теперь просмотреть circle.svg в вашем любимом веб-браузер, должен быть указан circle

Однако это не так. То, что я на самом деле вижу это:

crop circle

Примечания вырезанных краев диаграммы. Это потому, что линия имеет ширину, но изображение обрезается с предположением о том, что линия не имеет ширины.

Вот вывод SVG:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg 
    xmlns="http://www.w3.org/2000/svg" 
    height="200.0000" stroke-opacity="1" 
    viewBox="0 0 200 200" 
    font-size="1" 
    width="200.0000" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    stroke="rgb(0,0,0)" 
    version="1.1"> 
    <defs></defs> 
    <g 
     stroke-linejoin="miter" 
     stroke-opacity="1.0" 
     fill-opacity="0.0" 
     stroke="rgb(0,0,0)" 
     stroke-width="0.8" 
     fill="rgb(0,0,0)" 
     stroke-linecap="butt" 
     stroke-miterlimit="10.0"> 
    <path 
     d="M 200.0000,100.0000 c 0.0000,-55.2285 -44.7715,-100.0000 -100.0000 -100.0000c -55.2285,-0.0000 -100.0000,44.7715 -100.0000 100.0000c -0.0000,55.2285 44.7715,100.0000 100.0000 100.0000c 55.2285,0.0000 100.0000,-44.7715 100.0000 -100.0000Z" 
    /> 
    </g> 
</svg> 

Как я могу сказать, diagrams взять ширину линии во внимание при определении огибающей диаграммы?

+1

Невозможно воспроизвести. SVG, конечно, не обрезается, в худшем случае браузер обрабатывает вывод, который он отображает из него. И 'frame' _does_ добавляет маржу, так что даже этого не произойдет (по крайней мере, в последних версиях, я попробовал это с помощью' diagrams-1.3.0.1'). – leftaroundabout

ответ

0

Извините, что я никогда не видел этого раньше; на всякий случай, если кто-то еще сталкивается с этим: вы правы, что учебник немного потянет вас, поскольку он автоматически обертывает все диаграммы примеров в frame. Невозможно рассказать диаграммы, чтобы взять ширину линии во внимание при создании конверта (по разным причинам, что было бы очень сложно), но вы можете добавить некоторое пространство вокруг диаграммы, например. используя функцию, такую ​​как frame или pad.

Смежные вопросы