% Copyright 2019 by Till Tantau % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Free Documentation License. % % See the file doc/generic/pgf/licenses/LICENSE for more details. \section{SVG-Path Library} \label{section-library-svg-path} \begin{pgflibrary}{svg.path} This library defines a command that allows you to specify a path using the \textsc{svg}-syntax. \end{pgflibrary} \begin{command}{\pgfpathsvg\marg{path}} This command extends the current path by a \meta{path} given in the \textsc{svg}-path-data syntax. This syntax is described in detail in Section~8.3 of the \textsc{svg}-specification, Version~1.1. In principle, the complete syntax is supported and the library just provides a parser and a mapping to basic layer commands. For instance, |M 0 10| is mapped to |\pgfpathmoveto{\pgfpoint{0pt}{10pt}}|. There are, however, a few things to be aware of: % \begin{itemize} \item The computation underlying the arc commands |A| and |a| are not numerically stable, which may result in quite imprecise arcs. Bézier curves, both quadratic and cubic, are not affected, neither are arcs spanning degrees that are multiples of $90^{\circ}$. \item The dimensionless units of \textsc{svg} are always interpreted as points (|pt|). This is a problem with paths like |M 20000 0|, which will raise an error message since \TeX\ cannot handle dimensions larger than about 16\,000 points. \item All coordinate and canvas transformations apply to the path in the usual fashion. \item The |\pgfpathsvg| command can be freely intermixed with other path commands. \end{itemize} % \begin{codeexample}[preamble={\usepgflibrary{svg.path}}] \begin{pgfpicture} \pgfpathsvg{M 0 0 l 20 0 0 20 -20 0 q 10 0 10 10 t 10 10 10 10 h -50 z} \pgfusepath{stroke} \end{pgfpicture} \end{codeexample} % \end{command} %%% Local Variables: %%% mode: latex %%% TeX-master: "pgfmanual-pdftex-version" %%% End: