blob: ec45ca44356216228db83bc66c3786ac15f02c0d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
% 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:
|