summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-03-27 21:47:01 +0000
committerKarl Berry <karl@freefriends.org>2017-03-27 21:47:01 +0000
commitc6a479104e5b7267d949f7ffa30a04d66b91dd84 (patch)
tree5e3befcdbf3cc53d040694f8ffd469ff9198bcdd /Master
parentb77be621f0a8f5fa4c5ccb00365e5578dd3dbd7f (diff)
svg (27mar17)
git-svn-id: svn://tug.org/texlive/trunk@43625 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/svg/Fig.1a.pdfbin35786 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svg/Fig.1b.eps1938
-rw-r--r--Master/texmf-dist/doc/latex/svg/Fig.2.pdfbin188888 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svg/Fig.2.pngbin238966 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svg/LICENSE.md30
-rw-r--r--Master/texmf-dist/doc/latex/svg/README40
-rw-r--r--Master/texmf-dist/doc/latex/svg/README.md55
-rw-r--r--Master/texmf-dist/doc/latex/svg/example.pdfbin4816 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svg/example.pdf_tex40
-rw-r--r--Master/texmf-dist/doc/latex/svg/example.svg363
-rw-r--r--Master/texmf-dist/doc/latex/svg/preamble.tex8
-rw-r--r--Master/texmf-dist/doc/latex/svg/root.C1
-rw-r--r--Master/texmf-dist/doc/latex/svg/root.pdfbin166153 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svg/root.pdf_tex49
-rw-r--r--Master/texmf-dist/doc/latex/svg/svg-example.svg401
-rw-r--r--Master/texmf-dist/doc/latex/svg/svg-preamble.tex10
-rw-r--r--Master/texmf-dist/doc/latex/svg/svg.pdfbin368261 -> 965165 bytes
-rw-r--r--Master/texmf-dist/source/latex/svg/svg.dtx5848
-rw-r--r--Master/texmf-dist/tex/latex/svg/svg-extract.sty1147
-rw-r--r--Master/texmf-dist/tex/latex/svg/svg.sty1253
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
21 files changed, 7967 insertions, 3217 deletions
diff --git a/Master/texmf-dist/doc/latex/svg/Fig.1a.pdf b/Master/texmf-dist/doc/latex/svg/Fig.1a.pdf
deleted file mode 100644
index 8e784b5e9d3..00000000000
--- a/Master/texmf-dist/doc/latex/svg/Fig.1a.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svg/Fig.1b.eps b/Master/texmf-dist/doc/latex/svg/Fig.1b.eps
deleted file mode 100644
index c67ba62b463..00000000000
--- a/Master/texmf-dist/doc/latex/svg/Fig.1b.eps
+++ /dev/null
@@ -1,1938 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: TeX
-%%LanguageLevel: 2
-%%DocumentSuppliedResources: (atend)
-%%BoundingBox: 0 0 142 105
-%%HiResBoundingBox: 0 0 141.732 104.389
-%%DocumentSuppliedResources: (atend)
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset xpdf 3.00 0
-%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC
-/xpdf 75 dict def xpdf begin
-% PDF special state
-/pdfDictSize 15 def
-/pdfSetup {
- 3 1 roll 2 array astore
- /setpagedevice where {
- pop 3 dict begin
- /PageSize exch def
- /ImagingBBox null def
- /Policies 1 dict dup begin /PageSize 3 def end def
- { /Duplex true def } if
- currentdict end setpagedevice
- } {
- pop pop
- } ifelse
-} def
-/pdfStartPage {
- pdfDictSize dict begin
- /pdfFillCS [] def
- /pdfFillXform {} def
- /pdfStrokeCS [] def
- /pdfStrokeXform {} def
- /pdfFill [0] def
- /pdfStroke [0] def
- /pdfFillOP false def
- /pdfStrokeOP false def
- /pdfLastFill false def
- /pdfLastStroke false def
- /pdfTextMat [1 0 0 1 0 0] def
- /pdfFontSize 0 def
- /pdfCharSpacing 0 def
- /pdfTextRender 0 def
- /pdfTextRise 0 def
- /pdfWordSpacing 0 def
- /pdfHorizScaling 1 def
- /pdfTextClipPath [] def
-} def
-/pdfEndPage { end } def
-% PDF color state
-/cs { /pdfFillXform exch def dup /pdfFillCS exch def
- setcolorspace } def
-/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
- setcolorspace } def
-/sc { pdfLastFill not { pdfFillCS setcolorspace } if
- dup /pdfFill exch def aload pop pdfFillXform setcolor
- /pdfLastFill true def /pdfLastStroke false def } def
-/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
- dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
- /pdfLastStroke true def /pdfLastFill false def } def
-/op { /pdfFillOP exch def
- pdfLastFill { pdfFillOP setoverprint } if } def
-/OP { /pdfStrokeOP exch def
- pdfLastStroke { pdfStrokeOP setoverprint } if } def
-/fCol {
- pdfLastFill not {
- pdfFillCS setcolorspace
- pdfFill aload pop pdfFillXform setcolor
- pdfFillOP setoverprint
- /pdfLastFill true def /pdfLastStroke false def
- } if
-} def
-/sCol {
- pdfLastStroke not {
- pdfStrokeCS setcolorspace
- pdfStroke aload pop pdfStrokeXform setcolor
- pdfStrokeOP setoverprint
- /pdfLastStroke true def /pdfLastFill false def
- } if
-} def
-% build a font
-/pdfMakeFont {
- 4 3 roll findfont
- 4 2 roll matrix scale makefont
- dup length dict begin
- { 1 index /FID ne { def } { pop pop } ifelse } forall
- /Encoding exch def
- currentdict
- end
- definefont pop
-} def
-/pdfMakeFont16 {
- exch findfont
- dup length dict begin
- { 1 index /FID ne { def } { pop pop } ifelse } forall
- /WMode exch def
- currentdict
- end
- definefont pop
-} def
-% graphics state operators
-/q { gsave pdfDictSize dict begin } def
-/Q {
- end grestore
- /pdfLastFill where {
- pop
- pdfLastFill {
- pdfFillOP setoverprint
- } {
- pdfStrokeOP setoverprint
- } ifelse
- } if
-} def
-/cm { concat } def
-/d { setdash } def
-/i { setflat } def
-/j { setlinejoin } def
-/J { setlinecap } def
-/M { setmiterlimit } def
-/w { setlinewidth } def
-% path segment operators
-/m { moveto } def
-/l { lineto } def
-/c { curveto } def
-/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
- neg 0 rlineto closepath } def
-/h { closepath } def
-% path painting operators
-/S { sCol stroke } def
-/Sf { fCol stroke } def
-/f { fCol fill } def
-/f* { fCol eofill } def
-% clipping operators
-/W { clip newpath } def
-/W* { eoclip newpath } def
-/Ws { strokepath clip newpath } def
-% text state operators
-/Tc { /pdfCharSpacing exch def } def
-/Tf { dup /pdfFontSize exch def
- dup pdfHorizScaling mul exch matrix scale
- pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
- exch findfont exch makefont setfont } def
-/Tr { /pdfTextRender exch def } def
-/Ts { /pdfTextRise exch def } def
-/Tw { /pdfWordSpacing exch def } def
-/Tz { /pdfHorizScaling exch def } def
-% text positioning operators
-/Td { pdfTextMat transform moveto } def
-/Tm { /pdfTextMat exch def } def
-% text string operators
-/cshow where {
- pop
- /cshow2 {
- dup {
- pop pop
- 1 string dup 0 3 index put 3 index exec
- } exch cshow
- pop pop
- } def
-}{
- /cshow2 {
- currentfont /FontType get 0 eq {
- 0 2 2 index length 1 sub {
- 2 copy get exch 1 add 2 index exch get
- 2 copy exch 256 mul add
- 2 string dup 0 6 5 roll put dup 1 5 4 roll put
- 3 index exec
- } for
- } {
- dup {
- 1 string dup 0 3 index put 3 index exec
- } forall
- } ifelse
- pop pop
- } def
-} ifelse
-/awcp {
- exch {
- false charpath
- 5 index 5 index rmoveto
- 6 index eq { 7 index 7 index rmoveto } if
- } exch cshow2
- 6 {pop} repeat
-} def
-/Tj {
- fCol
- 1 index stringwidth pdfTextMat idtransform pop
- sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse
- pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj16 {
- fCol
- 2 index stringwidth pdfTextMat idtransform pop
- sub exch div
- pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj16V {
- fCol
- 2 index stringwidth pdfTextMat idtransform exch pop
- sub exch div
- 0 pdfWordSpacing pdfTextMat dtransform 32
- 4 3 roll pdfCharSpacing add 0 exch
- pdfTextMat dtransform
- 6 5 roll Tj1
-} def
-/Tj1 {
- 0 pdfTextRise pdfTextMat dtransform rmoveto
- currentpoint 8 2 roll
- pdfTextRender 1 and 0 eq {
- 6 copy awidthshow
- } if
- pdfTextRender 3 and dup 1 eq exch 2 eq or {
- 7 index 7 index moveto
- 6 copy
- currentfont /FontType get 3 eq { fCol } { sCol } ifelse
- false awcp currentpoint stroke moveto
- } if
- pdfTextRender 4 and 0 ne {
- 8 6 roll moveto
- false awcp
- /pdfTextClipPath [ pdfTextClipPath aload pop
- {/moveto cvx}
- {/lineto cvx}
- {/curveto cvx}
- {/closepath cvx}
- pathforall ] def
- currentpoint newpath moveto
- } {
- 8 {pop} repeat
- } ifelse
- 0 pdfTextRise neg pdfTextMat dtransform rmoveto
-} def
-/TJm { pdfFontSize 0.001 mul mul neg 0
- pdfTextMat dtransform rmoveto } def
-/TJmV { pdfFontSize 0.001 mul mul neg 0 exch
- pdfTextMat dtransform rmoveto } def
-/Tclip { pdfTextClipPath cvx exec clip newpath
- /pdfTextClipPath [] def } def
-/Tclip* { pdfTextClipPath cvx exec eoclip newpath
- /pdfTextClipPath [] def } def
-% Level 2 image operators
-/pdfImBuf 100 string def
-/pdfIm {
- image
- { currentfile pdfImBuf readline
- not { pop exit } if
- (%-EOD-) eq { exit } if } loop
-} def
-/pdfImM {
- fCol imagemask
- { currentfile pdfImBuf readline
- not { pop exit } if
- (%-EOD-) eq { exit } if } loop
-} def
-/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
-/pdfImClip {
- gsave
- 0 2 4 index length 1 sub {
- dup 4 index exch 2 copy
- get 5 index div put
- 1 add 3 index exch 2 copy
- get 3 index div put
- } for
- pop pop rectclip
-} def
-/pdfImClipEnd { grestore } def
-% shading operators
-/colordelta {
- false 0 1 3 index length 1 sub {
- dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
- pop true
- } if
- } for
- exch pop exch pop
-} def
-/funcCol { func n array astore } def
-/funcSH {
- dup 0 eq {
- true
- } {
- dup 6 eq {
- false
- } {
- 4 index 4 index funcCol dup
- 6 index 4 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- 5 index 5 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- 6 index 8 index funcCol dup
- 3 1 roll colordelta 3 1 roll
- colordelta or or or
- } ifelse
- } ifelse
- {
- 1 add
- 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
- 6 index 6 index 4 index 4 index 4 index funcSH
- 2 index 6 index 6 index 4 index 4 index funcSH
- 6 index 2 index 4 index 6 index 4 index funcSH
- 5 3 roll 3 2 roll funcSH pop pop
- } {
- pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
- funcCol sc
- dup 4 index exch mat transform m
- 3 index 3 index mat transform l
- 1 index 3 index mat transform l
- mat transform l pop pop h f*
- } ifelse
-} def
-/axialCol {
- dup 0 lt {
- pop t0
- } {
- dup 1 gt {
- pop t1
- } {
- dt mul t0 add
- } ifelse
- } ifelse
- func n array astore
-} def
-/axialSH {
- dup 0 eq {
- true
- } {
- dup 8 eq {
- false
- } {
- 2 index axialCol 2 index axialCol colordelta
- } ifelse
- } ifelse
- {
- 1 add 3 1 roll 2 copy add 0.5 mul
- dup 4 3 roll exch 4 index axialSH
- exch 3 2 roll axialSH
- } {
- pop 2 copy add 0.5 mul
- axialCol sc
- exch dup dx mul x0 add exch dy mul y0 add
- 3 2 roll dup dx mul x0 add exch dy mul y0 add
- dx abs dy abs ge {
- 2 copy yMin sub dy mul dx div add yMin m
- yMax sub dy mul dx div add yMax l
- 2 copy yMax sub dy mul dx div add yMax l
- yMin sub dy mul dx div add yMin l
- h f*
- } {
- exch 2 copy xMin sub dx mul dy div add xMin exch m
- xMax sub dx mul dy div add xMax exch l
- exch 2 copy xMax sub dx mul dy div add xMax exch l
- xMin sub dx mul dy div add xMin exch l
- h f*
- } ifelse
- } ifelse
-} def
-/radialCol {
- dup t0 lt {
- pop t0
- } {
- dup t1 gt {
- pop t1
- } if
- } ifelse
- func n array astore
-} def
-/radialSH {
- dup 0 eq {
- true
- } {
- dup 8 eq {
- false
- } {
- 2 index dt mul t0 add radialCol
- 2 index dt mul t0 add radialCol colordelta
- } ifelse
- } ifelse
- {
- 1 add 3 1 roll 2 copy add 0.5 mul
- dup 4 3 roll exch 4 index radialSH
- exch 3 2 roll radialSH
- } {
- pop 2 copy add 0.5 mul dt mul t0 add
- radialCol sc
- encl {
- exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- 0 360 arc h
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- 360 0 arcn h f
- } {
- 2 copy
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a1 a2 arcn
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a2 a1 arcn h
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a1 a2 arc
- dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
- a2 a1 arc h f
- } ifelse
- } ifelse
-} def
-end
-%%EndResource
-%%EndProlog
-%%BeginSetup
-xpdf begin
-%%BeginResource: font XYFSSI+CMTI7
-%!PS-AdobeFont-1.1: CMTI7 1.0
-%%CreationDate: 1991 Aug 18 21:07:18
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /XYFSSI+CMTI7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 73 /I put
-dup 97 /a put
-dup 99 /c put
-dup 101 /e put
-dup 107 /k put
-dup 110 /n put
-dup 112 /p put
-dup 115 /s put
-readonly def
-/FontBBox{-27 -250 1268 750}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa0529731c99a784ccbe85b4993b2eebde
-3b12d472b7cf54651ef21185116a69ab1096ed4bad2f646635e019b6417cc77b
-532f85d811c70d1429a19a5307ef63eb5c5e02c89fc6c20f6d9d89e7d91fe470
-b72befda23f5df76be05af4ce93137a219ed8a04a9d7d6fdf37e6b7fcde0d90b
-986423e5960a5d9fbb4c956556e8df90cbfaec476fa36fd9a5c8175c9af513fe
-d919c2ddd26bdc0d99398b9f4d03d77639df1232a4d6233a9caf69b151dfd33f
-c0962cca6faccea6b71beef7c056fbd376f2f0d0bd6be0a0a8259139b28b99c6
-25119b8c60ff7ba002476930dfdc2f6b1b5a80f1c0e544a22e3f0fb2feab64b6
-a509b61e1ab96121fbf7f2bc27cde5b4961048fc2169c8db745fcc7af0eed507
-284038b15ce53e69aa22ca76c2a208f6ad8614cd500d479a5e0fd25e7bb14c7f
-c47c503e4cc38975cb0a8f7e109665fb69ebae6eb68b2d6fa3c967d5bde7830e
-9ce6f13dfaebc852df1d7d0cdd33dd4d5cd6d94dd8ae0d48ab638013cf75a25c
-04fdea8775ec52a13af40fa41f7354624d917ee620318c702237af8c0e1ffa02
-127f862d4dfd0a56774235a881afbb8f7f4bcb33811c581cff38462f669b7f97
-1f97ac09373b8f9b7e653013af8170613e8d7e17235a893be296a0cd2096b71f
-16778388993edf1b003ebce23dd02949cbfaaab5d9f6a08178bfb8ed1043fc1b
-0b90d9afc27b19783740e8dde0e5e01d116a8cb083c721fbb8ebf71018a9570e
-78590cd831116bc0fda4229f79a581874fc3a1f108a4fca80ce27fa54a2a7505
-5bdb3d52e2595512837732322fb5bbe459c0205eb38439e34a39544f0a1567c6
-f29fbb7cf931708c8f92786ccbcbb443d54462b3b4b7bd38e90d325ebc31ba05
-faab393c7ebdb9ec48e4acc15a247d2348a62293a726fca4250b4a407f64270f
-923eb516cb8a3b5d19876c8755eb291357e4e4cc5903d1a536a635e267f7a971
-b1c33aa7f58e1ada931c450ea8367b18e20e683cceec1bc079e837ddafff0d16
-23c4aed0dc04dd9458a630fd498794823ffa55705315f0687e7592a5dfc8b8d6
-fe2f3c6f534f499545704b75da313653bcd0673d7d0b265cbc3baf7034153d4f
-8e157e5732b8a7d8caaa7d8d05d5bf8f14a443597bbba8d2501ef110cb47acb6
-8961fe3bb685aca9b8b35f0cf7a79e7f326427219c8b8a9b80835bdc78a9aff3
-3e9216d1c92e91b4db244ce02a5c9150273d4e3263e7ce0909f2960106f57c3c
-d698212d1e6a29fac15c4ec935d850a119824b79e0fd71aa0a2115064b3da5e5
-8144630ebff91ab0143aef4b663cffc40006fab80a411cc12ddcff2d2ca8be2f
-fc517e3b6748440f56ddf6431702927b0aef906926c5283a80a73e954d495fd1
-d9e4167825a273a8ae0f87d7e102a9fb40dd4bafd6122c6a83d133a9ed7d9a0a
-b45003c94b789bd98b389ea26b7dee99c1e215568e48e577a43ab04052a7f473
-f6b29e05bdb1bfaa6a959cb642245c550cbf84e05b1e4c2f5e7f84ee724b02d0
-cde74b36d98c14b70c48ac51cbec3c595c59692dc5912295337f3313af2ac3ff
-ca3af12d72e48d689572a1a6acb1b2a627da81c28207760abd636444edd87fae
-23dffda052ab54f48690d5a7615d9cd4b6d4010abf3f20ce2603f386e1843911
-733a2cdc76ffa60f0120df68fccc40faf197ce13c5bf34b33d220e5af443b60b
-c2a55c1faee218a97683d32cf6b6a758f82200bbb9419c376f72d9b131376095
-94065de7dc66b571f62ed2ec5bc2df5e25222fecec15880eb0ce939a3c1648b0
-7f323286ca79f0364d0747939a1a89d3eaccafb732c7e2415374034caa1b8d6d
-361f03c941ad5bbbb5831ad371fbfab81fd106714aeb6509ff8d0a8ad5002691
-3869faedfe9c3581e6bd5ed17f4fed5b847354d752ae435cec8443dbb48df400
-425a7902aaaaade7c10f275f18dc2103297049f7a337fb0b75b24ebf007e1f9a
-b7a847cb4791ed9bbd376c8a6bb2137185a5f13bfb4b3ca845898811aaf0dc58
-2e5eb07b1a20354264ee70f7a7a8f26d8e1ee1da9cd5d15719716d45ae696cc3
-da6bb5f492e66345c2708c1112cabd7d073658296e13abef28df9a682b877c9e
-f42c3c0329b041b7c44e84bbf0932dd40e6e4015b6ae58571b0fb87d970376a2
-a0ff6953d106314ec0aaef3ee6f985f619f8c0520451ed54ecf38ab6e6ba4176
-b0f38261165e3c81ed3f107778024970f4edc4ea89ec88ab92d388c35ea7128d
-e0075558146c76fd2e380f2f8e04742dd1e6aef770be18ba87f8ed83170ed6d1
-7a56f6b21ae7be6d20e40443196d165f7d50b59b0ef0cfeb161b7540ba6a47fa
-1059c0138beea849df7224e57f74f5c3af34fe57dbeb91efded832ae5451b831
-388563febd9b1f5f31042c0c4a60f562bdcb6b1043bad1b3f21c9eb33b3d1505
-28efd3d74e912fee04513fcd24cf8e9d19dd5d5a69aeb46c3e3051aa38c06fb1
-bfa941c25083771a7769613d4d90da7d1f76409163ce0311a30a735c8becc8cb
-239241e2887f764729410248a2ca0791cb44e97fbae93f04fa36ebb62833c699
-52f248d0037eafecd3dd9b2884ce78a7101837e5573aa89d40d4d031134a4de5
-e23ea1878e4ad8ee84892523dbbb76b8a2308dfc89f5115f14825d96d8b7f7f9
-8697ee25a09e682c5b56612a37b5da8760ffedb9451cc2a1dcf7f1b51c4e97f6
-ef198969173712e26033ae1c4d41b46432baa2372d4add2e0498478877d180b2
-5e7f870e71e250e24aea49a2721cb5b453e3afd46d7b6ba99a385031212bdd92
-b653a000059557b795daf4d900ec98c7ebb00a123cc120ff0dece28c18a105a3
-c6d310c2bf4364f202d2104098f93d1a0914021b0c213b5a2b3885e0d931f58d
-224a601f16dee9a2df3adb67fbbea6aa999cb131b1f47426b074cc0be23e25cf
-eb92877266e3ac20bc453aeeae31502cbc8e6480d59aa2b1b4b0aebc23dc8023
-c02f6ed2318fcbee64300dfee0072cfe57b35a491238516735bacaff8be3249b
-f97d070731cd80407d1f4c3ae077935417bab3f431a5ae8fc9cca3a2c82b086a
-82def5e5d4064914d3653ed1a1550ef1d65d8d7ae9213cf08d1468c197d568e8
-82af3ddc226563e8db072a36e989ca8e38690247abcab4c7765c37a74f18505b
-3253a684571b8dc984cd45e8a5f96ea68bb1865dbc1e514a01da4458df0e945b
-3a18c3bded02c644a3cdbdc996c86780e8446d3e0b2a89a377f2cb0e003df225
-66eb734cffaae3e0d90df0dfc3245efcd52e372b1c6af303d27bd0e1a824e8af
-2f55e05d63001637d035caa7d31cd07fbda6f0d3d40868ddde21df1b4d1453df
-aa49171b6e81598c53efa49f2a63a3a7ce5dcd8667014bbc30d0fa9782192c06
-7827cf55881d72daef6db5bcc87a39457574eefe614f876ea8135fb4700188d5
-8f3d9270081f158283f627cd3d94adf1c41f7a606d6ef516de755858f9909fb2
-14b705472017cb2914f0efda
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F5_0 /XYFSSI+CMTI7 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/I/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/a/.notdef/c/.notdef/e/.notdef/.notdef
- /.notdef/.notdef/.notdef/k/.notdef/.notdef/n/.notdef
- /p/.notdef/.notdef/s/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%BeginResource: font QRFNIX+CMR5
-%!PS-AdobeFont-1.1: CMR5 1.00B
-%%CreationDate: 1992 Feb 19 19:55:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /QRFNIX+CMR5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 70 /F put
-dup 84 /T put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 100 /d put
-dup 101 /e put
-dup 61 /equal put
-dup 53 /five put
-dup 52 /four put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 57 /nine put
-dup 111 /o put
-dup 49 /one put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 50 /two put
-dup 117 /u put
-dup 48 /zero put
-readonly def
-/FontBBox{-341 -250 1304 965}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa052a014267b7904eb3c0d3bd0b83d891
-016ca6ca4b712adeb258faab9a130ee605e61f77fc1b738abc7c51cd46ef8171
-9098d5fee67660e69a7ab91b58f29a4d79e57022f783eb0fbbb6d4f4ec35014f
-d2decba99459a4c59df0c6eba150284454e707dc2100c15b76b4c19b84363758
-469a6c558785b226332152109871a9883487dd7710949204ddcf837e6a8708b8
-2bdbf16fbc7512faa308a093fe5cf7158f1163bc1f3352e22a1452e73feca8a4
-87100fb1ffc4c8af409b2067537220e605da0852ca49839e1386af9d7a1a455f
-d1f017ce45884d76ef2cb9bc5821fd25365ddea1f9b0ff4cff25b8e64d0747a3
-7cad14e0dba3e3ca95f10f24b7d5d75451845f1fb7221d7794a860756cfbb3e7
-704a52a22448c34812c3dbedd41892577aaba7d555e9298c1a0f7da638078167
-f56e29672683c51cf1c003764a8e7ad9d8ade77b4983f56fe2d12723aad8bf36
-682cfbb71b1d12210144d39dd841a971f71db82ac6cd815987cdcf29abc3cc96
-5eebd5d661f452c6e0c74f9ed8d0c5b3755551a172e0fe31ea02344176e32666
-14b6853a1c303a5e818c2e455a6cf8fc9a66dc6e279101d61c523bd9db8eb82f
-eaf4d7fdf6372383c0794c4568d079648689a199d4b65ba646cf95b7647e4bec
-83856c27a8ef177b3a686eda6354fe9573e123c12ec4ba56a7e8bfb8f9b75147
-9dd79a743968f36f7d0d479fa610f0816e6267e5ce327686a5485ab72201525c
-fb3b7ca10e1bf26e44c24e1696cb089cb0055bd692c89b237cf269f77a31dc81
-0f4b75c8400abcfdcec6443cd0e81871cd71aa3064abde882c4c52322c27fa8b
-41c689f827fb0f8aaf8022cf3c1f41c0b45601190c1328831857cbf9b1e7d1aa
-246117e56d6b7938488055f4e63e2a1c8d57c17d213729c68349fec2c3466f41
-171e00413d39df1f67bc15912f30775afdf7fb3312587e20a68cf77ad3906040
-842d63c45e19278622dd228c18abdd024dd9613cdc0b109095db0adc3a3c0cb5
-ab597d490189ea81239e39202cbc7a829eb9b313a8f962f7879d374adf529bd0
-5533ef977142f647ad2f5975ba7e340419116099b19acccc37c55124d25c8b43
-2de7c5683ad4c789e9cda4d508ca9b16f2552ed86ac06f051212bf0267244829
-84de3739fdcd764159289b0cc586d66fea7751aab1dd7909a42c67bb916cd288
-1202148cd0319ca10ec2a0ea5a222a3d9cb6308410e5591f7fa1d1585c1a1aa9
-8f343bfff143cddb91f41f02db52b67579bae62cccdf77c01595edb7c922bc2e
-8642bee95c6f8a0b7175b6f1442f18e4d6e889c534159e942421183f4ce14ff8
-b1cb84a0205dc43616093d3ed4535096e33923a3a468bda64515ba9a04e91dc9
-5327216df2cb00239952119aa384cdf13e062076f31222c8a61f1c99927738ca
-e9e78f91d8a4c4fdd27f1e3ba8b3f2b9e0226b0570bbd844deac73859514dc85
-2cd6e701600cf1ad6f463b875fc4980879e16cbb58438d5efbfc0dde453c5533
-dbb86504f1ca80d8820a563b5863b82953abeafb5e154b109737510afce23094
-6cf310f7c157356cae3d1a89c3f29d9c066329ed9c21198bc33b9186779cad33
-ea82e9e9e8c6b30b2adfb8ba95a36aa0c66b5f2e4a4dc8a5602371df8be295e9
-d225ebb317f1c0044fcc82eedfe7525969e1a33e32ba0c78d7bcda6f3414052c
-56443fe4fcaa7f02d48b59a471a1c093fbcc45afbf572df6f6b9cacff888a8a6
-4c325b2b942d516ec032834165faf117ba72b01a902f00315ea3c09dfbd45c49
-e6f6feac4472280a2fbff531617932ad7b2b183bbc59490ce69456874b9158f7
-0d652a73c9533e1109481e21fef07ce4d43fc07dfa3f6c7ea058a9061da35859
-d0dc3db6ffa64a896eb7be5e87bfa8cf5ddea43aa890bd15ef19cfb7fe4cb244
-d07b115e4a64a09cfc8022b6d212f920cb0ce5581dec47bb14b81f81ea984efc
-a20d9af50e1ca1dceec50921a939180062481ddce266a1a418a834c322bdcc25
-4301e5f9bbbc8095b39cf7e5137697a6950a4a7896079f092e0102cb2d07fd33
-884afb693659047fd8fb01208f0fbb1cea985bd1f4260257e08e08be5114314b
-c26662d63ef6209277dea2bb654db883be61a680e7fb472a8c698dd1accfddf4
-21e365e8f6da21f203a62ab2c4b43a4380a31e1ced21d0cf5f4ecf153371e0b2
-6becbca5884eb396e133613fb6c4cfd4e3fb13346bd4967180dbce9c9978f4ad
-2529d21889367ed56bdf2c36db68304203dd1c57f5a6fd1f83f3d24d804d6ac7
-2745eb909eef9619fbb27bb19c8cc0596eaf5a3ad1303c5e26144c063e89db27
-4509bb03bc85f0cf4d4b4778629b97cfb7012d047d1acb6a5d6763d41979aae2
-7e3c585cb512be758108529a91ae5edf1967cddb1f95d0641a53c30f297a01f4
-999c2f8bdda6eca8fa06d9eaf6a45ce3df5778d4f0c46e00f68494466a2b494a
-8785968659259c897babe03aa39fefb2668c21033aa260069aec27eba786bbbd
-3e78ac967719736722b5cbf5a101299c325f65b8dfd6a77b1d4c8f5408361e04
-232a89774e6c981f27e7c8da7bf819ca6b0a9b9370c9c831c9f1ec8bc9917c83
-35a383d822d9dc41614bd59376aebecce2a4be03a08bd93096c1f383972a1e37
-f86fafc6b39c9d5d9282b4df315ac2446ab1027802cf1d157191b19d1e3c5052
-ad5e0296acaebd9e7044f523ff92a71a436676466040eaa7352ffa5fbdce8d28
-13d9af3f88940535098f0e0644f6ef8e6fe5d8846126a9082dee75e504cbea32
-ef08cea73ccae9dc3ab6268784228fbb3f5937dea2c7628d527f0ba641fdcd9d
-8561093a61c7c8f6bd604ecdd62cfd611be8cbd37edd1c9cd258548c21c2ec35
-142b3b9e723577d6def57be5917b2beabc016eb129cd5ef62c378fbfe5562138
-f3569921279a44ae991a98ee1b4275a976b2e84f341d256effae7496ca1159f4
-812c51e8a19b0756c1071ff7b5949852a7086e75b064f518c6e1660b2b44fe16
-09525127162d679b603f28e6904475609daeecbdd4df5196089a206d0f9985f2
-623a5913aa116470bbbd1686cd7f2b7e719fc9b0652d76ba4a76bbdce34ceffb
-b15b52431d6538b629d77c7e844e584d70588c29f1c1d63e467a80d5e26b8a8e
-a5863fc25e927a2a3323e17598aa1264bfa54cb4e853fb2d97e4bf90e66a991f
-327240b6b7841a2c23041e017fa4b42e2503f67523a0c19da45da01129c9a5e1
-f512a59ff33c0aab13fc4c02a65ef11e28e919926a2a6b962194edd028788832
-64998b3f00d44c15c59cb47585b9ca668e681f25a4301e80bedaa985e815018e
-e05d5e175d9cb9628fbd458092dd5fe11d5e2e753de9a755dd55d1f13801876f
-409f603a60a83c795608ba34cc0fbafe8fa07c9de4e7b78b7a7b692a3abcf62a
-c83e75b8bdadddd9385ad65b4eab95f6800f111c7bc6b8bd68f50375ef9df202
-4e6bfedfcd9c473dfccfb8b72528c4dfa3eac7cfc782ec7309cd148e4b7c1924
-f5b443783a0245842efeaf6bfa53a5ce269985396d6bacdfe62a4dc5e7a7f34c
-9257d6d8669eb88258b99f4ea2b494d4b2dd7e88e81d270cdbc03c36823d6b7c
-8ed16883092c9163869f25f7847c9e2d495ac21f11f5406fe570f589e7cdd13e
-82adfb3a061875bc3e2b846c1a78333c6830670810bd7c23d5e3d5b4e2a74207
-5cdadb6e332e615073eaba1523e4c7f399307b43cc9be6460955607e3e4184d7
-3f75328b88edac3a6d663bfdf367f951b32c120ee221fb52a2112e2ef0bc64a1
-67e6ce17ae4272b9839e052c646b70ff65e7d6e8bc7ca4bac2121de47de227db
-8380adb5a65d9bfd890acfaab6c7cc26f417e23472e05a74364e229325bca32a
-095b398e5e731e5ab8e92b948b3a368a6cc491ae173a6a1c2484f0943e581858
-25429e9d93ad7e70906c3dc223a7a274266e5d790e06774a8dbc1a8acba4c432
-081658dc71c55ab633ed8c369e64a4183b3414ce2364b30214a93c80f51400ad
-e0333d3d0648031134ce44aaef21ef73cef77810a491c05ba8509122a4ef9941
-82ba9991283ca78de50760d7addf9664485c0657a08fe1421b44c2d9bb9ddf0f
-7955a3aa8d474f93ce5628e9f3ec88db68d4856709bb36a41a742980279bd70b
-fd1f0e6dd3f5892c4267513e8229f6aed69b2ff17d134a548330d922c8f5aad4
-1b8d906800bc0d1e0e6acc313f9f4ed86cf0057b2e44d9e971b156b845b40174
-47852de3c9981482c835e9e692329e026a5073ae74d4c59840bd0b40f9bf3e31
-0ea6f53e47965af08c77027dbb1685f0b72471a7a480b893671d8be0637d2107
-66de6e746bbc563e69ea2cfecc0ef0c91c5199e3a2a46168a11565c2752e2778
-353e51e6dc377b924e041a1fc9ff4ffce25ca896a1963168b227ec3baca4c83f
-5385f52e4a6996c90c83a33dcf2ab7400d7f96b4d0c35a546ea183a9b87cc236
-8935398088199a585885911dc6bc8d5c8b6a135da1a5b5c7ac4742deb253c100
-cf40f0f2f603b36c53d4734cb966181ff9bbe61c7ffd8e579f4f9d96b78b2b48
-f077b6dcf987ba03fac13c029062d446ef07aa27aaed38b4cadad944ab755abd
-4a5836f94d3fb09bbd54ac64263f3203b6b301b747fc34715997150532425b4d
-c5480c50016114c2f36ce167fce159b8732ca3e0f8d6a1185a793f2c4cf3f7a1
-cbac44e981dc02048aeabddeb8bb2387ba608b90c6ce8efb67d17eaadc7474af
-446a97d1dcf002364b7232f40992f21b3db8949fea626b8deb57a6298818d4a5
-06e8d1d3753a730e674de5aa639496b85422ba1071533009065fff02bd51ea3a
-42687fd464d7004d0a79fde9c4c9e9a861c0557cf1d007b002e46c8dab226ab1
-96e46e193d354a76e7488402aa833435bb7a91388a3a812349fb14ffb002349e
-ce53af989e4c32025c6296fcc3ef3e4b5cf5304a8701499011053b35bc7d049c
-0bba2e4dfc4f4aea3d11192d526df6a3c3dcf27d66d24e865dfa4c2d49133809
-21c3c5a6c15d263b4dae7b367d4e655870b9887bef55a2d9d66326305f44b2f8
-57738499bd1f55c91b38f0fce0239b2343451dc084e8fbb56ac1578449652756
-ccac510001de0ccf7ca41e57ad078976b7b95f4d4d488c6a88e6cedf2a35ee24
-9042b18069920513845c86d94f286866a89d8beae3c9569fa62b812c4b5a4a3f
-ec457d5b71806ac9d5a3e689046baa7e81fcd74372447ba4867ffc86b982af1d
-9f843253b04b54165f42464d2d5c47ebfcee9a42cecd3f101db285262fae9731
-37c046c0cdbd546a875aa6a9743ec5faccc41562613180f2e95e0936c0caa2f6
-8c70ec97036c718617d92be2974c6d177a01939039c5e6c9eaed0d86ef223e91
-3ce48391bd33ab03d0375c8b497617165b7a99fc03e1d4df08fa2a960b8a7891
-5f0d99b5de833411e3b69810beb86c6bb5faad366eebe9921d68a512a3be5899
-994ce902e9c6523035ab1a709b7c6e81fb7674b993ed3c874958d41d53b5bc50
-158a319764078a6e05328e509ed56b2e402a51762b7d8560a70283fcddd7a4e4
-d36f379164029e6b6e0b93942fe7a323ffb7704f568d2b780dec775c73fa5595
-e60372bebb0f3ace7aec82a53f9f9fd8233c874e02e82c18dfcdf6e182cfe9dc
-c88cd49c9cf7b60294666fc97b5bdfb37590e077424bfb0f3a01e90d697c83e0
-7ade85364db8a50bbb5c9e58b61cbc2d3c07457ef2c3a991cdead367b578ba2e
-e3d6e2229c72f0d6ec033fd4c0f9cd6b2e27f673cfc2eaeb9fdc70e0dbdb0c8d
-25955330b6371f8f7c98455eaea615cdf341869e3ac90999eaa6000224506702
-7497ba7a8778aab912eacd184c0b1261c0cc18d86429afbe1f28377569b6e08d
-1ab20c1b3fa3988027d19d48b7154892cd9c42a3989803b4935eb4c37ce93f05
-48a792cf502ab0b3399b78fbfec425b16ad49f30a361df03b341079fb17e9d7b
-8649571fa9f7b8f5c0590514e97b7059e30d5edc48b324a9660bbafc0d811c7b
-0435ed1d034f50f1a96f1d0e130beb5beb3c1d2428f7713571b5cd78be570aab
-82bfa57371d836dfaf023d6bb7d1e4eeb0375606f5048bae6ec78077c4abb566
-d3dabe4947da86cd9ed93b738b0dfec36de56ae15d226a535d801c91d01f4b8e
-e9b9e5e4d6937b183134cfe3ae38bd6e392cf210e9ddf88c38e39a880efded5e
-9c4702bca2dcf785af0bff75cbedf7717e13c9d5ccc5553ca4d16a0563537409
-577d4d64db40d7da1f16026974fda3e16c5d5c49cf957d392d38dac4a1727dd6
-dae9a4df8822180d609000bf68606fa4760b14aa9eea5cc81fd2dc909c69348c
-a20c546da3f1c70768c395fc1a3068c985605ef265e132658c06205aadeb1fba
-13f816b226488cc435c5e19f30bbf2617bf86ed784b2b7e39ad0ae8400f5dffa
-1f264ed85824de721d2678b3b4175378cbffcfdfd511642cc7e4680d85c128e9
-4b505d7dd11c240119573305b90ef3e9cadfc751d25dc7b32986afb243c676ac
-17194295c564253cf885222396dab284d724f14097d343c9cc7b4b563fd0d9bb
-d0da6d5eba2e3d9bc1723611b5336386a1599d6c898b79556ec264f72818e999
-ee3a6dac9f7aede093609c683d8af0b64341f4f5fe40afe64b548f3c7393b460
-601bd7a645fb0dbd437221c05bea5a22faf36effa07e02b5796a37de06be84b6
-65ffaadf9100fb120d32ab58bd11d6d921d94b544ac6b23cc8e0041b2612e797
-459b0c2893be0f1d4b314ad41bd4c869263887dddb0c0024144e6917484a0abe
-da7e9a011a9e600d4c4213173c169035a50edd4d378da41fca8dd1d1345a0de4
-3e5e530db0c92402b2c8c685eb85b18e66d21df5b30c1b86a794ec151f0551c1
-ba7d026e774ce77f3e24ac1e3b9f6efc12b2f89e7ebd90520362241d89c7c977
-ea4a4c134b17552e0f8a0cd059b4928185e0e8c4c9b9c52029ae0f97d3d43d55
-f6bc7b5f05aedd574b05dce3bb7524d664fda854ba93719fb006feeb7f181486
-2d14eab6c749050a5e3af7fdd40f2c84f2df0ffe7872dfb3e8026cbedb0156f2
-550ec45a933acb54768ae8e54b9d7ec53bc131cd1e82612d7f5a4fbcd392083d
-71ba0458c66937279da6ed39bd01d4195517a3975bb911dcfa1a549007e4c9f9
-89a08d42b6be1e1aab8efcaca21788eab44abeb9ad1b5cdda5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F6_0 /QRFNIX+CMR5 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /zero/one/two/.notdef/four/five/.notdef/.notdef
- /.notdef/nine/.notdef/.notdef/.notdef/equal/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/F/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/T/.notdef/.notdef/.notdef
- /.notdef/.notdef/Z/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/a/b/.notdef/d/e/.notdef/g
- /h/i/.notdef/k/l/m/n/o
- /p/.notdef/r/s/t/u/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%BeginResource: font KCZGMI+CMMI5
-%!PS-AdobeFont-1.1: CMMI5 1.100
-%%CreationDate: 1996 Aug 02 08:21:10
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /KCZGMI+CMMI5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 107 /k put
-dup 110 /n put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{37 -250 1349 750}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa06da87fc7163a5a2a756a598fab07633
-89de8bb201d5db4627484a80a431b6afdbbbf23d4157d4afe17e6b1c853dd417
-25f84cd55402ab88ab7eefdedbf2c2c731bd25567c53b474ccf739188a930039
-098a197f9c4be7594d79442b2c8a67447de44698321145d7689b91ef235ea80e
-b600aa8e238064f154284096c4c2554efe8ddf13aff8d3ce30e0999375c0fee6
-f992dea5fc3897e2cc8b7a90238e61e41622de80f438dd994c73275cc52249d9
-f6686f87f394fb7bb668138b210bec9e46415a1b58c990b81e7d7dd301143517
-4c2a259d2a0a1e200f8101469c10d7d537b0d4d39296a9ab3f132da9a3b459b0
-f850e2b3a03bdcb35aef82285d19c38f474fb414f8ec971b994d1c7dd753b271
-2b71549df497c665df0f266988209d9eb616e4d9ba229ff984e7a886db01fd21
-48ed2e4859fd6416c2ce52537464ea884c8c9c2d1083e2b83be4b766474c23b6
-6e8ec5003200ab10514bb44d14ca700416ab6b2683e80862e7d5b49a05526a32
-554bb23ab8b0824bba198e3825ce82380cc0fecf46651e3e5d77f09465e73164
-20342822f29572bc7f73f2c3bf95ed3bb6fdeadc20c6ac866c4f2c679594d7e8
-8d944704a3c5d771dc39503becab89f34d8cdb8fdb91afe21f3f0260d05e90c5
-73e2c13dfa022c4522e5918ee25038a0498fbb530da33b0ae238b1c6ed03fc04
-2bfed8236e07820c5bab411eae1b31d93a2fa7c374b1725fec359abcb88e2c89
-214529a263d795aacb0b95a3ab2f4e08ef350c282ce521716dbb06e5b8291b3f
-5d4aca230fa192f64bc902a4c8842c0f916f92fbd002add408bf0401d0284fbb
-f05d4c6db631420747cc902c5e1617e6573612fb26c8378df41ffb5048d3cf06
-4893dba48ef4b043d760f60c75712169d16c83ee020c45369e443e853e1809dd
-f395b812067d6fdbd26111b34f42c21036af952d0d767fd17f6959d9fdd46005
-d64fff54772b50bb9b173ae79702981f58f9f235c591f476a31852174df0619c
-a470359153dc32610e782b204e7945515464dace9099b81eeecc7ebd4b5126af
-c3fd9ddfb329af1c95c41fa4a5f6958869509a23bd7210386329771fa46ff926
-0e54ac35106253ee140449425a8670e1f92b178a02a58eb57540f4bd8110e548
-bb584ea6d625c5f5fe0124a98e49915f1a1b95d2125874360eed1c4379fef3c6
-90e5780c20309f11f2f23fad635c44ba030b39eff083a3eccdd2641dc82d3b44
-b3ab94eca6ceaeff2f4dbb525a310c86946b11105b41f9493cd689b1e11922b7
-219e1f7ba65e2e2ccc6015fd19d921ce9dc268f03d897868790e231255c90036
-86f55e6f1b4877adb855eb6210050bcbb279b58ef95ffdf0e5a5a3eacb53240b
-dc7954bea3f762feda04b8d0921502bb112129f7538eeb89f2700842f0d290ae
-27e0dd3a8ce35dde516d4a28f78a0308650ffd050d64893c20cca605af49ef60
-07f9a5cbb02fc52ac7f53e825a9faa83281d393fbcfc1889c9809f8b3edf40b6
-e2f95c684b42c206318455d6b07daa05aa9d9307754221c7b8c1d79f6ce91a98
-6b05c7b2a6dbbad0d02fe68d35a484ec3b7a2bcb3310354aa8e5c78200fcd408
-856ea93a1a62a7e039937f753e068ad70842fdb71716c00634e88b3c0dfe1962
-7d9c51333edb72cea21c8a02ab0a405693a6c6b0f8b7eab4ba25d153bfa29e82
-bc55d484b5c7ebb0cad4d037adec25d7df65b06cf8d80a6a164e8874e01c47b9
-5e9e7656790d8d5fea7121a216aa76ff81bf1bed4c7f0819795475b8fbbe254d
-060fe03aa8f76874d6691f47bce43ce4413c80bf30cbdae5932ee97c98bbe397
-987268a8ba1f0853dfbfeb9cd1bd98123d0577e478e35bb92ad65ef02a913581
-9061558f9ba4085efaab90fa797612a4c14fa119b9bc095bbb5c3174de026066
-2e9840008e8c468c200cb650c90ecc9e1e06dfdc66a8734301f10ef0c08ed94f
-c2b5a85981b10a41b99cf844a812240e1fc3cdd57dc70f8f19371bafbd556fe0
-76f4dee202085f4da73192f5288cd95fbda78515ee60d97f117791691bacfa94
-897efca3987c68cbd4522a30323b386e7c02165737e5ecf901e4a8d2486b90d9
-23b65cb41ed420dce5c54d7be60c3c35a3c6605ee19cb2b55c6d80fced88ae68
-e31f4371d6a20bbcc0109387ef8bfef9ed384cbb5cf4a463f8ad79d8d11218c1
-bef0a6909c1e572017eadaab30387de66b90f7fd89ad2179ce4b7ca2dcf59b01
-2d3d53de2bdd4d73633b71db0b529167b31d3de40330094ab2baa53febfb9f0e
-c37d2cd0a824a1c29b612485e9b12ccf2e06f9794ed0ed08030f6b3907fe1916
-521c015b7814a88c88535653667551ad028df3331575d2ef4cce98d96af85d20
-bf1550ed932c6445a5aa2e1fadc6c90cb7a875c84e8d8ba06a21fdfc6d08ac26
-2a04a8342fbeadf0ecb6f20ffd6242004357d97dadc7758a9289b63ad83ffff6
-3e30ca707a3a4173d74a40cc65ecb7db5bcd0e46187b0a1ee03494b92c5354b2
-36c46b713712247b503f744c2c1a76ebfd060587a74c3d6569345ae4a707fc5e
-8caa10ccd1711c6c60a909ef393d840149f83ab66bab9f738f4cd2996fc2eab7
-d60468fe3ed8beb50ca3c6a045f174567217a772b18ff39cd3da7f92e6f5c5b9
-b483601e2a7ec42e4c859162e3f55e7d6b4e894f5dc905dec6bdd3a2452eb786
-226610d7ac2d8747cc479f143cb61b511a4e791ed7c45b3058b919ab5985d6bc
-bfd3219ad2c1a8eb32ce27742375514f718a246858e3ca13ca0488dc81c11939
-88ed4880bbe669eea349e48aead5e53f458ac0b35629745b11c581e0134d13d5
-8838bffc332c04c30fe39e88c4131a73a05295ecbd11b99fc9744a6fc78671ce
-b26638aeb0ca40633d0e3294fc48911889b48287b6f37344aee41067d61164a2
-1a21c80a963d4c316c4ee0680fc4c7ab862e6d6d9b5db0b7fd28b9cef3a9d43f
-47aa94805fcfd188c08d6e04a6872d6713224961d1a387bb909a3ef7181b455c
-be4fc2359c0d06f54977a78c376fc1f195827080bb59b61271229973b1c22b1f
-8582c765e2346cea929124a8fcafc128a3895b8f48900362a5e1dd164f12d454
-894fa78ca4aa5a21c60696ca2a0ced7f4b98fb43269c0445521cf4fc73bd2464
-9a4dc573c98e5ab0370a0c67057bca09
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F7_0 /KCZGMI+CMMI5 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/k/.notdef/.notdef/n/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /x/y/z/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%BeginResource: font ZITESQ+CMSY5
-%!PS-AdobeFont-1.1: CMSY5 1.0
-%%CreationDate: 1991 Aug 15 07:21:16
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /ZITESQ+CMSY5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /arrowright put
-dup 49 /infinity put
-readonly def
-/FontBBox{21 -944 1448 791}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa052f09f9c8ade9d907c058b87e9b6964
-7d53359e51216774a4eaa1e2b58ec3176bd1184a633b951372b4198d4e8c5ef4
-a213acb58aa0a658908035bf2ed8531779838a960dfe2b27ea49c37156989c85
-e21b3abf72e39a89232cd9f4237fc80c9e64e8425aa3bef7ded60b122a52922a
-221a37d9a807dd01161779dde7d5fc1b2109839e5b52dfbaf552b11effb6a16c
-f03fb920c15ae724efdf0ccbf00a838d34440ff9fed532f44036ad22561184c5
-283722ddfa7285e62754372d716d704ac0e00b2f6ab67154241c7449aa047833
-94cedb08e8c92907fe72a0b05ae36a7b9226acd6e7890a0b528fdde84a950fc6
-801de75cf2e739e9121149ccb8b1c87a106822648d84a3d3fbf295ee6c4bf403
-bbe9a1c1f6daedd1e642acc486e609703d7612bffd10c324f5dc710811f7f614
-3691b400e3773987424c0d2b0d8a736873c6371ddb2442f05e018a2b5ca9a4aa
-17aabb95d09e5890cfffed5ac01495d89a53d3c9ad5a9c23d5050e53ad0edbcb
-74cfd3e229777bb8781fe5ed007f9871d38795a64f1c3fc995bcadbdc26105df
-c3791eabd25d9b3dacaa96fbbeb11397e2e1f8ef6b27f15b2e998ed79189f382
-9810144fbbca77ee3f8c02aaedabbc5d1f0b5fb00e06458289545e6c4520aaf0
-a79ac842d6f93252acf4cd7bcf5ba0816321e2ae79ab933383d3c86b180ff1e0
-36209671dbef6acca494b10524f9a7fadb18563987df48c4656da73fcc6f7675
-e773317fca8f725ddbf9dfaf5151ce9a18e02b7fe6ec205ca7eeac7078720fe9
-a77988c3df66720a6c9335e19482f0a845ae35e75f11562fc7bf36d79b339223
-58b261f64e078d8022dcead31ac7ab1f2d032144c00e5cdb6dcc1d75881d3df1
-eb739a6a1b255636b08ae11593eb14ae9f6b94372457571651b6359ee83dafd8
-1fdd27eca478494d2ae4c767d1fa866c562a3c20fe2126adb506355b0765f7a3
-4605c0653837eb7bd73611e4cdb80ba5dfe199fe0f764516f316ec16bf9ad53b
-b98f3ada1e31ef3a36079493f943eebb9ce5534a8cf84d7e924c9e2b892ada07
-278daa3976f47c6c00b46bd73b5e423d69527ca16883c654993579e117c7ebea
-e9a840968c20594bb3f48bec62ba54176f8e7931ff99ec57b09a037b88d3e6
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F8_0 /ZITESQ+CMSY5 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/arrowright/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/infinity/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%BeginResource: font LBWBDW+CMEX10
-%!PS-AdobeFont-1.1: CMEX10 1.00
-%%CreationDate: 1992 Jul 23 21:22:48
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMEX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /LBWBDW+CMEX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 80 /summationtext put
-readonly def
-/FontBBox{-24 -2960 1454 772}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa052a014267b7904eb3c0d3bd0b83d891
-016ca6ca4b712adeb258faab9a130ee605e61f77fc1b738abc7c51cd46ef8171
-9098d5fee67660e69a7ab91b58f29a4d79e57022f783eb0fbbb6d4f4ec35014f
-d2decba99459a4c59df0c6eba150284454e707dc2100c15b76b4c19b84363758
-469a6c558785b226332152109871a9883487dd7710949204ddcf837e6a8708b8
-2bdbf16fbc7512faa308a093fe5cf5b8cac6a7beb5d02276e511ffaf2ae11910
-de076f24311d94d07cacc323f360887f1ea11bdda7927ff3325986fdb0abdfc8
-8e4b40e7988921d551ec0867ebca44c05657f0dc913e7b3004a5f3e1337b6987
-febc45f989c8dc6dc0ad577e903f05d0d54208a0ae7f28c734f130c133b48422
-bed48639a2b74e4c08f2e710e24a99f347e0f4394ce64eacb549576e89044e52
-eabe595bc964156d9d8c2bab0f49664e951d7c1a3d1789c47f03c7051a63d5e8
-df04faac47351e82cae0794aa9692c6452688a74a7a6a7ad09b8a9783c235ec1
-ea2156261b8fb331827145de315b6ec1b3d8b67b3323f761eaf4c223bb214c4c
-6b062d1b281f5041d068319f4911058376d8efba59884ba3318c5bc95684f281
-e0591bc0d1b2a4592a137ff301610019b8ac46ae6e48bc091e888e4487688350
-e9ad5074ee4848271ce4acc38d8cbc8f3db32813ddd5b341af9a6601281aba38
-4a978b98483a63fcc458d0e3bce6fd830e7e09b0db987a6b63b74638fc9f21a5
-8c68479e1a85225670d79cdde5ac0b77f5a994ca700b5f0ff1f97fc63efde023
-8135f04a9d20c31998b12ae06676c362141aaaa395cdef0a49e0141d335965f2
-fb4198499799ceccc8aa5d255264784cd30a3e8295888efbc2060addd7bac45a
-eeeecdff7a47a88e69d84c9e572616c1ac69a34b5f0d0de8ee4edf9f4ade0387
-680924d8d5b73ef04ead7f45977ca8ad73d4dd45de1966a3b8251c0386164c35
-5880dd2609c80e96d1ab861c9259748e98f6711d4e241a269ed51ff328344664
-3af9f18dce671611db2f5d3ea77ee734d2bed623f973e6840b8dad1e2c3c2666
-dd4dd1c1c8384f906a7baacdf441bb0aaea2a697e453d89e61340d3a13f615ef
-1519bfec00780aa739ca4bbfd4bf4df2e631623030c8343d7b84d3333d9eb1c7
-b8f7b8e4b2300015f84581ef1adeb8927320ff8d70138f099c8a4cfa5cdd00c9
-7028808e83dc31a07859bf1fb09e75461041b1d7fbcd67127398bf4ccf1f5b0d
-aca653b6ad3b88aff1852e266f413d704a55e5ca7093acaa6030e39d8f94cc01
-40cc496ff70c94384f50b409e147096fb2a369342aada452f853c4bdb343aca4
-e9f832281381689ca3dcc8c79e7c15a60690f64eed769738b307224c6bb711f8
-4c6145a710444c68df56753e307ccf3eb1157145e10a4f552917bb024f732948
-0cc4af63bf2bba2e43c5f0fe9f03505ebe36c22119fc77127ee189423efb7b71
-85a7b4fa2414a5451dc6b2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F9_0 /LBWBDW+CMEX10 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /summationtext/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%BeginResource: font NMQKLO+CMBX5
-%!PS-AdobeFont-1.1: CMBX5 1.0
-%%CreationDate: 1991 Aug 20 16:35:12
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /NMQKLO+CMBX5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 63 /question put
-readonly def
-/FontBBox{-40 -250 1483 756}readonly def
-currentdict end
-currentfile eexec
-d9d66f633b846a97b686a97e45a3d0aa052a014267b7904eb3c0d3bd0b83d891
-016ca6ca4b712adeb258faab9a130ee605e61f77fc1b738abc7c51cd46ef8171
-9098d5fee67660e69a7ab91b58f29a4d79e57022f783eb0fbbb6d4f4ec35014f
-d2decba99459a4c59df0c6eba150284454e707dc2100c15b76b4c19b84363758
-469a6c558785b226332152109871a9883487dd7710949204ddcf837e6a8708b8
-2bdbf16fbc7512faa308a093fe5f068f48fd40da38a480ecd24c95aa52d1eb8d
-502e7d1e35b648c712f04a3f32986a7d18d3c6d4ac7333184c6d44bdf95915a2
-d64839372f2a0eff251b92139518c8bfb733c1db4b64fcc4671ecc1a9449d442
-f7c1a1c352aa77e522b8a5a7318ab1f49f6f047fd17e71a0c6d6c60a7aeab52f
-acef9c20fe28b5e3e70f44baecaf535674eb33af0cad919f2398de641d94c026
-f0edb2bed4c3bccf5e6e5a9dd4a841a660d86b2f0f5fb264f6d76e1e38da6730
-1acd0ec8592584babdeab88e2774b4e8bc60607ca8246a070c8e7f9e54d1742c
-6197b85c606b2388d93e3738e0a1feb314a89d61a001b5deb93bff543714623d
-e7bb928ae0f16120af220c9c6a5aa1488e1112b810910a9985f63fe46ad1de40
-6c0729362a33538005464d7021f521f8d694a7ebb7e5ee96f28a5232bc5e5dc7
-76cb198dac299dbd399dea79136f3d3a2e0d71014b74522685d59ec157b50996
-1a336950a916c603eab7a2f389b6922f8cd61188950fbc871b9248e2735176a4
-b32e00db4c68064bd43d66448090085c54f799267d517b036c9967c985d397c7
-d035d988c844bb77778330efecba432e16624c0bf61b57c5f16921b819084b09
-b761421484dd7a3470cfed1cfee500282579a7d52fed688c11b6479db5008dbc
-6ae39544dbb9fd9952541d8a24a8bcbf9650f2c0d2fe44aff9b9167d7c65e168
-41a0ca8969259abbac0ab3727e1bf348928ae422af55f334d25af14528a3711c
-06273b79fbc520330b4f7592ae1ac0dc4634e24b21202783def88e7d5d477462
-2cdd2373a78a3d82aefcf49ffdfdb76a9f085962f96017b703f3f54d8989e323
-c54c4cc3fafa0e66617816cabc334df56118c03a4def8f527684ad30c9b35493
-12c0178d348873a626842970d2a8660c82951ef653618245709a41955b2cd343
-0e6c08318db68640b9813efc09f40403b5da127f2b741b659e384b4bdc264e70
-c6eb003870f0f9a1ed4d40166db6d2c1beab30b9872f4071f5ead05172ba3c52
-281019bbfd8d34a6a505b816273159e6edbcf550bfdd1aabd28ebeffcb02269c
-561af4fc5a3e29e24416023a81f6dcead3ae15dc703242524b035737bcf2691c
-7c3f48b0ce0ffe9043f9b3284428ad2398efe958c4b27b7b73076bd211420c08
-05d209f4277df231df615279712312216948165c15481bde439f241341fd6d29
-a53774546749566c2d7fdad3226e2d94f0704bfcd8c6838e461370262f6df79f
-2e5d911fa0ff7e7d768de61aeb6c06a3bc8000f4219763a2b639984d0c2eb064
-28878bc8007baf55d2f388dad3d522b2d5a32fa6615f39c1778b78f5ab95ebb7
-0763404a937a7556478f8a
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/F10_0 /NMQKLO+CMBX5 1 1
-[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/question
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef]
-pdfMakeFont
-%%EndSetup
-pdfStartPage
-[] 0 d
-1 i
-0 j
-0 J
-10 M
-1 w
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-false op
-false OP
-{} settransfer
-q
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-[1 0 0 1 0.708 1.047] cm
-q
-[0.6603 0 0 0.6603 0 0] cm
-q
-[1 0 0 1 0 0] cm
-q
-[1 0 0 1 0 0] cm
-0 0 212.525 156.525 re
-W
-q
-/DeviceRGB {} cs
-[0 0 0] sc
-72.684 137.412 m
-80.711 108.744 37.551 98.517 47.832 63.166 c
-f
-192.324 73.892 m
-182.941 52.916 162.43 34.298 148.684 20.556 c
-f
-/DeviceRGB {} CS
-[1 0 0] SC
-0.8 w
-0 J
-0 j
-[] 0 d
-4 M
-q
-[1 0 0 -1 0 156.525] cm
-0.395 0.398 211.727 155.727 re
-S
-Q
-/DeviceRGB {} CS
-[0 0 0] SC
-q
-[1 0 0 -1 0 156.525] cm
-173.637 38.398 m
-173.637 63.598 l
-S
-Q
-/DeviceRGB {} cs
-[0.4 0.4 0.4] sc
-23.195 5.81 69.84 4.121 re
-f
-/DeviceRGB {} cs
-[0.702 0.702 0.702] sc
-10.059 59.81 28.246 74.539 re
-f
-/DeviceRGB {} CS
-[0 0 0] SC
-0.4 w
-q
-[1 0 0 -1 0 156.525] cm
-66.484 135.801 m
-69.652 136.258 l
-69.926 133.934 70.434 131.668 71.156 129.477 c
-68.191 128.477 l
-68.191 128.477 67.969 129.551 66.781 130.414 c
-66.188 130.844 65.582 130.496 64.988 129.965 c
-64.395 129.438 63.82 128.73 63.234 128.559 c
-62.652 128.383 61.996 128.504 61.445 128.848 c
-60.891 129.188 60.438 129.754 60.27 130.422 c
-60.098 131.09 60.23 131.801 60.562 132.363 c
-60.891 132.922 61.422 133.332 62.023 133.445 c
-62.629 133.555 63.465 133.195 64.238 133 c
-65.008 132.805 65.711 132.766 66.078 133.398 c
-66.805 134.664 66.484 135.801 66.484 135.801 c
-h
-68.191 128.477 m
-71.156 129.477 l
-71.875 127.285 72.805 125.164 73.918 123.117 c
-71.172 121.637 l
-71.172 121.637 70.766 122.66 69.453 123.301 c
-68.797 123.621 68.266 123.176 67.777 122.555 c
-67.285 121.938 66.84 121.148 66.297 120.879 c
-65.754 120.609 65.098 120.613 64.504 120.855 c
-63.91 121.094 63.379 121.562 63.109 122.184 c
-62.836 122.801 62.848 123.512 63.078 124.113 c
-63.305 124.715 63.746 125.203 64.312 125.414 c
-64.875 125.629 65.742 125.43 66.523 125.375 c
-67.305 125.32 67.996 125.406 68.234 126.086 c
-68.715 127.438 68.191 128.477 68.191 128.477 c
-h
-71.172 121.637 m
-73.918 123.117 l
-75.031 121.074 76.328 119.102 77.781 117.215 c
-75.266 115.316 l
-75.266 115.316 74.695 116.277 73.285 116.711 c
-72.578 116.93 72.125 116.398 71.734 115.707 c
-71.344 115.016 71.02 114.164 70.523 113.809 c
-70.023 113.457 69.367 113.359 68.746 113.5 c
-68.121 113.645 67.527 114.023 67.168 114.594 c
-66.809 115.16 66.711 115.863 66.844 116.492 c
-66.977 117.121 67.336 117.672 67.855 117.977 c
-68.379 118.281 69.266 118.227 70.047 118.301 c
-70.828 118.375 71.496 118.574 71.621 119.281 c
-71.871 120.699 71.172 121.637 71.172 121.637 c
-h
-75.266 115.316 m
-77.781 117.215 l
-79.234 115.324 80.844 113.516 82.578 111.793 c
-80.305 109.547 l
-80.305 109.547 79.598 110.441 78.117 110.68 c
-77.379 110.801 77 110.203 76.703 109.457 c
-76.406 108.707 76.199 107.809 75.746 107.383 c
-75.293 106.957 74.652 106.77 74.008 106.82 c
-73.367 106.875 72.723 107.168 72.285 107.684 c
-71.414 108.707 71.547 110.398 72.5 111.16 c
-72.977 111.543 73.871 111.621 74.641 111.812 c
-75.41 112 76.055 112.297 76.074 113.023 c
-76.113 114.484 75.266 115.316 75.266 115.316 c
-h
-80.305 109.547 m
-82.578 111.793 l
-84.316 110.07 86.184 108.438 88.148 106.895 c
-86.133 104.359 l
-86.133 104.359 85.309 105.18 83.789 105.238 c
-83.027 105.27 82.723 104.621 82.516 103.832 c
-82.309 103.043 82.211 102.113 81.809 101.629 c
-81.004 100.664 79.305 100.574 78.301 101.484 c
-77.301 102.395 77.223 104.105 78.078 105 c
-78.508 105.445 79.395 105.645 80.145 105.938 c
-80.895 106.227 81.504 106.605 81.43 107.344 c
-81.277 108.82 80.305 109.547 80.305 109.547 c
-h
-86.133 104.359 m
-88.148 106.895 l
-90.117 105.348 92.188 103.898 94.332 102.543 c
-92.582 99.789 l
-92.582 99.789 91.668 100.527 90.137 100.422 c
-89.367 100.367 89.133 99.684 89.016 98.867 c
-88.895 98.055 88.898 97.113 88.547 96.582 c
-87.848 95.527 86.156 95.242 85.051 96.035 c
-83.949 96.824 83.672 98.527 84.434 99.523 c
-84.812 100.023 85.68 100.328 86.398 100.707 c
-87.117 101.09 87.688 101.539 87.527 102.273 c
-87.199 103.738 86.133 104.359 86.133 104.359 c
-h
-92.582 99.789 m
-94.332 102.543 l
-96.477 101.188 98.695 99.93 100.961 98.777 c
-99.496 95.867 l
-99.496 95.867 98.512 96.516 96.996 96.258 c
-96.238 96.129 96.074 95.422 96.035 94.598 c
-96 93.773 96.098 92.836 95.801 92.277 c
-95.207 91.152 93.555 90.691 92.375 91.359 c
-91.195 92.027 90.742 93.691 91.395 94.77 c
-91.723 95.309 92.555 95.707 93.234 96.164 c
-93.914 96.617 94.441 97.125 94.199 97.844 c
-93.723 99.277 92.582 99.789 92.582 99.789 c
-h
-99.496 95.867 m
-100.961 98.777 l
-103.23 97.621 105.543 96.57 107.879 95.625 c
-106.711 92.629 l
-106.711 92.629 105.68 93.18 104.207 92.781 c
-103.473 92.582 103.375 91.867 103.418 91.051 c
-103.461 90.234 103.645 89.32 103.406 88.742 c
-102.926 87.578 101.336 86.957 100.105 87.496 c
-98.875 88.035 98.266 89.637 98.809 90.766 c
-99.082 91.332 99.867 91.812 100.5 92.328 c
-101.129 92.848 101.598 93.398 101.293 94.086 c
-100.68 95.465 99.496 95.867 99.496 95.867 c
-h
-106.711 92.629 m
-107.879 95.625 l
-108.609 95.332 109.34 95.047 110.074 94.773 c
-111.566 94.227 113.117 93.789 114.715 93.445 c
-114.031 90.324 l
-114.031 90.324 112.969 90.688 111.598 90.102 c
-110.91 89.809 110.898 89.098 111.047 88.305 c
-111.199 87.512 111.512 86.637 111.359 86.035 c
-111.207 85.434 110.758 84.93 110.172 84.629 c
-109.586 84.328 108.855 84.238 108.188 84.445 c
-107.598 84.629 107.098 85.035 106.773 85.527 c
-106.391 86.141 106.27 86.898 106.508 87.551 c
-106.738 88.172 107.562 88.754 108.145 89.367 c
-108.613 89.855 108.922 90.367 108.699 90.918 c
-108.68 90.957 108.66 90.996 108.637 91.039 c
-107.91 92.336 106.711 92.629 106.711 92.629 c
-h
-114.031 90.324 m
-114.715 93.445 l
-117.035 92.941 119.449 92.629 121.918 92.441 c
-121.672 89.246 l
-121.672 89.246 120.543 89.461 119.262 88.668 c
-118.621 88.27 118.727 87.566 118.996 86.801 c
-119.266 86.035 119.703 85.219 119.641 84.598 c
-119.578 83.977 119.219 83.41 118.695 83.02 c
-118.176 82.633 117.488 82.426 116.816 82.523 c
-116.141 82.621 115.535 83.012 115.137 83.535 c
-114.738 84.055 114.547 84.703 114.66 85.309 c
-114.773 85.914 115.402 86.57 115.867 87.223 c
-116.328 87.879 116.625 88.531 116.156 89.102 c
-115.223 90.242 114.031 90.324 114.031 90.324 c
-h
-121.672 89.246 m
-121.918 92.441 l
-123.234 92.34 124.566 92.273 125.906 92.234 c
-127.094 92.207 128.293 92.199 129.512 92.199 c
-129.516 89 l
-129.516 89 128.34 89.129 127.133 88.211 c
-126.531 87.754 126.715 87.062 127.059 86.332 c
-127.398 85.598 127.902 84.828 127.898 84.203 c
-127.891 83.047 126.859 81.973 125.656 81.855 c
-125.566 81.848 125.473 81.844 125.379 81.844 c
-124.059 81.875 122.895 83.105 122.965 84.34 c
-122.996 84.961 123.535 85.691 123.914 86.398 c
-124.293 87.109 124.512 87.789 123.973 88.301 c
-122.895 89.324 121.672 89.246 121.672 89.246 c
-h
-129.516 89 m
-129.512 92.199 l
-132.117 92.207 134.789 92.258 137.535 92.25 c
-137.523 89.047 l
-137.523 89.047 136.316 89.184 135.113 88.242 c
-133.91 87.301 135.926 85.492 135.934 84.246 c
-135.938 83 134.816 81.84 133.57 81.828 c
-132.324 81.816 131.148 82.969 131.141 84.207 c
-131.129 85.441 133.055 87.254 131.91 88.215 c
-130.766 89.176 129.516 89 129.516 89 c
-h
-137.523 89.047 m
-137.535 92.25 l
-139.398 92.242 141.297 92.207 143.227 92.109 c
-144.141 92.07 145.062 92.008 145.984 91.926 c
-145.691 88.73 l
-145.691 88.73 144.457 88.973 143.18 88.109 c
-143.117 88.066 143.062 88.02 143.012 87.969 c
-142.633 87.586 142.719 87.047 142.934 86.465 c
-143.234 85.656 143.777 84.754 143.73 84.066 c
-143.684 83.344 143.273 82.68 142.719 82.254 c
-142.312 81.949 141.832 81.766 141.336 81.785 c
-140.156 81.828 139.066 83.004 139.082 84.238 c
-139.09 84.855 139.578 85.605 139.934 86.324 c
-140.285 87.039 140.508 87.727 139.941 88.223 c
-138.812 89.215 137.523 89.047 137.523 89.047 c
-h
-145.691 88.73 m
-145.984 91.926 l
-148.863 91.664 151.77 91.207 154.645 90.492 c
-153.883 87.387 l
-153.883 87.387 152.68 87.82 151.289 87.141 c
-150.598 86.801 150.68 86.082 150.883 85.301 c
-151.086 84.52 151.398 83.672 151.27 83.062 c
-151.145 82.453 150.758 81.922 150.277 81.562 c
-149.793 81.203 149.215 81.012 148.656 81.102 c
-148.098 81.191 147.602 81.555 147.254 82.047 c
-146.906 82.543 146.707 83.172 146.777 83.785 c
-146.852 84.402 147.406 85.098 147.836 85.773 c
-148.266 86.449 148.57 87.105 148.059 87.664 c
-147.031 88.781 145.691 88.73 145.691 88.73 c
-h
-153.883 87.387 m
-154.645 90.492 l
-157.246 89.848 159.824 88.992 162.348 87.895 c
-162.609 87.777 162.871 87.656 163.133 87.531 c
-161.781 84.637 l
-161.781 84.637 161.504 84.805 161.031 84.922 c
-160.562 85.031 159.91 85.09 159.168 84.887 c
-158.422 84.68 158.379 83.957 158.438 83.152 c
-158.492 82.352 158.637 81.461 158.398 80.887 c
-158.156 80.312 157.688 79.863 157.16 79.594 c
-156.633 79.328 156.051 79.242 155.535 79.418 c
-155.023 79.598 154.613 80.031 154.363 80.57 c
-154.113 81.109 154.02 81.758 154.188 82.352 c
-154.355 82.945 155.008 83.547 155.539 84.141 c
-156.07 84.73 156.48 85.328 156.062 85.961 c
-155.227 87.227 153.883 87.387 153.883 87.387 c
-h
-161.781 84.637 m
-163.133 87.531 l
-165.855 86.242 168.418 84.715 170.824 83.008 c
-168.965 80.41 l
-168.965 80.41 168.008 81.254 166.465 81.137 c
-165.695 81.074 165.512 80.379 165.41 79.582 c
-165.312 78.785 165.289 77.883 164.941 77.367 c
-164.598 76.848 164.047 76.5 163.473 76.344 c
-162.898 76.188 162.301 76.219 161.828 76.5 c
-161.355 76.777 161.043 77.285 160.902 77.863 c
-160.766 78.438 160.805 79.09 161.09 79.637 c
-161.371 80.188 162.125 80.645 162.766 81.121 c
-163.406 81.598 163.926 82.098 163.645 82.801 c
-163.078 84.207 161.781 84.637 161.781 84.637 c
-h
-168.965 80.41 m
-170.824 83.008 l
-173.227 81.297 175.469 79.41 177.559 77.395 c
-175.328 75.086 l
-175.328 75.086 174.512 76.059 172.969 76.18 c
-172.199 76.242 171.902 75.582 171.676 74.809 c
-171.453 74.031 171.293 73.137 170.871 72.676 c
-170.027 71.754 168.473 71.617 167.609 72.348 c
-167.18 72.711 166.945 73.277 166.902 73.879 c
-166.859 74.48 167.012 75.121 167.387 75.613 c
-167.762 76.102 168.594 76.418 169.305 76.777 c
-170.02 77.137 170.621 77.543 170.465 78.285 c
-170.152 79.766 168.965 80.41 168.965 80.41 c
-h
-S
-Q
-Q
-Q
-Q
-Q
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 -0.708 -1.047] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-90.27 95.653 Td
-/F5_0 4.9813 Tf
-(Inksc) 13.4067 Tj
-59 TJm
-(ap) 6.0094 Tj
-58 TJm
-(e) 2.7123 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[1 0 0] sc
-/DeviceRGB {} CS
-[1 0 0] SC
-118.817 21.74 Td
-/F6_0 4.9813 Tf
-(red) 9.4784 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 3.928 11.514] cm
-q
-[0.7071 0.7071 -0.7071 0.7071 0 0] cm
-[1 0 0 1 -3.928 -11.514] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-3.928 11.514 Td
-/F6_0 4.9813 Tf
-(45) 6.7805 Tj
--472 TJm
-(graden) 19.9949 Tj
-[1 0 0 1 3.928 11.514] cm
-Q
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 -3.928 -11.514] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-66.754 85.875 Td
-/F6_0 4.9813 Tf
-(lim) 9.4784 Tj
-76.233 84.879 Td
-/F7_0 4.9813 Tf
-(n) 4.3875 Tj
-80.62 84.879 Td
-/F8_0 4.9813 Tf
-(!1) 13.5601 Tj
-95.901 92.102 Td
-/F9_0 9.9626 Tf
-(P) 10.5165 Tj
-106.417 89.639 Td
-/F7_0 4.9813 Tf
-(n) 4.3875 Tj
-106.417 81.641 Td
-(k) 3.7763 Tj
-110.274 81.641 Td
-/F6_0 4.9813 Tf
-(=1) 8.5101 Tj
-123.878 87.805 Td
-(1) 3.3903 Tj
-q
-[1 0 0 1 121.7 87.12] cm
-[] 0 d
-0 J
-0.398 w
-0 0 m
-7.745 0 l
-S
-Q
-[1 0 0 1 0 0] Tm
-0 0 Td
-121.7 81.846 Td
-/F7_0 4.9813 Tf
-(k) 3.7763 Tj
-125.557 83.313 Td
-/F6_0 4.9813 Tf
-(2) 3.3903 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-16.708 98.118 Td
-(This) 13.2488 Tj
--472 TJm
-(Figure) 19.1855 Tj
-53.847 98.118 Td
-/F10_0 4.9813 Tf
-(??) 7.1531 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-110.09 68.815 Td
-/F6_0 4.9813 Tf
-(o) 3.3903 Tj
--35 TJm
-(o) 3.3903 Tj
--34 TJm
-(o) 3.3903 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 1] sc
-/DeviceRGB {} CS
-[0 0 1] SC
-109.852 9.071 Td
-(blue) 12.5225 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 1 0] sc
-/DeviceRGB {} CS
-[0 1 0] SC
-115.432 16.139 Td
-(green) 15.9128 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-16.021 7.605 Td
-(aligned) 21.3095 Tj
--472 TJm
-(on) 7.1262 Tj
--472 TJm
-(baseline) 23.696 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 7.35 81.51] cm
-q
-[0 -1 1 0 0 0] cm
-[1 0 0 1 -7.35 -81.51] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-7.35 81.51 Td
-/F6_0 4.9813 Tf
-(90) 6.7805 Tj
--472 TJm
-(degrees) 21.6896 Tj
-[1 0 0 1 7.35 81.51] cm
-Q
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 18.648 -27.494] cm
-q
-[0 1 -1 0 0 0] cm
-[1 0 0 1 -25.998 -54.016] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-25.998 54.016 Td
-/F6_0 4.9813 Tf
-(90) 6.7805 Tj
--472 TJm
-(degrees) 21.6896 Tj
-[1 0 0 1 25.998 54.016] cm
-Q
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 -25.998 -54.016] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-115.349 74.183 Td
-/F6_0 4.9813 Tf
-(o) 3.3903 Tj
--35 TJm
-(o) 3.3903 Tj
--34 TJm
-(o) 3.3903 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-104.832 63.961 Td
-(o) 3.3903 Tj
--35 TJm
-(o) 3.3903 Tj
--34 TJm
-(o) 3.3903 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-72.872 75.953 Td
-/F7_0 4.9813 Tf
-(x) 3.9437 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-79.137 73.063 Td
-(y) 3.6393 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-85.881 69.449 Td
-(z) 3.4306 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 0] sc
-/DeviceRGB {} CS
-[0 0 0] SC
-[1 0 0 1 70.962 49.659] cm
-q
-[0.8085 -0.5885 0.5885 0.8085 0 0] cm
-[1 0 0 1 -70.962 -49.659] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-36.231 49.659 Td
-/F6_0 4.9813 Tf
-(TikZ) 14.4253 Tj
--472 TJm
-(this) 11.1736 Tj
-64.182 49.659 Td
-/F8_0 4.9813 Tf
-(!) 6.78 Tj
-[1 0 0 1 70.962 49.659] cm
-Q
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceRGB {} cs
-[0 0 1] sc
-/DeviceRGB {} CS
-[0 0 1] SC
-[1 0 0 1 -70.962 -49.659] cm
-[1 0 0 1 0 0] Tm
-0 0 Td
-103.095 37.083 Td
-/F6_0 4.9813 Tf
-(transparen) 31.8604 Tj
-35 TJm
-(t) 2.6984 Tj
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-/DeviceGray {} cs
-[0] sc
-/DeviceGray {} CS
-[0] SC
-Q
-showpage
-%%PageTrailer
-pdfEndPage
-%%Trailer
-end
-%%DocumentSuppliedResources:
-%%+ font XYFSSI+CMTI7
-%%+ font QRFNIX+CMR5
-%%+ font KCZGMI+CMMI5
-%%+ font ZITESQ+CMSY5
-%%+ font LBWBDW+CMEX10
-%%+ font NMQKLO+CMBX5
-%%EOF
diff --git a/Master/texmf-dist/doc/latex/svg/Fig.2.pdf b/Master/texmf-dist/doc/latex/svg/Fig.2.pdf
deleted file mode 100644
index 5d04eeb9f13..00000000000
--- a/Master/texmf-dist/doc/latex/svg/Fig.2.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svg/Fig.2.png b/Master/texmf-dist/doc/latex/svg/Fig.2.png
deleted file mode 100644
index be7f984194a..00000000000
--- a/Master/texmf-dist/doc/latex/svg/Fig.2.png
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svg/LICENSE.md b/Master/texmf-dist/doc/latex/svg/LICENSE.md
new file mode 100644
index 00000000000..3d92561e918
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/svg/LICENSE.md
@@ -0,0 +1,30 @@
+
+ svg -- Include SVG pictures in LaTeX documents using Inkscape
+----------------------------------------------------------------------------
+ svg-extract -- Extract independent graphic files from SVG pictures
+----------------------------------------------------------------------------
+
+ Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+ Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+
+----------------------------------------------------------------------------
+
+ This work may be distributed and/or modified under the conditions of the
+ LaTeX Project Public License, version 1.3c of the license. The latest
+ version of this license is in http://www.latex-project.org/lppl.txt and
+ version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+ or later and of this work. This work has the LPPL maintenance status
+ "author-maintained". The current maintainer and author of this work
+ is Falk Hanisch.
+
+----------------------------------------------------------------------------
+
+ Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+ in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle
+ Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+ Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01
+ oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+ "author-maintained", wird somit allein durch den Autor verwaltet. Der
+ aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+
+----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/doc/latex/svg/README b/Master/texmf-dist/doc/latex/svg/README
deleted file mode 100644
index 900be0d35ab..00000000000
--- a/Master/texmf-dist/doc/latex/svg/README
+++ /dev/null
@@ -1,40 +0,0 @@
-%% -------------------------------------------------------
-%% Copyright (C) 2012 by Philip Ilten <philten@cern.ch>
-%% -------------------------------------------------------
-%%
-%% This file may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Philip Ilten.
-%%
-%% This work consists of the files README, svg.dtx (with derived files
-%% svg.sty, svg.pdf, Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png),
-%% preamble.tex, example.svg (with derived files example.pdf and
-%% example.pdf_tex), and root.C (with derived files root.svg,
-%% root.pdf, and root.pdf_tex).
-%%
-%% The following files constitute the svg package and should be
-%% distributed as a whole: README, svg.dtx, svg.sty, svg.pdf,
-%% Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png, preamble.tex
-%% example.svg, example.pdf, example.pdf_tex, root.C, root.svg,
-%% root.pdf, and root.pdf_tex.
-
-This package provides a command similar to the \includegraphics command of the
-graphicx package, but for the inclusion of SVGs using Inkscape.
-
- \includesvg[<options>]{<svg filename>}
-
-A variety of options are available, including width, height, and path of the
-SVG. Additionally, it is possible to extract the SVG image to a PDF, EPS, or
-PNG, exactly as it is rendered within the LaTeX document. Within the
-documentation an example is given using an SVG created from the high energy
-particle physics analysis package ROOT. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/svg/README.md b/Master/texmf-dist/doc/latex/svg/README.md
new file mode 100644
index 00000000000..1f1a6f19757
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/svg/README.md
@@ -0,0 +1,55 @@
+
+ svg -- Include SVG pictures in LaTeX documents using Inkscape
+----------------------------------------------------------------------------
+ svg-extract -- Extract independent graphic files from SVG pictures
+----------------------------------------------------------------------------
+
+ Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+ Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+
+ svg 2017/03/27 v2.00
+
+----------------------------------------------------------------------------
+
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
+
+----------------------------------------------------------------------------
+
+
+Summary
+-------
+
+The **svg** package is intended for the automated integration of SVG graphics
+into LaTeX documents. Therefor the capabilities provided by ***Inkscape***---or
+more precisely its command line tool---are used to export the text within a SVG
+graphic to a separate file, which is then rendered by LaTeX. For this purpose
+the two commands `\includesvg` and `\includeinkscape` are provided which are
+very similar to the `\includegraphics` command of the **graphicx** package.
+
+In addition, the package **svg-extract** allows the extraction of these
+graphics into independent files in different graphic formats, exactly as
+it is rendered within the LaTeX document using either ***ImageMagick*** or
+***Ghostscript***
+
+
+Versions
+--------
+
+**v2.00** (2017/03/27)
++ New maintainer: Falk Hanisch
++ Re-implementation from scratch
++ functionality split in two packages **svg** and **svg-extract**
++ package **svg** intended for including SVG files
++ package **svg-extract** for extracting graphic files rendered with LaTeX
++ **svg-extract**: enhanced support for ***ImageMagick***
++ **svg-extract**: support for ***Ghostscript*** added
++ package **subfig** not required anymore
++ support of subfigures stopped due to the huge number of packages which deal
+ with this topic and the large variety of implementing this functionality;
+ naming exported graphics after their consecutive numbering can't be ensured
+ for all variants of subfigures, so it's neglected
+
+
+**v1.0** (2016/10/10)
++ initial version by Philip Ilten
diff --git a/Master/texmf-dist/doc/latex/svg/example.pdf b/Master/texmf-dist/doc/latex/svg/example.pdf
deleted file mode 100644
index 488c5faa0ff..00000000000
--- a/Master/texmf-dist/doc/latex/svg/example.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svg/example.pdf_tex b/Master/texmf-dist/doc/latex/svg/example.pdf_tex
deleted file mode 100644
index af114d2b6cf..00000000000
--- a/Master/texmf-dist/doc/latex/svg/example.pdf_tex
+++ /dev/null
@@ -1,40 +0,0 @@
-\begingroup
- \makeatletter
- \providecommand\color[2][]{%
- \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}
- \renewcommand\color[2][]{}%
- }
- \providecommand\transparent[1]{%
- \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}
- \renewcommand\transparent[1]{}%
- }
- \providecommand\rotatebox[2]{#2}
- \ifx\svgwidth\undefined
- \setlength{\unitlength}{212.525pt}
- \else
- \setlength{\unitlength}{\svgwidth}
- \fi
- \global\let\svgwidth\undefined
- \makeatother
- \begin{picture}(1,0.73650159)%
- \put(0,0){\includegraphics[width=\unitlength]{example.pdf}}%
- \put(0.63829642,0.6742451){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{\emph{Inkscape}}}}%
- \put(0.84173702,0.1474823){\color[rgb]{1,0,0}\makebox(0,0)[lb]{\smash{red}}}%
- \put(0.02294317,0.07460173){\color[rgb]{0,0,0}\rotatebox{45}{\makebox(0,0)[lb]{\smash{45 graden}}}}%
- \put(0.69834718,0.60455928){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{$\lim_{n \to \infty}\sum_{k=1}^n \frac{1}{k^2}$}}}%
- \put(0.11403042,0.69180401){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{This Figure \ref{fig:example}}}}%
- \put(0.81701383,0.48297822){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{ooo}}}%
- \put(0.77784162,0.05718502){\color[rgb]{0,0,1}\makebox(0,0)[lb]{\smash{blue}}}%
- \put(0.81761682,0.10755617){\color[rgb]{0,1,0}\makebox(0,0)[lb]{\smash{green}}}%
- \put(0.10913692,0.04673474){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{aligned on baseline}}}%
- \put(0.04733209,0.57343337){\color[rgb]{0,0,0}\rotatebox{-90}{\makebox(0,0)[lb]{\smash{90 degrees}}}}%
- \put(0.18024362,0.37750422){\color[rgb]{0,0,0}\rotatebox{90}{\makebox(0,0)[lb]{\smash{90 degrees}}}}%
- \put(0.81701383,0.52121809){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{ooo}}}%
- \put(0.81701383,0.44838027){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{ooo}}}%
- \put(0.51430473,0.53384586){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$x$}}}%
- \put(0.55894148,0.51324431){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$y$}}}%
- \put(0.60701188,0.48749228){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$z$}}}%
- \put(0.5006922,0.34645132){\color[rgb]{0,0,0}\rotatebox{-36.04952341}{\makebox(0,0)[rb]{\smash{TikZ this$\rightarrow$}}}}%
- \put(0.72968311,0.2568264){\color[rgb]{0,0,1}\transparent{0.5}\makebox(0,0)[lb]{\smash{transparent}}}%
- \end{picture}%
-\endgroup
diff --git a/Master/texmf-dist/doc/latex/svg/example.svg b/Master/texmf-dist/doc/latex/svg/example.svg
deleted file mode 100644
index 59778af4370..00000000000
--- a/Master/texmf-dist/doc/latex/svg/example.svg
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="265.65625"
- height="195.65625"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="image.svg">
- <defs
- id="defs4">
- <inkscape:path-effect
- fuse_tolerance="0"
- vertical_pattern="false"
- prop_units="false"
- tang_offset="0"
- normal_offset="0"
- spacing="0"
- scale_y_rel="false"
- prop_scale="1"
- copytype="repeated"
- pattern="m -74.185426,32.029694 0,4 10,0 0,-4 c 0,0 -1.49278,0.16485 -3,-1 -1.50722,-1.16485 1,-3.4422 1,-4.99999 0,-1.55779 -1.43824,-3.00001 -3,-3.00001 -1.56176,0 -3,1.45475 -3,3 0,1.54525 2.42269,3.78723 1,5 -1.42269,1.21277 -3,1 -3,1 z"
- is_visible="true"
- id="path-effect3783"
- effect="skeletal" />
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect3762"
- is_visible="true"
- pattern="m -12.836336,43.184604 0,4 10,0 0,-4 c 0,0 -1.49278,0.16485 -3,-1 -1.50722,-1.16485 1,-3.4422 1,-4.99999 0,-1.55779 -1.43824,-3.00001 -3,-3.00001 -1.56176,0 -3,1.45475 -3,3 0,1.54525 2.42269,3.78723 1,5 -1.42269,1.21277 -3,1 -3,1 z"
- copytype="repeated"
- prop_scale="1"
- scale_y_rel="false"
- spacing="0"
- normal_offset="0"
- tang_offset="0"
- prop_units="false"
- vertical_pattern="false"
- fuse_tolerance="0" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2926" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.261286"
- inkscape:cx="346.30469"
- inkscape:cy="42.723718"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:snap-bbox="true"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1366"
- inkscape:window-height="747"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-nodes="true"
- inkscape:snap-global="true"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <sodipodi:guide
- orientation="0,1"
- position="106.05433,207.01558"
- id="guide2945" />
- <sodipodi:guide
- orientation="1,0"
- position="0.49339,127.21353"
- id="guide2947" />
- <sodipodi:guide
- orientation="1,0"
- position="265.15336,101.45464"
- id="guide2951" />
- <inkscape:grid
- type="xygrid"
- id="grid2988"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-204.0625,-217.71875)">
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 294.91757,241.60997 c 10.03604,35.83378 -43.91797,48.61968 -31.06556,92.81028"
- id="path2907"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 444.46712,321.01174 c -11.72773,26.21816 -37.36987,49.4917 -54.54824,66.67007"
- id="path2913"
- inkscape:connector-curvature="0" />
- <g
- id="g3785"
- transform="matrix(0.5,-0.8660254,0.8660254,0.5,7.1032015,475.6825)">
- <text
- id="text2919"
- y="-241.42493"
- x="366.52673"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- xml:space="preserve"
- transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"><tspan
- y="-241.42493"
- x="366.52673"
- id="tspan2921"
- sodipodi:role="line">\emph{Inkscape}</tspan></text>
- </g>
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ff0000;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="427.6752"
- y="374.1954"
- id="text2923"><tspan
- sodipodi:role="line"
- id="tspan2925"
- x="427.6752"
- y="374.1954">red</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-129.68274"
- y="426.89032"
- id="text2935"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"><tspan
- sodipodi:role="line"
- id="tspan2937"
- x="-129.68274"
- y="426.89032">45 graden</tspan></text>
- <rect
- style="fill:none;stroke:#ff0000;stroke-width:1"
- id="rect2943"
- width="264.65997"
- height="194.65775"
- x="204.55589"
- y="218.21747" />
- <text
- xml:space="preserve"
- style="font-size:6.09581709px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
- x="389.58279"
- y="252.77005"
- id="text2937"><tspan
- sodipodi:role="line"
- id="tspan2939"
- x="389.58279"
- y="252.77005">$\lim_{n \to \infty}\sum_{k=1}^n \frac{1}{k^2}$</tspan></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
- x="234.35539"
- y="229.59294"
- id="text2949"><tspan
- sodipodi:role="line"
- id="tspan2951"
- x="234.35539"
- y="229.59294">This Figure \ref{fig:example}</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="421.10733"
- y="285.06882"
- id="text2959"><tspan
- sodipodi:role="line"
- id="tspan2961"
- x="421.10733"
- y="285.06882">ooo</tspan></text>
- <path
- style="fill:none;stroke:#000000"
- d="m 421.10734,265.71894 0,31.49638"
- id="path2963"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:19.38392448px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:none;stroke:#0000ff;stroke-width:1.21140051px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="410.70099"
- y="398.18344"
- id="text2963"><tspan
- sodipodi:role="line"
- id="tspan2965"
- x="410.70099"
- y="398.18344"
- style="stroke-width:1.21140051">blue</tspan></text>
- <text
- id="text2967"
- y="384.80203"
- x="421.26752"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- xml:space="preserve"><tspan
- y="384.80203"
- x="421.26752"
- id="tspan2969"
- sodipodi:role="line">green</tspan></text>
- <rect
- style="fill:#666666;stroke:none"
- id="rect2930"
- width="87.301743"
- height="5.1525674"
- x="233.0554"
- y="400.95963" />
- <text
- xml:space="preserve"
- style="font-size:9.62269783px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Adobe Garamond Pro;-inkscape-font-specification:Adobe Garamond Pro"
- x="233.0554"
- y="400.95963"
- id="text2952"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2954"
- x="233.0554"
- y="400.95963">aligned on baseline</tspan></text>
- <g
- id="g2967"
- transform="translate(70.236115,-35.574136)">
- <rect
- style="fill:#b3b3b3;stroke:none"
- id="rect2965"
- width="35.308773"
- height="93.175751"
- x="146.40045"
- y="281.01093" />
- <text
- transform="matrix(0,1,-1,0,0,0)"
- id="text2950"
- y="-146.40045"
- x="296.61298"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- xml:space="preserve"><tspan
- y="-146.40045"
- x="296.61298"
- id="tspan2952"
- sodipodi:role="line">90 degrees</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-348.66278"
- y="181.70923"
- id="text2946"
- transform="matrix(0,-1,1,0,0,0)"><tspan
- sodipodi:role="line"
- id="tspan2948"
- x="-348.66278"
- y="181.70923">90 degrees</tspan></text>
- </g>
- <text
- id="text2968"
- y="274.91016"
- x="421.10733"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- xml:space="preserve"><tspan
- y="274.91016"
- x="421.10733"
- id="tspan2970"
- sodipodi:role="line">ooo</tspan></text>
- <text
- id="text2972"
- y="294.25998"
- x="421.10733"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- xml:space="preserve"><tspan
- y="294.25998"
- x="421.10733"
- id="tspan2974"
- sodipodi:role="line">ooo</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="340.69077"
- y="271.55551"
- id="text2976"><tspan
- sodipodi:role="line"
- id="tspan2978"
- x="340.69077"
- y="271.55551">$x$</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="352.5488"
- y="277.02844"
- id="text2980"><tspan
- sodipodi:role="line"
- id="tspan2982"
- x="352.5488"
- y="277.02844">$y$</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="365.319"
- y="283.86963"
- id="text2984"><tspan
- sodipodi:role="line"
- id="tspan2986"
- x="365.319"
- y="283.86963">$z$</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 287.16748,387.47104 3.95908,0.57071 c 0.34178,-2.90837 0.97982,-5.73577 1.88034,-8.47543 l -3.70392,-1.25175 c 0,0 -0.27778,1.34095 -1.76248,2.42101 -0.74235,0.54003 -1.49922,0.10161 -2.24207,-0.55848 -0.74284,-0.66008 -1.45926,-1.5431 -2.19069,-1.76159 -0.73143,-0.21848 -1.54786,-0.0673 -2.23986,0.36101 -0.692,0.42832 -1.2574,1.135 -1.46965,1.96981 -0.21224,0.8348 -0.0483,1.72402 0.36541,2.4253 0.4137,0.70128 1.07479,1.21356 1.8299,1.35136 0.75512,0.1378 1.79931,-0.31044 2.76459,-0.55448 0.96527,-0.24404 1.8436,-0.29261 2.29981,0.49833 0.91243,1.58188 0.50954,3.0042 0.50954,3.0042 z m 2.1355,-9.15647 3.70392,1.25175 c 0.90052,-2.73966 2.06352,-5.39159 3.45521,-7.94901 l -3.43252,-1.85171 c 0,0 -0.5105,1.27601 -2.1519,2.07843 -0.8207,0.4012 -1.48189,-0.15789 -2.09551,-0.93012 -0.61362,-0.77222 -1.1684,-1.7579 -1.84762,-2.09637 -0.67921,-0.33847 -1.50118,-0.33002 -2.24391,-0.0315 -0.74273,0.29849 -1.40431,0.88827 -1.74365,1.66139 -0.33935,0.77311 -0.32337,1.66224 -0.0383,2.41272 0.28509,0.75047 0.83718,1.36119 1.54238,1.6274 0.7052,0.26622 1.78931,0.0175 2.76609,-0.0494 0.97677,-0.0669 1.83945,0.0397 2.13989,0.88608 0.60088,1.69283 -0.0541,2.99039 -0.0541,2.99039 z m 3.72661,-8.54897 3.43252,1.85171 c 1.39169,-2.55743 3.01207,-5.02035 4.82734,-7.38201 l -3.14489,-2.37057 c 0,0 -0.71361,1.20167 -2.47643,1.74394 -0.88141,0.27113 -1.44848,-0.39018 -1.93808,-1.25432 -0.4896,-0.86413 -0.89155,-1.9305 -1.51539,-2.37316 -0.62384,-0.44267 -1.44101,-0.56318 -2.22097,-0.38552 -0.77995,0.17767 -1.52104,0.65481 -1.97165,1.36307 -0.45062,0.70826 -0.56888,1.58687 -0.40343,2.373 0.16546,0.78614 0.61279,1.47862 1.26494,1.85758 0.65216,0.37897 1.76005,0.313 2.73599,0.40662 0.97593,0.0936 1.81438,0.33882 1.971,1.22553 0.31325,1.77342 -0.56095,2.94413 -0.56095,2.94413 z m 5.11497,-7.90087 3.14489,2.37057 c 1.81528,-2.36165 3.82546,-4.62205 5.99674,-6.7744 l -2.84102,-2.80834 c 0,0 -0.88714,1.11792 -2.73608,1.41754 -0.92447,0.14981 -1.39901,-0.59526 -1.76978,-1.53108 -0.37077,-0.93583 -0.62871,-2.0609 -1.19401,-2.59197 -0.56531,-0.53106 -1.36734,-0.76679 -2.17103,-0.70095 -0.80368,0.0658 -1.6076,0.43462 -2.15366,1.07485 -1.0921,1.28046 -0.92435,3.39593 0.26759,4.34804 0.59596,0.47605 1.71152,0.57611 2.67427,0.81364 0.96274,0.23754 1.76838,0.60486 1.79315,1.51669 0.0495,1.82365 -1.01106,2.86541 -1.01106,2.86541 z m 6.30061,-7.21217 2.84102,2.80834 c 2.17128,-2.15236 4.50368,-4.19669 6.96339,-6.12621 l -2.52091,-3.16501 c 0,0 -1.03107,1.02478 -2.93085,1.09924 -0.9499,0.0372 -1.33348,-0.77313 -1.59061,-1.76042 -0.25714,-0.9873 -0.37988,-2.14909 -0.88348,-2.75276 -1.0072,-1.20735 -3.13243,-1.3192 -4.38374,-0.18113 -1.25131,1.13806 -1.351,3.27754 -0.27771,4.3925 0.53664,0.55748 1.64375,0.80683 2.58095,1.17165 0.9372,0.36483 1.70146,0.83779 1.60634,1.75955 -0.19025,1.84352 -1.4044,2.75425 -1.4044,2.75425 z m 7.2835,-6.48288 2.52091,3.16501 c 2.45971,-1.92953 5.04675,-3.74426 7.72731,-5.43742 l -2.18456,-3.44058 c 0,0 -1.1454,0.92222 -3.06075,0.78904 -0.95767,-0.0666 -1.25186,-0.92379 -1.40056,-1.94234 -0.1487,-1.01854 -0.14506,-2.19507 -0.5838,-2.85556 -0.87748,-1.32099 -2.99094,-1.67684 -4.3698,-0.68751 -1.37886,0.98934 -1.72273,3.11748 -0.77436,4.36396 0.47419,0.62324 1.55672,1.00515 2.45603,1.48065 0.89931,0.4755 1.61362,1.03761 1.41056,1.95412 -0.40612,1.83302 -1.74098,2.61063 -1.74098,2.61063 z m 8.06366,-5.71299 2.18456,3.44058 c 2.68056,-1.69317 5.45465,-3.26477 8.28849,-4.70804 l -1.83198,-3.63506 c 0,0 -1.23014,0.81028 -3.12576,0.48694 -0.9478,-0.16168 -1.15419,-1.04724 -1.19964,-2.07681 -0.0455,-1.02957 0.0757,-2.19885 -0.29497,-2.90037 -0.74143,-1.40305 -2.80811,-1.9795 -4.28285,-1.14524 -1.47475,0.83425 -2.03955,2.91575 -1.22237,4.26242 0.4086,0.67333 1.45042,1.17106 2.29949,1.74062 0.84908,0.56956 1.50485,1.20432 1.20582,2.1004 -0.59807,1.79216 -2.02079,2.43456 -2.02079,2.43456 z m 8.64107,-4.90252 1.83198,3.63506 c 2.83383,-1.44327 5.7274,-2.75821 8.64692,-3.93805 l -1.46315,-3.74844 c 0,0 -1.28528,0.68891 -3.12588,0.19291 -0.9203,-0.248 -1.04045,-1.14347 -0.98786,-2.16384 0.0526,-1.02037 0.28255,-2.16043 -0.017,-2.88719 -0.59906,-1.45351 -2.58395,-2.22717 -4.12292,-1.55433 -1.53896,0.67285 -2.30144,2.67235 -1.62172,4.08788 0.33986,0.70777 1.32486,1.30458 2.11134,1.95158 0.78649,0.64701 1.37517,1.33792 0.99212,2.19839 -0.7661,1.72094 -2.24385,2.22603 -2.24385,2.22603 z m 9.01575,-4.05143 1.46315,3.74844 c 0.9122,-0.36864 1.82693,-0.72409 2.74316,-1.06615 1.86737,-0.68365 3.80592,-1.22817 5.79998,-1.66033 l -0.85388,-3.9 c 0,0 -1.32587,0.45444 -3.04394,-0.27892 -0.85903,-0.36667 -0.87209,-1.25312 -0.6851,-2.24619 0.18698,-0.99307 0.582,-2.08314 0.38981,-2.83614 -0.19219,-0.75301 -0.75062,-1.38453 -1.48495,-1.75887 -0.73433,-0.37433 -1.64489,-0.48872 -2.48294,-0.22738 -0.73643,0.22966 -1.35872,0.73394 -1.76459,1.34881 -0.47909,0.76656 -0.63209,1.71543 -0.3316,2.53006 0.28765,0.77983 1.3161,1.50571 2.04471,2.2697 0,0 0,0 1e-5,0 0.5881,0.61315 0.97396,1.25177 0.69175,1.93815 -0.0214,0.0509 -0.0464,0.10216 -0.0754,0.15375 -0.91021,1.61936 -2.41014,1.98507 -2.41014,1.98507 z m 9.15241,-2.87804 0.85388,3.9 c 2.90023,-0.62854 5.91785,-1.0194 9.00461,-1.25495 l -0.30698,-3.99535 c 0,0 -1.41227,0.27098 -3.014,-0.72213 -0.80086,-0.49656 -0.66805,-1.37761 -0.33041,-2.33277 0.33763,-0.95516 0.88465,-1.9769 0.80665,-2.75298 -0.078,-0.77608 -0.52945,-1.48644 -1.18246,-1.97152 -0.65301,-0.48507 -1.50825,-0.74274 -2.35114,-0.62215 -0.84289,0.12059 -1.59942,0.61212 -2.09752,1.26332 -0.4981,0.6512 -0.73737,1.45964 -0.59662,2.21842 0.14075,0.75879 0.9303,1.57511 1.50829,2.39458 0.578,0.81948 0.9476,1.63261 0.36386,2.34583 -1.16748,1.42645 -2.65816,1.5297 -2.65816,1.5297 z m 9.55151,-1.3503 0.30698,3.99535 c 1.64468,-0.12551 3.30898,-0.20692 4.9856,-0.2567 1.48244,-0.0361 2.98436,-0.0459 4.50548,-0.043 l 0.006,-4.00062 c 0,0 -1.46849,0.16033 -2.97704,-0.9852 -0.75428,-0.57276 -0.52444,-1.43612 -0.0959,-2.35157 0.42852,-0.91546 1.05662,-1.87946 1.05092,-2.65837 -0.0106,-1.44793 -1.30053,-2.78914 -2.80191,-2.93638 0,0 0,0 0,0 -0.11479,-0.0117 -0.23066,-0.0165 -0.34705,-0.0139 -1.65022,0.0368 -3.10489,1.57568 -3.01939,3.12112 0.0428,0.77273 0.71563,1.68675 1.18802,2.57301 0.47239,0.88627 0.74766,1.73885 0.0739,2.37764 -1.34742,1.27759 -2.8756,1.17864 -2.8756,1.17864 z m 9.80402,-0.30501 -0.006,4.00062 c 3.25594,0.006 6.59983,0.0704 10.02883,0.0589 l -0.0109,-3.99942 c 0,0 -1.51341,0.16772 -3.01727,-1.00765 -1.50386,-1.17537 1.0194,-3.43666 1.02649,-4.99453 0.007,-1.55787 -1.39726,-3.009 -2.95509,-3.02403 -1.55784,-0.015 -3.02631,1.42844 -3.03724,2.97405 -0.0109,1.54561 2.3935,3.80839 0.96248,5.00912 -1.43101,1.20073 -2.99137,0.98299 -2.99137,0.98299 z m 10.012,0.0601 0.0109,3.99942 c 2.33279,-0.008 4.70498,-0.0508 7.11565,-0.17102 1.14455,-0.0536 2.2937,-0.13093 3.44548,-0.23406 l -0.36221,-3.98974 c 0,0 -1.54639,0.30263 -3.14071,-0.77989 -0.0798,-0.0541 -0.1493,-0.11172 -0.20948,-0.17237 -0.47679,-0.48126 -0.36754,-1.1536 -0.097,-1.88084 0,0 0,0 0,0 0.37619,-1.01237 1.05122,-2.13975 0.99468,-2.99975 -0.0594,-0.9031 -0.57388,-1.73488 -1.26609,-2.26358 -0.50528,-0.38328 -1.10917,-0.60955 -1.72768,-0.58752 -1.47447,0.0525 -2.83745,1.52115 -2.81706,3.06577 0.0102,0.77231 0.6188,1.71044 1.06181,2.60673 0.44301,0.89628 0.71971,1.75443 0.0134,2.37462 -1.41266,1.24039 -3.02164,1.03223 -3.02164,1.03223 z m 10.20979,-0.3954 0.36221,3.98974 c 3.60283,-0.32262 7.23149,-0.89785 10.82639,-1.79 l -0.95271,-3.87989 c 0,0 -1.50311,0.53905 -3.2394,-0.31083 -0.86815,-0.42495 -0.76283,-1.3231 -0.5098,-2.29806 0.25303,-0.97497 0.64585,-2.03468 0.48574,-2.79669 -0.16012,-0.76202 -0.64159,-1.42646 -1.24413,-1.87632 -0.60253,-0.44986 -1.32725,-0.68653 -2.02397,-0.57588 -0.69671,0.11064 -1.31686,0.56453 -1.75245,1.18325 -0.4356,0.61872 -0.68565,1.40339 -0.59526,2.172 0.0904,0.7686 0.78338,1.64105 1.32175,2.48447 0.53837,0.84341 0.91976,1.66559 0.27781,2.3629 -1.2839,1.39463 -2.95618,1.33531 -2.95618,1.33531 z m 10.23589,-1.68015 0.95271,3.87989 c 3.25188,-0.80703 6.47613,-1.87338 9.62866,-3.24666 0.32875,-0.14834 0.65565,-0.29946 0.9807,-0.45327 l -1.68908,-3.6213 c 0,0 -0.34546,0.21082 -0.93849,0.35612 -0.5821,0.13971 -1.40098,0.21202 -2.32493,-0.0437 -0.93467,-0.25873 -0.98707,-1.16086 -0.91702,-2.1634 0.07,-1.00255 0.25116,-2.11463 -0.048,-2.83297 -0.29915,-0.71835 -0.88822,-1.28159 -1.54667,-1.61614 -0.65845,-0.33455 -1.38785,-0.44232 -2.02958,-0.21948 -0.64172,0.22284 -1.15295,0.76496 -1.46712,1.43966 -0.31417,0.67469 -0.42982,1.48356 -0.21941,2.22543 0.21042,0.74187 1.02354,1.49235 1.68831,2.23425 0.66476,0.74191 1.17972,1.48622 0.65735,2.27744 -1.04474,1.58243 -2.72745,1.78417 -2.72745,1.78417 z m 9.87299,-3.44134 1.68908,3.6213 c 3.40661,-1.61202 6.61036,-3.52091 9.61469,-5.65655 l -2.3228,-3.24799 c 0,0 -1.19713,1.055 -3.12299,0.90806 -0.96293,-0.0735 -1.19337,-0.94495 -1.3187,-1.9412 -0.12533,-0.99624 -0.15563,-2.12336 -0.58588,-2.77023 -0.43025,-0.64687 -1.12075,-1.08367 -1.83907,-1.27937 -0.71831,-0.19569 -1.46486,-0.15221 -2.05475,0.19613 -0.5899,0.34834 -0.9827,0.98101 -1.15472,1.70314 -0.17202,0.72213 -0.1227,1.53587 0.23064,2.2208 0.35334,0.68493 1.29756,1.25945 2.09623,1.85355 0.79868,0.5941 1.4517,1.21983 1.09753,2.09904 -0.70835,1.7584 -2.32926,2.29332 -2.32926,2.29332 z m 8.98097,-5.28324 2.3228,3.24799 c 3.00434,-2.13564 5.80926,-4.49802 8.41821,-7.017 l -2.78819,-2.88295 c 0,0 -1.01759,1.21236 -2.94569,1.36636 -0.96404,0.077 -1.33475,-0.74721 -1.61636,-1.7166 -0.28162,-0.9694 -0.48269,-2.08755 -1.01012,-2.66302 -1.05485,-1.15093 -2.99586,-1.32431 -4.07423,-0.41097 -0.53919,0.45668 -0.83207,1.16406 -0.88428,1.91629 -0.0522,0.75223 0.13674,1.55091 0.60599,2.16405 0.46924,0.61314 1.50541,1.00891 2.39786,1.4567 0.89245,0.44779 1.64216,0.95724 1.44684,1.88372 -0.39064,1.85297 -1.87283,2.65543 -1.87283,2.65543 z"
- id="path2992"
- inkscape:connector-curvature="0"
- inkscape:path-effect="#path-effect3762"
- inkscape:original-d="m 284.69306,387.11435 c 3.32015,-23.03245 21.64767,-45.22652 54.77744,-57.05108 29.53536,-10.54165 56.87023,9.24678 87.10615,-25.68985"
- sodipodi:nodetypes="csc" />
- <text
- xml:space="preserve"
- style="font-size:5.83659029px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="461.30307"
- y="61.904903"
- id="text3789"
- transform="matrix(0.81460626,0.59292254,-0.625247,0.77249217,0,0)"><tspan
- sodipodi:role="line"
- id="tspan3791"
- x="461.30307"
- y="61.904903">TikZ this$\rightarrow$</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.5;color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
- x="397.90738"
- y="345.14746"
- id="text2966"><tspan
- sodipodi:role="line"
- id="tspan2968"
- x="397.90738"
- y="345.14746">transparent</tspan></text>
- </g>
-</svg>
diff --git a/Master/texmf-dist/doc/latex/svg/preamble.tex b/Master/texmf-dist/doc/latex/svg/preamble.tex
deleted file mode 100644
index 5f6749ab28d..00000000000
--- a/Master/texmf-dist/doc/latex/svg/preamble.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-\documentclass{article}
-\usepackage{svg}
-\usepackage{transparent}
-\usepackage{xcolor}
-\usepackage{relsize}
-\begin{document}
-
-There can be additional things after the preamble, but they don't matter! \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/svg/root.C b/Master/texmf-dist/doc/latex/svg/root.C
index 3575ff754ec..495fb60dc17 100644
--- a/Master/texmf-dist/doc/latex/svg/root.C
+++ b/Master/texmf-dist/doc/latex/svg/root.C
@@ -23,4 +23,5 @@ void root() {
// Print the plot.
gPad->Print("root.svg");
+
}
diff --git a/Master/texmf-dist/doc/latex/svg/root.pdf b/Master/texmf-dist/doc/latex/svg/root.pdf
deleted file mode 100644
index 2dcd5a5e830..00000000000
--- a/Master/texmf-dist/doc/latex/svg/root.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svg/root.pdf_tex b/Master/texmf-dist/doc/latex/svg/root.pdf_tex
deleted file mode 100644
index 8d2aae87048..00000000000
--- a/Master/texmf-dist/doc/latex/svg/root.pdf_tex
+++ /dev/null
@@ -1,49 +0,0 @@
-\begingroup
- \makeatletter
- \providecommand\color[2][]{%
- \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}
- \renewcommand\color[2][]{}%
- }
- \providecommand\transparent[1]{%
- \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}
- \renewcommand\transparent[1]{}%
- }
- \providecommand\rotatebox[2]{#2}
- \ifx\svgwidth\undefined
- \setlength{\unitlength}{453.6pt}
- \else
- \setlength{\unitlength}{\svgwidth}
- \fi
- \global\let\svgwidth\undefined
- \makeatother
- \begin{picture}(1,0.67724868)%
- \put(0,0){\includegraphics[width=\unitlength]{root.pdf}}%
- \put(0.67372134,0.02645503){\color[rgb]{0,0,0}\rotatebox{9}{\makebox(0,0)[b]{\smash{\larger[2]$x$}}}}%
- \put(0.4021164,0.0335097){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{0}}}%
- \put(0.46560847,0.04585538){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{0.5}}}%
- \put(0.5308642,0.05643739){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{1}}}%
- \put(0.59611993,0.0670194){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{1.5}}}%
- \put(0.66137566,0.07936508){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{2}}}%
- \put(0.72663139,0.08994709){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{2.5}}}%
- \put(0.79188713,0.10229277){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{3}}}%
- \put(0.85714286,0.11287478){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{3.5}}}%
- \put(0.17813051,0.07231041){\color[rgb]{0,0,0}\rotatebox{-27}{\makebox(0,0)[b]{\smash{\larger[2]$y$}}}}%
- \put(0.37213404,0.03880071){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{0}}}%
- \put(0.33333333,0.05820106){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{0.5}}}%
- \put(0.2962963,0.07760141){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{1}}}%
- \put(0.25925926,0.09700176){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{1.5}}}%
- \put(0.22222222,0.11640212){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{2}}}%
- \put(0.18342152,0.13580247){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{2.5}}}%
- \put(0.14638448,0.15520282){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{3}}}%
- \put(0.10934744,0.17460317){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{3.5}}}%
- \put(0.08465608,0.20811287){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{0}}}%
- \put(0.08465608,0.25220459){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{20}}}%
- \put(0.08465608,0.29453263){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{40}}}%
- \put(0.08465608,0.33686067){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{60}}}%
- \put(0.08465608,0.37918871){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{80}}}%
- \put(0.08465608,0.42151675){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{100}}}%
- \put(0.08465608,0.46560847){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{120}}}%
- \put(0.08465608,0.50793651){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{140}}}%
- \put(0.85537919,0.61199295){\color[rgb]{0,0,0}\makebox(0,0)[rb]{\smash{\larger[2]$z(x,y) = \frac{1}{\sigma_x\sigma_y\sqrt{4\pi^2}}\exp\left(- \left(\frac{(x-\mu_x)^2}{2\sigma_x^2} + \frac{(y-\mu_y)^2}{2\sigma_y^2} \right)\right)$}}}%
- \end{picture}%
-\endgroup
diff --git a/Master/texmf-dist/doc/latex/svg/svg-example.svg b/Master/texmf-dist/doc/latex/svg/svg-example.svg
new file mode 100644
index 00000000000..1a044b86f7e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/svg/svg-example.svg
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="svg-example.svg">
+ <defs
+ id="defs4">
+ <inkscape:path-effect
+ fuse_tolerance="0"
+ vertical_pattern="false"
+ prop_units="false"
+ tang_offset="0"
+ normal_offset="0"
+ spacing="0"
+ scale_y_rel="false"
+ prop_scale="1"
+ copytype="repeated"
+ pattern="m -74.185426,32.029694 0,4 10,0 0,-4 c 0,0 -1.49278,0.16485 -3,-1 -1.50722,-1.16485 1,-3.4422 1,-4.99999 0,-1.55779 -1.43824,-3.00001 -3,-3.00001 -1.56176,0 -3,1.45475 -3,3 0,1.54525 2.42269,3.78723 1,5 -1.42269,1.21277 -3,1 -3,1 z"
+ is_visible="true"
+ id="path-effect3783"
+ effect="skeletal" />
+ <inkscape:path-effect
+ effect="skeletal"
+ id="path-effect3762"
+ is_visible="true"
+ pattern="m -12.836336,43.184604 0,4 10,0 0,-4 c 0,0 -1.49278,0.16485 -3,-1 -1.50722,-1.16485 1,-3.4422 1,-4.99999 0,-1.55779 -1.43824,-3.00001 -3,-3.00001 -1.56176,0 -3,1.45475 -3,3 0,1.54525 2.42269,3.78723 1,5 -1.42269,1.21277 -3,1 -3,1 z"
+ copytype="repeated"
+ prop_scale="1"
+ scale_y_rel="false"
+ spacing="0"
+ normal_offset="0"
+ tang_offset="0"
+ prop_units="false"
+ vertical_pattern="false"
+ fuse_tolerance="0" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2926" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="3.0835719"
+ inkscape:cx="476.83032"
+ inkscape:cy="630.19665"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:snap-bbox="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1600"
+ inkscape:window-height="838"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:object-paths="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-global="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="310.11683,846.00276"
+ id="guide2945" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="204.55589,766.20071"
+ id="guide2947" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="469.21586,740.44182"
+ id="guide2951" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid2988" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 444.46712,321.01174 c -11.72773,26.21816 -37.36987,49.4917 -54.54824,66.67007"
+ id="path2913"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:0.5;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="rect2968"
+ width="70.454422"
+ height="52.465542"
+ x="326.03821"
+ y="356.24725" />
+ <path
+ style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 294.91757,241.60997 c 10.03604,35.83378 -43.91797,48.61968 -31.06556,92.81028"
+ id="path2907"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="g3785"
+ transform="matrix(0.5,-0.8660254,0.8660254,0.5,7.8960431,472.90755)">
+ <text
+ id="text2919"
+ y="-241.42493"
+ x="366.52673"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:black;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
+ xml:space="preserve"
+ transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"><tspan
+ y="-241.42493"
+ x="366.52673"
+ id="tspan2921"
+ sodipodi:role="line">Ink<tspan
+ style="font-style:italic;-inkscape-font-specification:'Times New Roman, Italic'"
+ id="tspan136">scape</tspan></tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:red;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
+ x="427.6752"
+ y="374.1954"
+ id="text2923"><tspan
+ sodipodi:role="line"
+ id="tspan2925"
+ x="427.6752"
+ y="374.1954">red</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:black;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
+ x="-129.68274"
+ y="426.89032"
+ id="text2935"
+ transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan2937"
+ x="-129.68274"
+ y="426.89032">45 graden</tspan></text>
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:1.05305266"
+ id="rect2943"
+ width="264.60693"
+ height="215.90314"
+ x="204.58241"
+ y="218.24399" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.09581709px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:black;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="389.58279"
+ y="252.77005"
+ id="text2937"><tspan
+ sodipodi:role="line"
+ id="tspan2939"
+ x="389.58279"
+ y="252.77005">$\lim_{n \to \infty}\sum_{k=1}^n \frac{1}{k^2}$</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="234.35539"
+ y="229.59294"
+ id="text2949"><tspan
+ sodipodi:role="line"
+ id="tspan2951"
+ x="234.35539"
+ y="229.59294">I am figure \ref{fig:example-tex}</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="421.10733"
+ y="285.06882"
+ id="text2959"><tspan
+ sodipodi:role="line"
+ id="tspan2961"
+ x="421.10733"
+ y="285.06882">ooo</tspan></text>
+ <path
+ style="fill:none;stroke:black"
+ d="m 421.10734,265.71894 0,31.49638"
+ id="path2963"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot2951"
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6px;line-height:normal;font-family:Arial;-inkscape-font-specification:Arial;text-indent:0;text-align:justify;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;enable-background:accumulate"
+ transform="translate(5.1678276,38.561474)"><flowRegion
+ id="flowRegion2953"><rect
+ id="rect2955"
+ width="73.170059"
+ height="56.627949"
+ x="320.87039"
+ y="317.68579"
+ style="font-size:6px;text-align:justify;text-anchor:start" /></flowRegion><flowPara
+ style="font-size:6px;text-align:start;text-anchor:start"
+ id="flowPara2969">\tiny Flowed text also works. This is a test text to see that it <flowSpan
+ style="font-weight:bold;-inkscape-font-specification:'Arial Bold';text-align:start;text-anchor:start"
+ id="flowSpan138">does</flowSpan> work.</flowPara><flowPara
+ style="font-size:6px;text-align:start;text-anchor:start"
+ id="flowPara3407">But, only for rectangular flow shapes.</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:19.38392448px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:none;stroke:blue;stroke-width:1.21140051px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="410.70099"
+ y="398.18344"
+ id="text2963"><tspan
+ sodipodi:role="line"
+ id="tspan2965"
+ x="410.70099"
+ y="398.18344"
+ style="stroke-width:1.21140051">blue</tspan></text>
+ <text
+ id="text2967"
+ y="384.80203"
+ x="421.26752"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:lime;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="384.80203"
+ x="421.26752"
+ id="tspan2969"
+ sodipodi:role="line">green</tspan></text>
+ <rect
+ style="fill:#666;stroke:none"
+ id="rect2930"
+ width="87.301743"
+ height="5.1525674"
+ x="233.0554"
+ y="400.95963" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.62269783px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Adobe Garamond Pro;-inkscape-font-specification:Adobe Garamond Pro"
+ x="233.0554"
+ y="400.95963"
+ id="text2952"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan2954"
+ x="233.0554"
+ y="400.95963">aligned on baseline</tspan></text>
+ <g
+ id="g2967"
+ transform="translate(70.236115,-35.574136)">
+ <rect
+ style="fill:#b3b3b3;stroke:none"
+ id="rect2965"
+ width="35.308773"
+ height="93.175751"
+ x="146.40045"
+ y="281.01093" />
+ <text
+ transform="matrix(0,1,-1,0,0,0)"
+ id="text2950"
+ y="-146.40045"
+ x="296.61298"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:black;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
+ xml:space="preserve"><tspan
+ y="-146.40045"
+ x="296.61298"
+ id="tspan2952"
+ sodipodi:role="line">90 degrees</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:black;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
+ x="-348.66278"
+ y="181.70923"
+ id="text2946"
+ transform="matrix(0,-1,1,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan2948"
+ x="-348.66278"
+ y="181.70923">90 degrees</tspan></text>
+ </g>
+ <text
+ id="text2968"
+ y="274.91016"
+ x="421.10733"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="274.91016"
+ x="421.10733"
+ id="tspan2970"
+ sodipodi:role="line">ooo</tspan></text>
+ <text
+ id="text2972"
+ y="294.25998"
+ x="421.10733"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="294.25998"
+ x="421.10733"
+ id="tspan2974"
+ sodipodi:role="line">ooo</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="340.69077"
+ y="271.55551"
+ id="text2976"><tspan
+ sodipodi:role="line"
+ id="tspan2978"
+ x="340.69077"
+ y="271.55551">$x$</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="352.5488"
+ y="277.02844"
+ id="text2980"><tspan
+ sodipodi:role="line"
+ id="tspan2982"
+ x="352.5488"
+ y="277.02844">$y$</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="365.319"
+ y="283.86963"
+ id="text2984"><tspan
+ sodipodi:role="line"
+ id="tspan2986"
+ x="365.319"
+ y="283.86963">$z$</tspan></text>
+ <path
+ style="fill:none;stroke:black;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 287.16748,387.47104 3.95908,0.57071 c 0.34178,-2.90837 0.97982,-5.73577 1.88034,-8.47543 l -3.70392,-1.25175 c 0,0 -0.29405,1.35279 -1.76248,2.42101 -1.58318,1.15169 -2.91807,-1.86761 -4.43276,-2.32007 -1.46135,-0.43652 -3.27511,0.62227 -3.70951,2.33082 -0.4345,1.70896 0.67715,3.49962 2.19531,3.77666 1.59753,0.29153 4.08657,-1.75143 5.0644,-0.0562 0.90203,1.56384 0.50954,3.0042 0.50954,3.0042 z m 2.1355,-9.15647 3.70392,1.25175 c 0.90052,-2.73966 2.06352,-5.39159 3.45521,-7.94901 l -3.43252,-1.85171 c 0,0 -0.52612,1.28365 -2.1519,2.07843 -1.74205,0.85161 -2.5316,-2.32309 -3.94313,-3.02649 -1.36025,-0.67785 -3.29432,0.0505 -3.98756,1.62986 -0.69385,1.58075 0.0904,3.50645 1.50409,4.04012 1.47536,0.55695 4.26554,-0.96763 4.90598,0.83666 0.59425,1.67417 -0.0541,2.99039 -0.0541,2.99039 z m 3.72661,-8.54897 3.43252,1.85171 c 1.39169,-2.55743 3.01207,-5.02035 4.82734,-7.38201 l -3.14489,-2.37057 c 0,0 -0.72798,1.20609 -2.47643,1.74394 -1.85974,0.57208 -2.15732,-2.70777 -3.45347,-3.62748 -1.25098,-0.88767 -3.27405,-0.46622 -4.19262,0.97755 -0.91965,1.44547 -0.44332,3.47234 0.86151,4.23058 1.35157,0.7854 4.3754,-0.24512 4.70699,1.63215 0.31007,1.75542 -0.56095,2.94413 -0.56095,2.94413 z m 5.11497,-7.90087 3.14489,2.37057 c 1.81528,-2.36165 3.82546,-4.62205 5.99674,-6.7744 l -2.84102,-2.80834 c 0,0 -0.90014,1.12003 -2.73608,1.41754 -1.93893,0.31421 -1.79256,-3.02275 -2.96379,-4.12305 -1.13399,-1.06531 -3.21385,-0.92853 -4.32469,0.3739 -1.11217,1.30399 -0.92374,3.39641 0.26759,4.34804 1.22691,0.98004 4.41533,0.41289 4.46742,2.33033 0.0491,1.80711 -1.01106,2.86541 -1.01106,2.86541 z m 6.30061,-7.21217 2.84102,2.80834 c 2.17128,-2.15236 4.50368,-4.19669 6.96339,-6.12621 l -2.52091,-3.16501 c 0,0 -1.04291,1.02524 -2.93085,1.09924 -1.98181,0.0777 -1.43512,-3.26775 -2.47409,-4.51318 -1.00984,-1.21051 -3.11313,-1.33675 -4.38374,-0.18113 -1.27191,1.1568 -1.35037,3.27819 -0.27771,4.3925 1.1006,1.14332 4.38617,1.00402 4.18729,2.9312 -0.18873,1.82878 -1.4044,2.75425 -1.4044,2.75425 z m 7.2835,-6.48288 2.52091,3.16501 c 2.45971,-1.92953 5.04675,-3.74426 7.72731,-5.43742 l -2.18456,-3.44058 c 0,0 -1.15641,0.92146 -3.06075,0.78904 -1.98975,-0.13836 -1.08362,-3.4419 -1.98436,-4.7979 -0.87899,-1.32326 -2.97145,-1.69082 -4.3698,-0.68751 -1.39936,1.00405 -1.7227,3.11753 -0.77436,4.36396 0.97126,1.27655 4.28929,1.52693 3.86659,3.43477 -0.40326,1.82011 -1.74098,2.61063 -1.74098,2.61063 z m 8.06366,-5.71299 2.18456,3.44058 c 2.68056,-1.69317 5.45465,-3.26477 8.28849,-4.70804 l -1.83198,-3.63506 c 0,0 -1.24064,0.80848 -3.12576,0.48694 -1.9635,-0.33492 -0.73734,-3.54417 -1.49461,-4.97718 -0.74179,-1.40374 -2.78845,-1.99062 -4.28285,-1.14524 -1.49494,0.84568 -2.04034,2.91445 -1.22237,4.26242 0.83755,1.38021 4.12599,1.9811 3.50531,3.84102 -0.59432,1.78091 -2.02079,2.43456 -2.02079,2.43456 z m 8.64107,-4.90252 1.83198,3.63506 c 2.83383,-1.44327 5.7274,-2.75821 8.64692,-3.93805 l -1.46315,-3.74844 c 0,0 -1.2956,0.68613 -3.12588,0.19291 -1.90338,-0.51291 -0.39596,-3.57366 -1.00484,-5.05103 -0.59849,-1.45212 -2.56392,-2.23593 -4.12292,-1.55433 -1.5589,0.68156 -2.30299,2.66912 -1.62172,4.08788 0.69838,1.45438 3.89739,2.36651 3.10346,4.14997 -0.76173,1.7111 -2.24385,2.22603 -2.24385,2.22603 z m 9.01575,-4.05143 1.46315,3.74844 c 0.9122,-0.36864 1.82693,-0.72409 2.74316,-1.06615 1.86737,-0.68365 3.80592,-1.22817 5.79998,-1.66033 l -0.85388,-3.9 c 0,0 -1.34391,0.44674 -3.04394,-0.27892 -1.83377,-0.78274 0.10525,-3.51299 -0.29529,-5.08233 -0.38465,-1.50706 -2.2526,-2.52116 -3.96789,-1.98625 -0.73853,0.23032 -1.3581,0.73301 -1.76459,1.34881 -0.48048,0.76879 -0.63262,1.71399 -0.3316,2.53006 0.28358,0.7688 1.32455,1.51457 2.04471,2.2697 0,0 1e-5,0 1e-5,0 0.59065,0.61581 0.97421,1.25117 0.69175,1.93815 -0.0214,0.0509 -0.0464,0.10216 -0.0754,0.15375 -0.90532,1.61066 -2.41014,1.98507 -2.41014,1.98507 z m 9.15241,-2.87804 0.85388,3.9 c 2.90023,-0.62854 5.91785,-1.0194 9.00461,-1.25495 l -0.30698,-3.99535 c 0,0 -1.42351,0.26401 -3.014,-0.72213 -1.67689,-1.03972 0.63704,-3.48575 0.47624,-5.08575 -0.15616,-1.55388 -1.81919,-2.83894 -3.5336,-2.59367 -1.71934,0.24597 -2.97599,1.9623 -2.69414,3.48174 0.29176,1.57291 3.1063,3.23251 1.87215,4.74041 -1.15614,1.4126 -2.65816,1.5297 -2.65816,1.5297 z m 9.55151,-1.3503 0.30698,3.99535 c 1.64468,-0.12551 3.30898,-0.20692 4.9856,-0.2567 1.48244,-0.0361 2.98436,-0.0459 4.50548,-0.043 l 0.006,-4.00062 c 0,0 -1.47352,0.15651 -2.97704,-0.9852 -1.54067,-1.16991 0.96655,-3.43097 0.955,-5.00994 -0.0106,-1.44859 -1.29117,-2.78822 -2.80191,-2.93638 0,0 0,0 0,0 -0.11479,-0.0117 -0.23066,-0.0165 -0.34705,-0.0139 -1.67229,0.0373 -3.10506,1.57259 -3.01939,3.12112 0.0877,1.58573 2.65965,3.62541 1.26197,4.95065 -1.33939,1.26997 -2.8756,1.17864 -2.8756,1.17864 z m 9.80402,-0.30501 -0.006,4.00062 c 3.25594,0.006 6.59983,0.0704 10.02883,0.0589 l -0.0109,-3.99942 c 0,0 -1.51139,0.1693 -3.01727,-1.00765 -1.49142,-1.16565 1.01944,-3.44524 1.02649,-4.99453 0.007,-1.55602 -1.40167,-3.00904 -2.95509,-3.02403 -1.56047,-0.015 -3.0263,1.42698 -3.03724,2.97405 -0.011,1.55098 2.40111,3.802 0.96248,5.00912 -1.42974,1.19967 -2.99137,0.98299 -2.99137,0.98299 z m 10.012,0.0601 0.0109,3.99942 c 2.33279,-0.008 4.70498,-0.0508 7.11565,-0.17102 1.14455,-0.0536 2.2937,-0.13093 3.44548,-0.23406 l -0.36221,-3.98974 c 0,0 -1.53462,0.31063 -3.14071,-0.77989 -0.0798,-0.0541 -0.1493,-0.11173 -0.20948,-0.17237 -0.47657,-0.48104 -0.36706,-1.15489 -0.097,-1.88084 0,0 0,0 0,0 0.38219,-1.02851 1.05241,-2.12169 0.99468,-2.99975 -0.0592,-0.90087 -0.5771,-1.73734 -1.26609,-2.26358 -0.50494,-0.38301 -1.10986,-0.60953 -1.72768,-0.58752 -1.45903,0.052 -2.83745,1.52144 -2.81706,3.06577 0.0201,1.51927 2.45302,3.77155 1.07518,4.98135 -1.41872,1.24571 -3.02164,1.03223 -3.02164,1.03223 z m 10.20979,-0.3954 0.36221,3.98974 c 3.60283,-0.32262 7.23149,-0.89785 10.82639,-1.79 l -0.95271,-3.87989 c 0,0 -1.48664,0.54711 -3.2394,-0.31083 -1.63527,-0.80044 0.28382,-3.62948 -0.0241,-5.09475 -0.31899,-1.51812 -1.90931,-2.66799 -3.2681,-2.4522 -1.36245,0.21637 -2.5282,1.82055 -2.34771,3.35525 0.17457,1.48443 2.81692,3.52502 1.59956,4.84737 -1.29605,1.40782 -2.95618,1.33531 -2.95618,1.33531 z m 10.23589,-1.68015 0.95271,3.87989 c 3.25188,-0.80703 6.47613,-1.87338 9.62866,-3.24666 0.32875,-0.14834 0.65565,-0.29946 0.9807,-0.45327 l -1.68908,-3.6213 c 0,0 -0.34462,0.21061 -0.93849,0.35612 -0.58276,0.13987 -1.39874,0.21264 -2.32493,-0.0437 -1.7299,-0.47886 -0.39382,-3.62475 -0.965,-4.99637 -0.59617,-1.43161 -2.33621,-2.26622 -3.57625,-1.83562 -1.24395,0.43197 -2.10619,2.18542 -1.68653,3.66509 0.40166,1.41614 3.31861,3.03797 2.34566,4.51169 -1.05757,1.60188 -2.72745,1.78417 -2.72745,1.78417 z m 9.87299,-3.44134 1.68908,3.6213 c 3.40661,-1.61202 6.61036,-3.52091 9.61469,-5.65655 l -2.3228,-3.24799 c 0,0 -1.17704,1.05653 -3.12299,0.90806 -1.80386,-0.13764 -1.07782,-3.46841 -1.90458,-4.71143 -0.85841,-1.2906 -2.74783,-1.75996 -3.89382,-1.08324 -1.14291,0.6749 -1.62832,2.55882 -0.92408,3.92394 0.67369,1.30591 3.85168,2.31935 3.19376,3.95259 -0.71732,1.78067 -2.32926,2.29332 -2.32926,2.29332 z m 8.98097,-5.28324 2.3228,3.24799 c 3.00434,-2.13564 5.80926,-4.49802 8.41821,-7.017 l -2.78819,-2.88295 c 0,0 -1.00126,1.21105 -2.94569,1.36636 -1.83085,0.14624 -1.60397,-3.26397 -2.62648,-4.37962 -1.05337,-1.14933 -3.01968,-1.30413 -4.07423,-0.41097 -1.05218,0.89117 -1.21314,2.85882 -0.27829,4.08034 0.90006,1.17607 4.21267,1.59499 3.8447,3.34042 -0.39463,1.87193 -1.87283,2.65543 -1.87283,2.65543 z"
+ id="path2992"
+ inkscape:connector-curvature="0"
+ inkscape:path-effect="#path-effect3762"
+ inkscape:original-d="m 284.69306,387.11435 c 3.32015,-23.03245 21.64767,-45.22652 54.77744,-57.05108 29.53536,-10.54165 56.87023,9.24678 87.10615,-25.68985"
+ sodipodi:nodetypes="csc" />
+ <text
+ xml:space="preserve"
+ style="font-size:5.83659029px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
+ x="461.30307"
+ y="61.904903"
+ id="text3789"
+ transform="matrix(0.81460626,0.59292254,-0.625247,0.77249217,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan3791"
+ x="461.30307"
+ y="61.904903">TikZ this$\rightarrow$</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial;opacity:0.50000000000000000;fill:blue"
+ x="397.90738"
+ y="345.14746"
+ id="text2966"><tspan
+ sodipodi:role="line"
+ id="tspan2968"
+ x="397.90738"
+ y="345.14746">transparent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="640.83459"
+ y="352.96124"
+ id="text3393"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3395"
+ x="640.83459"
+ y="352.96124" /></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3395"
+ style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+ id="flowRegion3397"><rect
+ id="rect3399"
+ width="66.080772"
+ height="59.586147"
+ x="323.64212"
+ y="353.28906" /></flowRegion><flowPara
+ id="flowPara3401" /></flowRoot> </g>
+</svg>
diff --git a/Master/texmf-dist/doc/latex/svg/svg-preamble.tex b/Master/texmf-dist/doc/latex/svg/svg-preamble.tex
new file mode 100644
index 00000000000..ca93825142d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/svg/svg-preamble.tex
@@ -0,0 +1,10 @@
+\documentclass{scrartcl}
+\usepackage{ifxetex}
+\usepackage{ifluatex}
+\ifxetex\else\ifluatex\else
+\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
+\usepackage[T1]{fontenc}
+\fi\fi
+\usepackage{svg}
+\usepackage{relsize}
+\usepackage{hyperref}
diff --git a/Master/texmf-dist/doc/latex/svg/svg.pdf b/Master/texmf-dist/doc/latex/svg/svg.pdf
index 212c26d493f..5d21d319c7e 100644
--- a/Master/texmf-dist/doc/latex/svg/svg.pdf
+++ b/Master/texmf-dist/doc/latex/svg/svg.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/svg/svg.dtx b/Master/texmf-dist/source/latex/svg/svg.dtx
index 09aa510a2d4..8b3aa643cca 100644
--- a/Master/texmf-dist/source/latex/svg/svg.dtx
+++ b/Master/texmf-dist/source/latex/svg/svg.dtx
@@ -1,92 +1,96 @@
+% \CheckSum{3474}
% \iffalse meta-comment
%
-% The svg package by Philip Ilten.
-%
-% To extract package files and create documentation:
-%
-% pdflatex -shell-escape svg.dtx
-%
-% Please note that Inkscape generates TeX files with comments, and
-% since this document is generated using docstrip which interprets
-% comments, special versions of example.pdf_tex and root.pdf_tex have
-% been provided with the comments removed. This package will fail to
-% compile when example.pdf/example.pdf_tex has an older modification
-% date than example.svg and root.pdf/root.pdf_tex has an older
-% modification date than root.svg as this package will generate new
-% versions of example.pdf_tex and root.pdf_tex with comments.
-%
-% To finish the installation move the following file into a directory
-% searched by LaTeX:
-%
-% svg.sty
-%
-%% -------------------------------------------------------
-%% Copyright (C) 2012 by Philip Ilten <philten@cern.ch>
-%% -------------------------------------------------------
-%%
-%% This file may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Philip Ilten.
-%%
-%% This work consists of the files README, svg.dtx (with derived files
-%% svg.sty, svg.pdf, Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png),
-%% preamble.tex, example.svg (with derived files example.pdf and
-%% example.pdf_tex), and root.C (with derived files root.svg,
-%% root.pdf, and root.pdf_tex).
-%%
-%% The following files constitute the svg package and should be
-%% distributed as a whole: README, svg.dtx, svg.sty, svg.pdf,
-%% Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png, preamble.tex
-%% example.svg, example.pdf, example.pdf_tex, root.C, root.svg,
-%% root.pdf, and root.pdf_tex.
-% \fi
-% \iffalse
+% svg -- Include SVG pictures in LaTeX documents using Inkscape
+% ----------------------------------------------------------------------------
+% svg-extract -- Extract independent graphic files from SVG pictures
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
%<*batchfile>
-\begingroup
-\input docstrip
+\ifx\documentclass\@undefined
+\input docstrip.tex
\keepsilent
-\usedir{tex/latex/svg}
-\preamble
+
+\begingroup
+\catcode`\^^M=13 \catcode`\ =12 %
+\gdef\svgpreamble{%
+Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+
+This file was generated from file svg.dtx.
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, version 1.3c of the license.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of
+LaTeX 2005/12/01 or later and of this work.
+
+This work has the LPPL maintenance status "author-maintained".
+
+The current maintainer and author of this work is Falk Hanisch.
+
+This work consists of the main source file README.md, LICENSE.md, svg.dtx and
+the derived documentation svg.pdf as well as the example files svg-example.svg,
+svg-preamble.tex and root.C (with derived file root.svg).
+}
+\endgroup
+
+\declarepreamble\svgbasepreamble
+
+svg -- Include SVG pictures in LaTeX documents using Inkscape
+
+\svgpreamble
+
+\endpreamble
+\declarepreamble\svgextractpreamble
+
+svg-extract -- Extract independent graphic files from SVG pictures
+
+\svgpreamble
+
\endpreamble
\askforoverwritefalse
-\generate{\file{svg.sty}{\from{svg.dtx}{svg}}}
-\endgroup
+\usedir{tex/latex/svg}
+\generate{%
+ \usepreamble\svgbasepreamble
+ \file{svg.sty}{%
+ \from{svg.dtx}{package,option,base}%
+ \from{svg.dtx}{package,body,base}%
+ }
+ \usepreamble\svgextractpreamble
+ \file{svg-extract.sty}{%
+ \from{svg.dtx}{package,option,extract}%
+ \from{svg.dtx}{package,body,extract}%
+ }
+% \usepreamble\defaultpreamble
+% \file{svg-old.sty}{%
+% \from{svg.dtx}{package,old}%
+% }
+}
+\else
+\let\endbatchfile\relax
+\fi
+\endbatchfile
%</batchfile>
-% \fi
-% \iffalse
-%<*driver>
-\ProvidesFile{svg.dtx}
-\documentclass{ltxdoc}
-\usepackage{svg}
-\usepackage{relsize}
-\usepackage{xcolor}
-\usepackage{transparent}
-\usepackage{listings}
-\usepackage{xspace}
-\usepackage[bookmarks=true,colorlinks=true,linkcolor=black,citecolor=black,
-urlcolor=blue]{hyperref}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\begin{document}
- \DocInput{svg.dtx}
- \PrintChanges
- \PrintIndex
-\end{document}
-%</driver>
-% \fi
%
-% \CheckSum{0}
+% \fi
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -104,292 +108,1041 @@ urlcolor=blue]{hyperref}
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
+% \iffalse
+%<*driver>
+\ifx\ProvidesFile\@undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{svg.dtx}[%
+%</driver>
+%<package&option>\NeedsTeXFormat{LaTeX2e}
+%<package&option&base>\ProvidesPackage{svg}[%
+%<package&option&extract>\ProvidesPackage{svg-extract}[%
+%<*driver|package&option>
+ 2017/03/27 v2.00\space%
+%<package&option&base> (include SVG pictures)%
+%<package&option&extract> (extract independent graphics from SVG pictures)%
+]
+%</driver|package&option>
+%<*driver>
+\documentclass[english,xindy]{tudscrdoc}[2017/03/27]
+\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\KOMAoptions{parskip=half-}
+\usepackage{marginnote}
+
+\usepackage{svg}
+\usepackage{svg-extract}
+\svgpath{{./examples/}}
+\svgsetup{extractpreamble=svg-preamble.tex,clean=true}
+
+\usepackage{xpatch}
+\ifdefined\includesvg
+ \xpretocmd{\includesvg}{\MakePercentComment}{}{}
+ \xapptocmd{\includesvg}{\MakePercentIgnore}{}{}
+\fi
+\ifdefined\includeinkscape
+ \xpretocmd{\includeinkscape}{\MakePercentComment}{}{}
+ \xapptocmd{\includeinkscape}{\MakePercentIgnore}{}{}
+\fi
+\pdfsuppresswarningpagegroup=1
+
+\usepackage{listings}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+\newcommand*\svglstbelowskip{\medskipamount}
+\AtBeginDocument{%
+ \edef\svglstbelowskip{\the\glueexpr\medskipamount-\parskip\relax}
+}
+\lstdefinestyle{svg}{%
+% language=[LaTeX]TeX,%
+ basicstyle=\small\ttfamily,%
+ columns=flexible,%
+ frame=single,%
+ backgroundcolor=\color{yellow!10},%
+ xleftmargin=\fboxsep,%
+ xrightmargin=\fboxsep,%
+ gobble=2,%
+ escapechar=§,
+ belowskip=\svglstbelowskip,%
+}
+\lstnewenvironment{svgexample}[1][]{%
+ \lstset{style=svg,#1}%
+}{}
+\usepackage{enumitem}
+\newlist{DescribeValues}{description}{1}
+\setlist[DescribeValues]{font=\normalfont\val,style=nextline,noitemsep}
+
+\usepackage{subcaption}
+\usepackage{relsize}
+
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+%\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{svg.dtx}
+\title{The packages \pkg{svg} and \pkg{svg-extract}}
+\author{%
+ Philip Ilten (2012--2016) \\
+ Falk Hanisch (2017--) \\
+ \url{https://github.com/mrpiggi/svg} \\
+ \mailto{hanisch.latex@outlook.com}
+}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \begin{abstract}
+ \noindent
+ The \pkg{svg} package is intended for the automated integration of
+ SVG~graphics into \LaTeX~documents. Therefor the capabilities provided
+ by \app{Inkscape}---or more precisely its command line tool---are used
+ to export the text within a SVG~graphic to a separate file, which is
+ then rendered by \LaTeX. The two commands \cs{includesvg} and
+ \cs{includeinkscape} are provided as central user\hbox{-}interface,
+ which are very similar to the \cs{includegraphics} command of the
+ \pkg{graphicx} package.
+
+ In addition, the package \pkg{svg-extract} allows the extraction of these
+ graphics into independent files in different graphic formats, exactly as it
+ is rendered within the document. For the creation of these graphics in the
+ well\hbox{-}known formats PDF, EPS and~PS, \LaTeX and possibly conversion
+ tools shipped with the distribution are used. If the graphics are required
+ in other file formats, either \app{ImageMagick} or \app{Ghostscript} can be
+ invoked.
+ \end{abstract}
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{v1.0}{2004/11/05}{initial version by Philip Ilten}
+% \changes{v2.00}{2016/09/23}{new maintainer: Falk Hanisch}
+% \changes{v2.00}{2017/03/27}{re-implementation from scratch}
+% \changes{v2.00}{2017/03/27}{package \pkg{subfig} not required anymore}
+% \changes{v2.00}{2017/03/27}{%
+% support of subfigures stopped due to the huge number of packages which deal
+% with this topic and the large variety of implementing this functionality;
+% naming exported graphics after their consecutive numbering can't be ensured
+% for all variants of subfigures, so it's neglected
+% }
+%
+%
+%
+% \part{User documentation}
+% \section{Introduction}
+%
+% The open source program \app{Inkscape} has provided an excellent resource for
+% the simple and easy creation of images and diagrams using a graphical user
+% interface. The work by Johan\,B.\,C.~Engelen has further enhanced the ability
+% of \app{Inkscape} to split a SVG~file into a text component that can be
+% compiled with \LaTeX, and an image component that can be imported as a
+% PDF~file. For further information see the documentation of
+% \hrfn{http://www.ctan.org/pkg/svg-inkscape}{\pkg{svg-inkscape} on CTAN}.
+% The procedure described therein is taken up and consistently expanded. Thus,
+% it is now possible to include a SVG~file into a \LaTeX~document where the
+% text within the SVG~graphic will be rendered natively by \LaTeX.
+%
+% Both packages \pkg{svg} and \pkg{svg-extract} rely heavily upon executing
+% commands from the shell using the \cs{ShellEscape} command---or respectively
+% the old known \cs{write18}---for executing a variety of commands directly to
+% the system. So it is necessary to include the flag \file{-{}-shell-escape}
+% when compiling documents using \pkg{svg} and/or \pkg{svg-extract}. The
+% executed commands and the possibilities to adapt their invocation with the
+% appropriate options are described later on in this documentation. All this is
+% done automatically with the \cs{includesvg} command. If you don't want to use
+% the \file{-{}-shell-escape} flag, either for security reasons or because
+% the export of the SVG~files is done in another way, there's also the command
+% \cs{includeinkscape} which includes files already exported by \app{Inkscape}.
+%
+% An working installation of \app{Inkscape} is required for the automated
+% integration of SVG~graphics, whereby the installation path must be
+% known to the operating system. This can be checked on shell by typing
+% \file{inkscape -V}. Moreover, there are some required packages which are
+% loaded by packages \pkg{svg} and \pkg{svg-extract} to provide the
+% functionallity. These packages are:
+% \begin{description}[parsep=.5\smallskipamount]
+% \item[\pkg{scrbase}]
+% for the definition and handling of options in key-value-syntax
+% \item[\pkg{ifluatex}, \pkg{ifpdf}, \pkg{ifxetex}]
+% for flow control depending on the used \LaTeX~engine
+% \item[\pkg{pdftexcmds}, \pkg{shellesc}]
+% to allocate the same primitives independent of the used \LaTeX~engine
+% \item[\pkg{ifplatform}]
+% to control the file~access depending on the operating system
+% \item[\pkg{graphicx}]
+% for including the graphic~files after the \app{Inkscape}~export
+% \item[\pkg{xcolor},\pkg{transparent}]
+% are possibly needed by the separate \LaTeX~files created by \app{Inkscape}
+% \item[\pkg{xr}]
+% is used by \pkg{svg-extract} in order to include labels within the
+% independent graphic~files
+% \end{description}
+%
+% If you want to pass options to package \pkg{graphicx}, you must either load
+% it before package \pkg{svg}
+% \begin{svgexample}
+% \usepackage§\oarg{options}§{graphicx}
+% §\dots§
+% \usepackage§\oarg{options}§{svg}
+% \end{svgexample}
+% or use \cs{PassOptionsToPackage}.
+% \begin{svgexample}
+% \PassOptionsToPackage§\marg{options}§{graphicx}
+% §\dots§
+% \documentclass§\oarg{options}\marg{class}§
+% §\dots§
+% \usepackage§\oarg{options}§{svg}
+% \end{svgexample}
+% The usage of packages \pkg{xcolor} and \pkg{transparent} can be switched off
+% while loading package \pkg{svg}. See the two options \opt{usexcolor} and
+% \opt{usetransparent} below.
%
-% \changes{v1.0}{2004/11/05}{Initial version}
%
-% \GetFileInfo{svg.sty}
%
-% \DoNotIndex{\newcommand,\newenvironment}
+% \section{Usage of package \pkg{svg}}\label{sec:inkscape}
+%
+% The purpose of this package is to include SVG~graphics into a \LaTeX~document.
+% The command \cs{includesvg} is defined which does all necessarry steps for
+% this task. It first launches the export of a SVG~file to a supported
+% file~format with Inkscape, if necessary, and includes the exported
+% graphic~file afterwards. The usage and the syntax is quite similiar to the
+% command \cs{includegraphics} from the \pkg{graphicx} package. In fact, the
+% inclusion of the exported graphic~file is done with \cs{includegraphics}.
+%
+% \DescribeOptions{usexcolor,usetransparent,noxcolor,notransparent}
+% The packages \pkg{xcolor} and \pkg{transparent} are loaded by default at the
+% end of package \pkg{svg}. The listed options are intended to prevent these
+% packages from loading. They are the only options which have to be given while
+% loading the \pkg{svg} package. All supported boolean values
+% (\val{true/on/yes/false/off/no}) can be assinged to \opt{usexcolor} and
+% \opt{usetransparent}, while \opt{noxcolor} and \opt{notransparent} don't
+% accept any value.
+% \begin{svgexample}
+% \usepackage§\oarg{options}§{svg}
+% \end{svgexample}
+%
+%
+%
+% \subsection{General settings}
+%
+% \DescribeMacro{\svgsetup}
+% All other options described in detail below can also be changed after loading
+% the package either in the preamble or within the document. They don't have to
+% be given as optional argument to \cs{usepackage}\oarg{options}|{svg}| but can
+% be set by using macro \cs{svgsetup}\marg{options} where \marg{options} is a
+% comma separated list of options. Settings with \cs{svgsetup} are done in the
+% current scope which means globally or within the current group.
+% \begin{svgexample}
+% \svgsetup§\marg{options}§
+% \end{svgexample}
+% Further, it's possible to reset any setting locally with the optional
+% argument of the commands \cs{includesvg}\oarg{options}\marg{svg filename} or
+% \cs{includesvg}\oarg{options}\marg{graphic filename}.
+%
+% \DescribeMacro{\svgpath}
+% Most likely you want to organize your SVG~files in a separate folder either
+% as a subfolder in the working directory or elsewhere in your local folder
+% structure. For this purpose, a list of root paths to SVG~files can be
+% specified using the \cs{svgpath} command in the same way as \cs{graphicspath}
+% is used. Every path has to be given in a group of braces |{}|---even if there
+% is only one---and terminate with |/| last. For example:
+% \begin{svgexample}
+% \svgpath{{svg/}{/usr/local/svg/}}
+% \end{svgexample}
+% would cause the system to look first in the subdirectory \file{svg/} and
+% afterwards in the absolute path \file{/usr/local/svg/}. Further, if no path
+% was specified with \cs{svgpath} or the desired file wasn't found, all
+% directories given with \cs{graphicspath} are searched too. Please keep in
+% mind that the current working directory is browsed first in any case. It's
+% recommended to avoid any spaces and/or quotes respectively \cs{dq} both in
+% paths and file~names, espacially when DVI~output is active.
+%
+%
+%
+% \subsection{Options for the invocation of \app{Inkscape}}
+%
+% \DescribeOption{inkscape}
+% This option controls, when the export with \app{Inkscape} is invoked and is
+% set to \val{true} by default.
+% \begin{DescribeValues}
+% \item[false/off/no]
+% \app{Inkscape} won't be invoked in any case, no export is done.
+% \item[\textbf{true}/on/yes/newer/onlynewer]
+% The export with \app{Inkscape} will only be done, if the exported
+% graphic~file either does not exist or the file~modification date of the
+% SVG~file is newer than that of the exported graphic~file. Thus the
+% compilation time of the \LaTeX~document can be reduced to the necessary
+% minimum. Unfortunately a primitive like \cs{pdffilemoddate} is missing for
+% XeTeX, so with this engine, the behaviour will be the same as
+% \opt{inkscape}|=|\val{forced}.
+% \item[forced/force/overwrite]
+% The \app{Inkscape}~export will definitely be done, any already existing
+% exported file will overwritten regardlessly.
+% \end{DescribeValues}
+%
+% In addition to controlling the export behavior, the option \opt{inkscape} can
+% also be used to make additional settings, which then acts as a wrapper for
+% the options described below.
+%
+% \begin{DescribeValues}
+% \item[pdf/eps/ps/png]
+% see \opt{inkscapeformat}|=|\val{pdf/eps/ps/png}
+% \item[latex/nolatex]
+% see \opt{inkscapelatex}|=|\val{true/false}
+% \item[drawing/page]
+% see \opt{inkscapearea}|=|\val{drawing/page}
+% \item[\meta{integer}dpi]
+% see \opt{inkscapedpi}|=|\val{\meta{integer}}
+% \end{DescribeValues}
+%
+% \DescribeOption{inkscapepath}
+% The option \opt{inkscapepath} specifies, where the resulting files of the
+% \app{Inkscape}~export should be located. The subfolder \file{./svg-inkscape/}
+% within the current working directory is used by default
+% (\opt{inkscapepath}|=|\val{basesubdir}).
+% \begin{DescribeValues}
+% \item[svgdir/svgpath]
+% The PDF/EPS/PS/PNG~graphic~files as well as the \LaTeX~files generated by
+% \app{Inkscape} will be located in the same directory as the corresponding
+% SVG~file.
+% \item[svgsubdir/svgsubpath]
+% Within the folder of the encountered SVG~file, all exported files will be
+% located in a subfolder named \file{svg-inkscape/}.
+% \item[basedir/basepath/jobdir/jobpath]
+% All exported files will be located in the current working directory.
+% \item[\textbf{basesubdir}/basesubpath/jobsubdir/jobsubpath]
+% A subfolder named \file{svg-inkscape/} within the current working directory
+% will be used for files generated by \app{Inkscape}.
+% \item[/path/to/somewhere/]
+% It is also possible to give a custom path, either relative to the current
+% working directory (\file{./relative/path/}) or as an absolute path.
+% \end{DescribeValues}
+%
+% \DescribeOption{inkscapeexe}
+% For the inclusion of a SVG~file, \app{Inkscape} is used to separate the text
+% and image from the SVG~file itself. In order to execute the command line tool
+% from shell, the path where the executable is located has to be known to the
+% operating system. You can check this by typing \file{inkscape -V} into the
+% shell. If this check fails and you don't want to change environment variable
+% \file{path} on your OS, you can use option \opt{inkscapeexe} to set the
+% absolute path where the executable of \app{Inkscape} is located. The option
+% is set to \opt{inkscapeexe}|=|\val{inkscape} by default.
+%
+% \DescribeOption{inkscapeformat}
+% With this option, the \app{Inkscape}~export~format can be controlled. Valid
+% values are \val{pdf}, \val{eps}, \val{ps} and \val{png}, where a \LaTeX~export
+% is not possible for \val{png} and option \opt{inkscapelatex} won't have any
+% effect. By default, \opt{inkscapeformat}|=|\val{pdf} is set unless DVI~output
+% was detected. In this case \opt{inkscapeformat}|=|\val{eps} is the default
+% setting.
+%
+% \DescribeOption{inkscapelatex}
+% If option \opt{inkscapelatex}|=|\val{true} is set, the output is split into
+% a seperate PDF/EPS/PS~file (see option \opt{inkscapeformat}) and a
+% corresponding \LaTeX~file. This is the default setting. Setting
+% \opt{inkscapelatex}|=|\val{false} will result in a single PDF/EPS/PS~file,
+% where any contained text won't be rendered by \LaTeX.
+%
+% \DescribeOption{inkscapearea}
+% This option controls which area of the SVG~file should be exported,
+% \val{drawing} is set by default.
+% \begin{DescribeValues}
+% \item[\textbf{drawing}/crop]
+% The area exported corresponds to the bounding box of all objects in a
+% drawing, including any that are not on the page.
+% \item[page/nocrop]
+% The area exported will correspond to the defined page~area within the
+% SVG~file.
+% \end{DescribeValues}
+%
+% \DescribeOption{inkscapedpi}
+% The resolution used either for PNG~export or for fallback rasterization of
+% filtered objects when exporting to PDF/EPS/PS~file. For PNG~export it is set
+% to 300\,dpi by default, if no value was given. The given value should be a
+% positive integer. The default behaviour can be reversed after a given value
+% with \opt{inkscapedpi}|=|\val{\cs{relax}}.
+%
+% \DescribeOption{inkscapeopt}
+% You can use this option to pass additional switches to the \app{Inkscape}
+% command line tool. For further information see the documentation of
+% \hrfn{https://inkscape.org/de/doc/inkscape-man.html}{\app{Inkscape}}.
+%
+%
+%
+% \subsection{Options for the graphic inclusion}
+%
+% \DescribeOptions{width,height,scale}
+% The width of the included graphic~file can be specified via the \opt{width}
+% option and the height by the \opt{height} option. If both the width and
+% height are specified, the figure won't be distort but scaled such that
+% neither of the specified dimensions is exceeded. If \opt{width} and/or
+% \opt{height} once have been set, this can be reversed by setting them to
+% \val{0pt} or \cs{relax}.
+%
+% If neither \opt{width} nor \opt{height} are set, the included graphic~file
+% can also be scaled by setting \opt{scale} to a positive real number.
+%
+% \DescribeOptions{pretex,apptex}
+% Commands prior and post to the inclusion of the graphic~file may be desired,
+% such as font or color commands. The options \opt{pretex} and \opt{apptex} are
+% provided where the \LaTeX~code given to \opt{pretex} is included before the
+% graphic~file and \opt{apptex} right afterwards. For example, to change the
+% size of the included text one could use:
+% \begin{svgexample}
+% \includsvg[pretex=\tiny,§\meta{additional options}§]§\marg{svg filename}§
+% \end{svgexample}
+%
+% \DescribeOption{draft}
+% This option can be used with booelan values and is equal to the identically
+% named option of the \pkg{graphicx} package. If the \opt{draft} option is
+% given to \pkg{graphicx}, it's activated for \pkg{svg} as well.
+%
+% \DescribeOption{lastpage}
+% A \hrfn{https://bugs.launchpad.net/ubuntu/+source/inkscape/+bug/1417470}{bug}
+% concerning the \LaTeX~export has been reported for \app{Inkscape}~0.91. It
+% may happen that within the \LaTeX~file exported by \app{Inkscape}, it is
+% attempted to include more pages of the PDF~graphics than actually exist. The
+% \pkg{svg} package attempts to bypass the resulting error.
+%
+% Consequently, the total number of pages is read and only existing PDF~pages
+% are included, if both options \opt{inkscapeformat}|=|\val{pdf} and
+% \opt{lastpage}|=|\val{true} are set. This is the default setting and can be
+% switched off with \opt{lastpage}|=|\val{false}. It's also possible to set the
+% number of the last page included of a PDF~graphic manually as optional
+% parameter for \cs{includesvg} or \cs{includeinkscape}. For details, see the
+% description of the respective commands.
+%
+%
+%
+% \subsection{Including SVG~files}
+%
+% \DescribeMacro{\includesvg}
+% The command \cs{includesvg} to include a SVG~file is quite similar to the
+% \cs{includegraphics} command provided by the \pkg{graphicx} package.
+% \begin{svgexample}
+% \includesvg§\oarg{parameters}\marg{svg filename}§
+% \end{svgexample}
+%
+% \begin{DescribeParameterParent}{Macro}{\includesvg}
+% \DescribeParameters{%
+% inkscape,inkscapeformat,inkscapelatex,inkscapearea,inkscapedpi,inkscapeopt,%
+% width,height,scale,pretex,apptex,draft,%
+% }
+% It is used right in the same way but where \marg{svg filename} is the
+% file~name of the SVG~file, where any given file~extension will be replaced
+% with \file{.svg} ruthlessly. If this file is not located in the current
+% working directory but elsewhere on your file~system, the command \cs{svgpath}
+% could be used to specify this path. It is recommended to avoid any spaces
+% and/or quotes respectively \cs{dq} both in paths an file~names. Espacially
+% when DVI~output is active using quotes will certainly cause an error.
+%
+% The command \cs{includesvg} is intended to do an automated export with
+% \app{Inkscape} at first, where the given SVG~file is exported to a
+% PDF/EPS/PS/PNG~file (see~\opt{inkscapeformat}) and perhaps a correlating
+% \LaTeX~file (see~\opt{inkscapelatex}). The export with \app{Inkscape} is only
+% invoked, if the SVG~file is newer than the exported graphic~file or latter
+% doesn't exist at all.\footnote{\ignorespaces%
+% Due to the lack of XeTeX to compare file~modification dates, using this
+% \LaTeX~engine leads to \app{Inkscape}~exports with every run unless
+% \opt{inkscape}|=|\val{false} is used.%
+% }%
+% Once the export has been done, the graphic~file and maybe the \LaTeX~file are
+% included.
+%
+% All previously described options can also be used as optional parameters to
+% \cs{includesvg} and do have the same effect as described before. However, the
+% optional parameters specified have an effect only once when \cs{includesvg}
+% is executed and remain unchanged afterwards.
+%
+% \DescribeParameter{lastpage}
+% In addition to the use of boolean values, the parameter \prm{lastpage} can
+% also be assigned a specific (integer) page number, which defines the last
+% used page of a PDF~graphic. This, just like the identically named option, has
+% an effect only when \prm{inkscapeformat}|=|\val{pdf} is set.
+%
+% \DescribeParameters{angle,origin}
+% Both parameters correlate to the identically named parameters of the
+% \cs{includegraphics} command provided by the \pkg{graphicx} package. However,
+% unlike to \cs{includegraphics}, parameters \prm{angle} and \prm{origin} are
+% \emph{always evaluated after} the parameters \prm{widht}, \prm{height} and
+% \prm{scale} by \cs{includesvg}, regardless of the used order of the given
+% parameters. This is mainly due to the inclusion of the \LaTeX~files
+% corresponding to the graphic~files generated by \app{Inkscape}.
+% \end{DescribeParameterParent}
+%
+% \DescribeMacro{\includeinkscape}
+% If you don't want to make use of the automated export with \app{Inkscape} but
+% the user interface provided by the \pkg{svg} package, you can use
+% \cs{includeinkscape} instead of \cs{includesvg}.
+% \begin{svgexample}
+% \includeinkscape§\oarg{parameters}\marg{graphic filename}§
+% \end{svgexample}
%
-% \makeatletter
-% \def\DescribeOption#1{\leavevmode\@bsphack
-% \marginpar{\raggedleft\PrintDescribeOption{#1}}%
-% \SpecialOptionIndex{#1}\@esphack\ignorespaces}
-% \def\PrintDescribeOption#1{\strut\emph{option}\\\MacroFont #1\ }
-% \def\SpecialOptionIndex#1{\@bsphack
-% \index{#1\actualchar{\protect\ttfamily#1}
-% (option)\encapchar usage}%
-% \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
-% usage}\@esphack}
-% \def\DescribeOptions#1{\leavevmode\@bsphack
-% \marginpar{\raggedleft\strut\emph{options}%
-% \@for\@tempa:=#1\do{%
-% \\\strut\MacroFont\@tempa\SpecialOptionIndex\@tempa
-% }}\@esphack\ignorespaces}
-% \makeatother
-% \lstnewenvironment{example}{%
-% \lstset{basicstyle=\footnotesize\ttfamily,columns=flexible,frame=single,%
-% backgroundcolor=\color{yellow!20},xleftmargin=\fboxsep,%
-% xrightmargin=\fboxsep,gobble=1}}{}
-%
-% \newcommand{\svg}{{\sc svg}\xspace}
-% \newcommand{\pdf}{{\sc pdf}\xspace}
-% \newcommand{\eps}{{\sc eps}\xspace}
-% \newcommand{\png}{{\sc png}\xspace}
-% \newcommand{\latex}{\LaTeX\xspace}
-% \newcommand{\croot}{{\sc Root}\xspace}
-% \newcommand{\pdflatex}{{\sc PdfLatex}\xspace}
-% \newcommand{\inkscape}{{\sc Inkscape}\xspace}
-% \newcommand{\pdftops}{{\sc PdfToPs}\xspace}
-% \newcommand{\convert}{{\sc Convert}\xspace}
-%
-% \title{The \textsf{svg} Package}
-% \author{Philip Ilten \\ \texttt{philten@cern.ch}}
-% \date{\fileversion\ (\filedate)}
-% \maketitle
-% \tableofcontents
-% \section{Introduction}\label{sec:intro}
-%
-% The open source program \inkscape has provided an excellent resource
-% for the simple and easy creation of images and diagrams using a
-% graphical user interface. The work by Johan B. C. Engelen has
-% further enhanced the ability of \inkscape to split an \svg into a
-% text component that can be imported into \latex, and an image
-% component that can be imported as a \pdf.\footnote{For further
-% information see the |svg-inkscape| documentation on
-% \href{http://www.ctan.org/tex-archive/info/svg-inkscape}{CTAN}.}
-% Consequently it is now possible to include an \svg into a \latex
-% document where the text within the \svg has been rendered natively
-% by \latex.
-%
-% The purpose of this package is twofold. First, the syntax of the
-% command |\includegraphics| from the |graphicx| package has been
-% extended to an |\includesvg| command, which allows the specification
-% of the \svg width and height using keys in an optional first
-% argument. Second, this package allows for the extraction of the
-% \svg, as rendered within the \latex document, to an independent
-% image file. This is particularly useful when attempting to provide
-% images to journals or collaborators, and one wishes the image to
-% appear exactly as it does within the original \latex document.
-%
-% There is actually a third purpose to this package, which will almost
-% certainly be relevant to experimental particle physicists only, who
-% frequently use the analysis package \croot. Further details on how to
-% obtain beautiful \croot plots using this package are given in Section
-% \ref{sec:root}.
-%
-% This documentation is broken into five parts: an explanation of the
-% usage is given in Section \ref{sec:usage}, an example is given in
-% Section \ref{sec:example}, further details with use in \croot is
-% given in Section \ref{sec:root}, and finally, the full
-% implementation is given in Section \ref{sec:implementation} which
-% hopefully should not need to be read.
-%
-% There is one further point which is important to mention. This
-% package relies heavily upon executing commands from the shell using
-% the |\write18| command, and so it is necessary for the flag
-% |-shell-escape| to be included when compiling documents using this
-% package. Additionally, this package requires a working installation
-% of \inkscape and \pdflatex in order for an \svg to be included or
-% extracted to a \pdf. In order to extract to \eps and \png formats,
-% the programs \pdftops and \convert (part of ImageMagick) must be
-% installed respectively. Finally, this package will not work on
-% Windows, but should run on any *nix platform as long as the paths to
-% the appropriate programs are correctly defined.
-%
-% \section{Usage}\label{sec:usage}
-%
-% \DescribeMacro{\includesvg} The command to include an \svg is
-% similar to the |\includegraphics| command provided by the |graphicx|
-% package. However, now the command
-% \begin{example}
-% \includesvg[<options>]{<svg filename>}
-% \end{example}
-% is used where |<svg filename>| is the filename of the \svg without
-% the path or the |.svg| postfix.
-%
-% \DescribeMacro{\setsvg} The |<options>|, described in detail below,
-% can be specified globally for the package
-% \begin{example}
-% \usepackage[<options>]{svg}
-% \end{example}
-% and reset locally when supplied to the |\includesvg| macro. The
-% options can also be reset globally using the macro |\setsvg|
-% \begin{example}
-% \setsvg{<options>}
-% \end{example}
-% where |<options>| is a comma separated list of options.
-%
-% \DescribeOptions{width,height,svgpath} The width of the \svg can be
-% specified via the |width| option and the height by the |height|
-% option. If both the width and height are specified, the width will
-% be used and the height will be rescaled to match the aspect ratio of
-% the \svg. The path to the \svg can be specified using the |svgpath|
-% option, where the path must terminate in a |/|. The default
-% |svgpath| is set to the current directory, |./|.
-%
-% \DescribeOptions{pdf,eps,png} The included \svg can be extracted
-% from the document into a \pdf, \eps, or \png independent of the
-% document. The |pdf| flag enables \pdf extraction, while the |eps|
-% and |png| flags enable \eps and \png extraction respectively. For
-% example,
-% \begin{example}
-% \includesvg[pdf,eps,<additional options>]{<svg filename>}
-% \end{example}
-% will extract the \svg to both \pdf and \eps formats By default, all
-% of these flags are set to false and no extraction of the \svg is
-% performed. The extraction will render the \svg to the specified
-% output(s) of choice using the same size as specified within the
-% |\includesvg| command. Consequently, the scale between the image and
-% text in the extracted output(s) will remain identical to the scale
-% within the document from which the \svg was extracted.
-%
-% \DescribeOptions{name, path} The root name of the extracted
-% output can be specified with the |name| option. For example,
-% \begin{example}
-% \includesvg[name=foo,eps,png,<additional options>]{<svg filename>}
-% \end{example}
-% will extract the \svg to the files |foo.eps| and |foo.png| in the
-% current directory. By default, |name| is set to
-% |Fig.\arabic{svgfigure}\alph{subfigure}| and so any \svg included
-% within a |figure| or |subfigure| environment will automatically be
-% labeled; i.e. if an \svg is included in the first figure and second
-% subfigure of the document, and \pdf extraction was requested, the
-% \svg will be extracted to the file |Fig.1b.pdf|. A path for the
-% extracted files can also be specified with the |path| option, which
-% must terminate with a |/|. The default |path| is set to the current
-% directory, |./|.
-%
-% \DescribeOptions{clean,exclude} Because a large number of files is
-% generated for each \svg extraction, it is oftentimes desirable to
-% automatically remove the temporary files. Using the option |clean|
-% will remove any generated files created other than the extracted
-% output(s) requested. The |clean| option is by default set as |false|
-% to enable debugging. Additionally, sometimes it may be necessary to
-% export an \svg without including it in the current document. If the
-% flag |exclude| is specified, the \svg will not be rendered in the
-% current document, but will be extracted to the requested output(s).
-%
-% \DescribeOptions{pretex,postex} Commands prior and post to the
-% inclusion of the \svg may be desired, such as font or color
-% commands. For example, to change the text size of the include \svg
-% text one could use
-% \begin{example}
-% {\tiny \includsvg[<options>]{<svg filename>}}
-% \end{example}
-% where now the text will be rendered in the font size specified by
-% |\tiny|. In this example, however, the |\tiny| command would not be
-% included in the extracted output and so the options |pretex| and
-% |postex| are provided where the \latex provided to |pretex| is
-% included before the \svg, and |postex| after the \svg. Consequently,
-% the example above can be rewritten as
-% \begin{example}
-% \includsvg[pretex=\tiny,<additional options>]{<svg filename>}
-% \end{example}
-% where now the changed font size will be propagated to the extracted
-% output.
-%
-% \DescribeOptions{preamble,end} Specialized \latex macros can be used
-% in the \svg which can then be defined in the preamble of the \latex
-% document in which the \svg is to be included. Additionally,
-% specialized packages such as |\relsize| may be needed by the \latex
-% code extracted from the \svg. Consequently, the preamble of the
-% current \latex document is used for the extraction of the \svg by
-% default. It is possible, however, to specify a different preamble
-% with the option |preamble| where the file to use as the preamble
-% (including path and postfix) is given as the argument. The default
-% definition of |preamble| is |\jobname.tex|, and should suffice for
-% most cases. The preamble up to the line defined by the option
-% |end| will be used, which is set to a default of
-% |\begin{document}|. Notice that an exact match must be made, and so
-% if any comments or text are on the same line after the
-% |\begin{document}|, the preamble will not be correctly extracted.
-%
-% \DescribeOptions{inkscape, pdflatex, pdftops, convert} A variety of
-% commands are executed directly to the system, via |\write18| using
-% this package and consequently, it may be necessary to change the
-% binary paths and options for each individual command. For the
-% inclusion of an \svg, \inkscape is used to separate the text and
-% image from the \svg and can be set using the |inkscape| option. By
-% default the |inkscape| option is set to |inkscape -z -C| which
-% performs a non-gui export of \svg page (notice that the |-C| option
-% indicates page and not drawing). For the extraction of a \pdf,
-% the \latex program is used which is set by the |pdflatex| option and
-% set to |pdflatex| by default. The extraction of an \eps is performed
-% by converting a \pdf to an \eps using \pdftops. This command is set
-% with the |pdftops| option and is set by default to
-% |pdftops -eps|. Finally, conversion to \png is accomplished via the
-% \convert program which is set with the |convert| option and by
-% default set to |convert -density 300| where |-density|
-% controls the resolution of the extracted \png in dots per inch.
-%
-%
-% \section{Example}\label{sec:example}
-%
-% As an example\footnote{The image used here is a slightly modified
-% version of the image used in the initial documentation on how to
-% include an \svg in \latex by J. Engelen available on
-% \href{http://www.ctan.org/tex-archive/info/svg-inkscape}{CTAN}.}
-% take the following lines of code
-% \begin{example}
+% \begin{DescribeParameterParent}{Macro}{\includeinkscape}
+% \DescribeParameters{%
+% inkscapeformat,inkscapelatex,%
+% width,height,scale,pretex,apptex,draft,lastpage,angle,origin,%
+% }
+% You can use it similar to \cs{includesvg} but \marg{graphic filename} has to
+% be the filename of the already exported graphic file. If a valid
+% file~extension (\file{.pdf/.eps/.ps/.png}) is given, the current setting for
+% \opt{inkscapeformat} is overwritten. It's even possible to specify a
+% file~extension like \file{.pdf\_tex} to activate \opt{inkscapelatex}.
+% Furthermore, all optional parameters for \cs{includeinkscape} do have the
+% same effect as described before for command \cs{includesvg} once when
+% \cs{includeinkscape} is executed and remain unchanged afterwards.
+% \end{DescribeParameterParent}
+%
+%
+%
+% \section{Usage of package \pkg{svg-extract}}
+%
+% This package allows the extraction of independent graphic~files out of
+% SVG~files which have been included and rendered with \LaTeX{} by the
+% \pkg{svg} package. This is particularly useful when attempting to provide
+% images to journals or collaborators, and one wishes the image to appear
+% exactly as it does within the original \LaTeX~document.
+%
+% In order to extract to PDF, EPS, or PS~files the programs \file{pstoeps},
+% \file{pstopdf} and \file{pdftops} are used which are usually provided by most
+% of the \LaTeXe~distributions. In additon, the command line tools of
+% \app{ImageMagick} and \app{Ghostscript} can be invoked for converting images
+% in formats like PNG, JPG, TIF or something else. It's also possible to create
+% PDF, EPS or PS~files with one of the two programs. Therefor the desired
+% program---\file{magick} and/or \file{gswin32c}/\file{gswin64c} on Windows
+% respectively \file{convert} and/or \file{gs} on unix-like operating
+% systems---must be installed. By typing \file{\meta{program} -{}-version} on
+% shell, this can be checked.
+%
+% If you want to extract independent graphic~files from included SVG~files, you
+% only have to load \pkg{svg-extract}. All actions for the extraction process
+% will be done by using \cs{includesvg} or \cs{includeinkscape}. Without any
+% additional settings, the extraction will render the SVG~file to the specified
+% output formats(s) of choice using the same settings as specified within the
+% two commands. Consequently, the scale between the image and text in the
+% extracted files will remain identical to the scale within the document from
+% which the SVG~file was extracted.
+%
+% In contrast to package \pkg{svg}, the console commands for graphic extraction
+% are executed with each LaTeX run by package \pkg{svg-extract} when
+% \file{-{}-shell-escape} mode is activated. This behaviour can be switched of
+% with option \opt{extract}|=|\val{false}.
+%
+% \minisec{Important changes}
+%
+% In version~v1.0 of package \pkg{svg} the extracted files were named like the
+% numbering of the current \env{subfig} environment by default. As package
+% \pkg{subfig} sometime causes problems and because of the large amount of
+% different \LaTeX~packages which all provide the possibility to include
+% subfigures with very different implemetations, this feature can't be provided
+% reliably by \pkg{svg-extract}. See option \opt{extractname} for further
+% information.
+%
+%
+%
+% \subsection{General settings}
+%
+% \DescribeOptions{on,off}
+% This options have to be given while loading the \pkg{svg-extract} package and
+% are intended to toggle the functionality of this package. As both extracting
+% and converting independent graphic~files is invoked with every \LaTeX~run
+% when \file{-{}-shell-escape} is activated, the option \opt{off} can be given
+% to save compilation time, once the creation of all desired images has been
+% done and they no longer need to be re-generated. The option \opt{on} can be
+% used to reactivate functionality of this package. This can also be done by
+% using \opt{extract}|=|\val{true}/\val{false}.
+%
+% \DescribeMacros{\svgsetup,\includesvg,\includeinkscape}
+% All option described below can be used togehter with \cs{svgsetup} and are
+% then valid in the current scope. There also exist identically named
+% parameters for the optional arguments of
+% \begin{svgexample}
+% \includesvg§\oarg{parameters}\marg{svg filename}§
+% \includeinkscape§\oarg{parameters}\marg{graphic filename}§
+% \end{svgexample}
+% These parameters have an effect only once when the commands are executed and
+% remain unchanged afterwards.
+% \begingroup
+% \renewcommand*\marginpar[2][]{}%
+% \begin{DescribeParameterParent}{Macro}{\includesvg}
+% \DescribeParameters{%
+% extract,extractpreamble,extractformat,extractruns,latexopt,%
+% extractwidth,extractheight,extractscale,extractpretex,extractapptex,%
+% convert,convertformat,convertdpi,%
+% magicksetting,magickoperator,gsopt,gsdevice,%
+% clean,exclude,%
+% }%
+% \end{DescribeParameterParent}
+% \begin{DescribeParameterParent}{Macro}{\includeinkscape}
+% \DescribeParameters{%
+% extract,extractpreamble,extractformat,extractruns,latexopt,%
+% extractwidth,extractheight,extractscale,extractpretex,extractapptex,%
+% convert,convertformat,convertdpi,%
+% magicksetting,magickoperator,gsopt,gsdevice,%
+% clean,exclude,%
+% }%
+% \end{DescribeParameterParent}
+% \endgroup
+%
+%
+%
+% \subsection{Extract independent grahic files}\label{sec:extract}
+% \DescribeOption{extract}
+% This option can be used with boolean values. Using \opt{extract}|=|\val{true}
+% activates the functionality for both extracting and converting which is the
+% default setting, whereas \opt{extract}|=|\val{false} turns it off completely.
+%
+% \DescribeOption{extractpath}
+% The path where the extracted and converted files are located can be specified
+% with option \opt{extractpath}, whereas \opt{extractpath}|=|\val{basesubdir}
+% is set by default.
+% \begin{DescribeValues}
+% \item[svgdir/svgpath]
+% The extracted and converted independent graphic~files are located in the
+% same directory as the corresponding SVG~file.
+% \item[svgsubdir/svgsubpath]
+% Within the folder of the encountered SVG~file, all extracted and converted
+% files will be located in a subfolder named \file{svg-extract/}.
+% \item[basedir/basepath/jobdir/jobpath]
+% All extracted and converted files will be located in the current working
+% directory.
+% \item[\textbf{basesubdir}/basesubpath/jobsubdir/jobsubpath]
+% A subfolder named \file{svg-extract/} within the current working directory
+% will be used for all extracted and converted files.
+% \item[/path/to/somewhere/]
+% It is also possible to give a custom path, either relative to the current
+% working directory (\file{./relative/path/}) or as an absolute path.
+% \end{DescribeValues}
+%
+% \DescribeOption{extractname}
+% It's also possible to change the name for extracted and converted files. The
+% default setting is \opt{extractname}|=|\val{filenamenumbered}.
+% \begin{DescribeValues}
+% \item[filename/name]
+% The name of the exported \app{Inkscape}~file is used and the suffix
+% \file{-extract} is attached.
+% \item[\textbf{filenamenumbered}/namenumbered/numberedfilename/numberedname]
+% Same as above, but a prefix with the count of extracted files is used
+% instead of the suffix.
+% \item[numbered/section/numberedsection/sectionnumbered]
+% The file name is composed by the number of extracted files and the current
+% outline numbering.
+% \item[\meta{filename}]
+% You can use any file name, a given file extension is ignored. Repeatedly
+% specifying the same file name will overwrite previously created files.
+% \end{DescribeValues}
+%
+% \DescribeOption{extractformat}
+% The included SVG~file can be extracted from the document into a independent
+% graphic~file of type PDF, EPS or PS. The option can be used with either a
+% single value (\opt{extractformat}|=|\val{pdf}) or a comma separated list.
+% For example,
+% \begin{svgexample}
+% \includesvg[extractformat={pdf,eps,ps}]§\marg{svg filename}§
+% \end{svgexample}
+% will extract the SVG~file to both PDF and EPS~formats and generates two
+% independent graphic~files. By default, \opt{extractformat}|=|\val{pdf} is set
+% unless DVI~output was detected. In this case \opt{extractformat}|=|\val{eps}
+% is the default setting.
+%
+% \DescribeOptions{%
+% extractwidth,extractheight,extractscale,extractpretex,extractapptex,%
+% }
+% These options can be used to overwrite the settings given for the appearance
+% of a SVG~file within the document. For example, a SVG~file should cover the
+% entire text width within the document but be extracted to a fixed width, this
+% can be done with:
+% \begin{svgexample}
+% \includesvg[width=\textwidth,extractwidth=500pt]§\marg{svg filename}§
+% \end{svgexample}
+% Assigning the value \val{inherit} to one of these options---which is set by
+% default---leads to the usage of the corresponding option of package \pkg{svg}
+% (\opt{width}/\opt{height}/\opt{scale}/\opt{pretex}/\opt{apptex}), whereas
+% \opt{extract\dots}|=|\val{\cs{relax}} can be used to ignore a parent option
+% utterly.
+%
+% \DescribeOptions{extractpreamble,extractpreambleend}
+% Within the included and extracted SVG~files any \LaTeX~macro can be used
+% either defined by the user---this should be done in the preamble of the
+% \LaTeX~document in which the SVG~file is to be included---or provided by a
+% package which is loaded. As the extraction process of the SVG~files needs an
+% auxiliary \LaTeX~file all used packages and commands have to be known within
+% this file. Consequently, the preamble of the current \LaTeX~document is used
+% for the extraction of the SVG~file by default.
+%
+% However, it is possible to specify a different \emph{preamble~file} with the
+% option \opt{extractpreamble} where the file to use as the preamble is given
+% as the argument---including maybe path, but file~name and file~extension in
+% any case. The given preamble file is searched similar to SVG~files meaning,
+% every path given with \cs{svgpath} or \cs{graphicspath} is examined. The
+% default definition of \opt{extractpreamble} is \file{\cs{jobname}.tex}---more
+% precisely the file~extension given by option \opt{latexext} is used---and
+% should suffice for most cases. The preamble up to the line defined by the
+% option \opt{extractpreambleend} will be used, which is set to a default with
+% \cs{begin}|{document}|.
+%
+% \DescribeMacros{\svghidepreamblestart,\svghidepreambleend}
+% In case, the preamble of the current \LaTeX~document is used, there are maybe
+% packages included or some parts within the preamble, which should not be used
+% within the separate auxiliary \LaTeX~file. These parts can be excluded if
+% they are enclosed by \cs{svghidepreamblestart} and \cs{svghidepreambleend}.
+%
+% For example, your current \LaTeX~document uses package \pkg{showframe} which
+% causes some problems with the extraction of independent graphic~files. So you
+% want to get rid of it within the auxiliary \LaTeX~file. This can be done with:
+% \begin{svgexample}
+% \documentclass§\marg{documentclassname}§
+% §\dots§
+% \usepackage{svg-extract}
+% §\dots§
+% \svghidepreamblestart
+% \usepackage{showframe}
+% \svghidepreambleend
+% §\dots§
+% \end{svgexample}
+%
+% \DescribeOption{extractruns}
+% When extracting independent grahic~files by compiling the generated auxiliary
+% \LaTeX~file, it's maybe necessarry to do multiple \LaTeX~runs on this file.
+% The number of runs can be controlled with option \opt{extractruns}. It's set
+% to \opt{extractruns}|=|\val{2} by default.
+%
+% \DescribeOptions{latexexe,latexopt,latexext}
+% For the extraction of an independent grahic~file, the \LaTeX~program is used
+% which is set by the \opt{latexexe} option. Depending on the \LaTeX~processor
+% used for the current \LaTeX~document, it is set to either \app{pdflatex},
+% \app{lualatex}, \app{xelatex} or \app{latex} by default. It's also possible
+% to specify additional flags or switches for the \LaTeX~runs, which are
+% performed during the extraction process by the \opt{latexopt} option. If you
+% are used to utilize a other file~extension for \LaTeX~files than \file{.tex},
+% option \opt{latexext} can be used like \opt{latexext}|=|\val{ltx}.
+%
+% \DescribeOptions{dvipsopt,pstoepsopt,pstopdfopt,pdftoepsopt,pdftopsopt}
+% Depending on the used \LaTeX~processor, the file~type of the extracted
+% graphic differs. In order to create all formats, requested with option
+% \opt{extractformat}, several converting tools provided by most of the
+% \LaTeXe~distributions are maybe invoked. These are \file{dvips},
+% \file{ps2eps}, \file{ps2pdf} and/or \file{pdftops} and can't be changed. It's
+% only possible to specify additional switches for every single tool with
+% \opt{dvipsopt}, \opt{pstoepsopt}, \opt{pstopdfopt}, \opt{pdftoepsopt} and
+% \opt{pdftopsopt}.
+%
+% \DescribeOption{clean}
+% During the extraction process many files are generated for each SVG~file
+% extraction. So it's oftentimes desirable to automatically remove these
+% temporary files. Using the option \opt{clean}|=|\val{true} will remove any
+% generated files created other than the extracted output format(s) requested.
+% Setting \opt{clean}|=|\val{false} is useful for debugging and set by default.
+% Additionally, it's possible to use option \opt{clean} with a list of
+% file~extensions in order to specify auxiliary files generated by package
+% \pkg{svg-extract} to be deleted, for example \opt{clean}|=|\val{\{log,aux\}}.
+%
+% \DescribeOption{exclude}
+% Sometimes it may be necessary to extract and/or convert a SVG~file without
+% including it. If the flag \opt{exclude} is specified, the SVG~file will not
+% be rendered in the current \LaTeX~document, but will be extracted and/or
+% converted to the requested output format(s).
+%
+%
+%
+% \subsection{Convert extracted grahic files}\label{sec:convert}
+%
+% Based on the extraction of independent graphic~files, the \pkg{svg-extract}
+% packages also provides the possibility to convert those extracted graphics in
+% another format than PDF, EPS or PS with either \app{ImageMagick}---which is
+% set by default---or \app{Ghostscript}.
+%
+% \DescribeOption{convert}
+% This option can be used to control the invocation of the conversion process.
+% By default, \opt{convert}|=|\val{false} is set. For Windows, there exist two
+% different versions of \app{Ghostscript}, either 64\,bit or 32\,bit. If
+% it is selected as converting tool the 64\,bit~executable is set by default.
+% \begin{DescribeValues}
+% \item[\textbf{false}/off/no]
+% No conversion is done.
+% \item[true/on/yes]
+% The conversion will be done with the current chosen converting tool.
+% \item[magick/imagemagick/convert]
+% The conversion is activated and \app{ImageMagick} is selected.
+% \item[gs/ghostscript]
+% The conversion is activated and \app{Ghostscript} is selected.
+% \item[gs64/ghostscript64]
+% This value activates \app{Ghostscript} as conversion tool and sets
+% \opt{gsexe}|=|\val{gswin64c}. On unix-like operating systems, the value for
+% \opt{gsexe} remains unchanged.
+% \item[gs32/ghostscript32]
+% The same as for the latter case applies, only option
+% \opt{gsexe}|=|\val{gswin32c} is set on Windows.
+% \end{DescribeValues}
+%
+% \DescribeOption{convertformat}
+% With this option, the desired output format(s) can be given. Multiple graphic
+% formats can be specified in a list, for example something like
+% \opt{convertformat}|=|\val{\{png,jpg,tif\}}. The value specified in
+% \opt{extractformat} is used as the source format for the conversion. If
+% \opt{extractformat} itself contains a file~list, the first value within this
+% list is considered. If \opt{extractformat} is defined empty, the file
+% generated anyway during the extraction is used.
+%
+% \minisec{Settings for specific converting formats}
+%
+% Maybe it's desired to apply varying settings for different output formats.
+% Therefor some options described below can either be set for all converted
+% files or for a specific output format. In particular, these are the options
+% \opt{convertdpi} as well as \opt{magicksetting}, \opt{magickoperator},
+% \opt{gsdevice} and \opt{gsopt}. All these mentioned options can be used like
+% either \opt{\meta{option}}|=|\val{\meta{value}} or
+% \opt{\meta{option}}|=|\val{\{\meta{outputformat}=\meta{value}\}} and even
+% \opt{\meta{option}}|=|\val{\{\meta{outputformat}+=\meta{value}\}} where the
+% desired output~format is trailed with |+| as inner key.
+%
+% The first variant is applied to all output formats in general. If one of
+% these mentioned options is evaluated and a output format specific value was
+% given like in the second variant, the general setting is overwritten. If the
+% general setting should be used and extended by an additional output format
+% specific settings, then the third variant is to be used. In this case, no
+% output format specific setting (second variant) must not have been used.
+%
+% If you want to reverse any setting, you only have to use \cs{relax} as a
+% value, either for a general option (\opt{\meta{option}}|=|\val{\cs{relax}})
+% or a specific one
+% (\opt{\meta{option}}|=|\val{\{\meta{outputformat}[+]=\cs{relax}\}}).
+%
+% \DescribeOption{convertdpi}
+% This options controls the used density for all file~formats or a specific one,
+% whether \app{ImageMagick} or \app{Ghostscript} is used for the graphic
+% conversion. The desired resolution of the converted file is given in dots per
+% inch~(DPI) either as a scalar value (e.g.~\opt{convertdpi}|=|\val{600}) or
+% with different resolutions in x- and y\hbox{-}direction
+% (e.g.~\opt{convertdpi}|=|\val{600x400}).
+%
+% As described before, it's also possible to declare a specific resolution for
+% each desired converting format. For example, you want to set different
+% resolution for PNG and JPG~formats and something for all other formats:
+% \begin{svgexample}
+% \svgsetup{%
+% convertdpi={png=600},%
+% convertdpi={jpg=150},%
+% convertdpi=300%
+% }%
+% \end{svgexample}
+% If a setting for a specific output format is given, any unspecific setting is
+% overwritten, when the conversion to this format is done. With
+% \opt{convertdpi}|=|\val{\{\meta{outputformat}=\cs{relax}\}} a specific
+% setting can be reversed.
+%
+% Please note that not every graphic format support different resolutions in x-
+% and y\hbox{-}direction. So using a value like \opt{convertdpi}|=|\val{600x400}
+% may not necessarily lead to the desired result. However, this is then due to
+% the used conversion tool and not to the processing of the option.
+%
+%
+% \subsubsection{Settings for the invocation of \app{ImageMagick}}
+%
+% \DescribeOptions{magickexe,magicksetting,magickoperator}
+% The conversion with \app{ImageMagick} via the \file{magick} or \file{convert}
+% command-line~tool can be controlled with these options. The option
+% \opt{magickexe} determines the used executable and is set to \file{magick} on
+% Windows and otherwise to \file{convert} by default. Additionally, there are
+% the two options \opt{magicksetting} and \opt{magickoperator} which can be
+% used to define \emph{settings} and \emph{operators} for the conversion
+% process. As described before, the two options \opt{magicksetting} and
+% \opt{magickoperator} can be set for all output formats or a \emph{specific}
+% one either resetting or extending the general settings. For further
+% information see the documentation of
+% \hrfn{http://www.imagemagick.org/script/command-line-processing.php}%
+% {\app{ImageMagick} command-line tool}.
+%
+%
+% \subsubsection{Settings for the invocation of \app{Ghostscript}}
+%
+% \DescribeOptions{gsexe,gsdevice,gsopt}
+% The conversion with \app{Ghostscript} is done with command-line~tool \file{gs}
+% on unix-like operating systems and \file{gswin64c} or \file{gswin32c} on
+% Windows. The executable can be changed with option \opt{gsexe}. Because
+% \app{Ghostscript} requires the specification of a device, there are some
+% predefined for the most common output formats. These are:
+% \begin{svgexample}
+% \svgsetup{%
+% gsdevice={png=png16m},gsdevice={jpeg=jpeg},gsdevice={jpg=jpeg},%
+% gsdevice={tif=tiff48nc},gsdevice={tiff=tiff48nc},%
+% gsdevice={eps=eps2write},gsdevice={ps=ps2write}%
+% }%
+% \end{svgexample}
+% Furthermore, with \opt{gsopt} additional switches for \app{Ghostscript} can
+% be set. As described before, both \opt{gsdevice} and \opt{gsopt} can be
+% defined in general or for specific output formats. For further information
+% see the documentation of
+% \hrfn{https://ghostscript.com/doc/current/Use.htm}{\app{Ghostscript}}.
+%
+%
+%
+% \section{Example}
+%
+% As an minimal example\footnote{\ignorespaces%
+% The image used here is a slightly modified version of the image used in the
+% initial documentation on how to include a SVG~file in \LaTeX{} by
+% Johan\,B.\,C.~Engelen available as package
+% \href{http://www.ctan.org/pkg/svg-inkscape}{\pkg{svg-inkscape} on CTAN}.
+% } take the following lines of code:
+% \begin{svgexample}
+% \documentclass{article}
+% \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
+% \usepackage[T1]{fontenc}
+% \usepackage{svg}
+% \usepackage[off]{svg-extract}
+% \svgsetup{clean=true}
+% %\pdfsuppresswarningpagegroup=1
+% \usepackage{relsize}
+% \usepackage{subcaption}
+% \begin{document}
% \begin{figure}
-% \subfloat[This text is too large!]{\includesvg[clean,
-% preamble=preamble.tex,pdf,width=5cm]{example}}
-% \subfloat[This text fits better.]{\includesvg[clean,
-% preamble=preamble.tex,eps,pretex=\relscale{0.5},width=5cm]{example}}
-% \caption{An example figure.\label{fig:example}}
+% \begin{minipage}{.5\linewidth}
+% \includesvg[width=\linewidth]{svg-example}%
+% \subcaption{This text is too large!}
+% \end{minipage}%
+% \begin{minipage}{.5\linewidth}
+% \includesvg[width=\linewidth,pretex=\relscale{0.6}]{svg-example}%
+% \subcaption{This text fits better.}
+% \end{minipage}
+% \caption{An example figure with \LaTeX~support}\label{fig:example}
% \end{figure}
-% \end{example}
-% where the \svg |example.svg| within this directory has been included
-% twice using the |\svginclude| command. The output is shown in Figure
-% \ref{fig:example}.
-%
-% \begin{figure}
-% \begin{center}
-% \subfloat[This text is too
-% large!]{\includesvg[name=Fig.1a,clean,
-% preamble=preamble.tex,pdf,width=5cm]{example}} \subfloat[This
-% text fits
-% better.]{\includesvg[name=Fig.1b,clean,preamble=preamble.tex,
-% eps,pretex=\relscale{0.5},width=5cm]{example}}
-% \caption{An example figure.\label{fig:example}}
-% \end{center}
+% \begin{figure}\centering
+% \includesvg[%
+% width=.5\linewidth,inkscapelatex=false,extractformat={pdf,eps}%
+% ]{svg-example}%
+% \caption{The same example figure without \LaTeX~support}
+% \end{figure}
+% \end{document}
+% \end{svgexample}
+% \begin{figure}[tb]
+% \null\hfill\ignorespaces%
+% \begin{minipage}{.45\linewidth}
+% \includesvg[width=\linewidth]{svg-example}%
+% \subcaption{This text is too large!}\label{fig:example-tex-a}
+% \end{minipage}\hfill\ignorespaces%
+% \begin{minipage}{.45\linewidth}
+% \includesvg[width=\linewidth,pretex=\relscale{0.6}]{svg-example}%
+% \subcaption{This text fits better.}\label{fig:example-tex-b}
+% \end{minipage}
+% \hfill\null\ignorespaces%
+% \caption{An example figure with \LaTeX~support}\label{fig:example-tex}
+% \end{figure}
+% \begin{figure}[tb]\centering
+% \includesvg[%
+% width=.5\linewidth,inkscapelatex=false,extractformat={pdf,eps}%
+% ]{svg-example}%
+% \caption{The same example figure without \LaTeX~support}\label{fig:example}
% \end{figure}
%
-% The first subfigure is created with the export option |pdf| with the
-% default |name|, and so the file |Fig.1a.pdf| is extracted. However,
-% the text is overrunning the margins of the image, and so the second
-% subfigure decreases the relative size of the text within the image
-% using the |pretex| option. Now, an \eps is requested for
-% extraction, and so the file |Fig.1b.eps| is created.
-%
-% Notice that for both subfigures, the |preamble| was set to
-% |preamble.tex|, also included in this current directory, rather than
-% the default current document. Additionally, the flag |clean| has
-% been used which forces the cleanup of any extraneous generated
-% files.
-%
-% \section{ROOT}\label{sec:root}
-%
-% \croot has the ability to export directly to an \svg, which means
-% that it is possible to completely by-pass all of \croot's internal
-% text rendering machinery, and let \latex handle the text
-% natively. This means that all of the ugly fonts that are rendered by
-% \croot can now be completely avoided, with the additional bonus of
-% being able to add references within plots. So how does one go about
-% using this package with \croot?
+% If you are willing to compile the example, there are two aspects to consider.
+% First, the included SVG~file \file{svg-example.svg} has to be located in the
+% current folder and is located in \file{\meta{texmf}/doc/latex/svg/examples/}.
+% Second, you have to run the desired \LaTeX~engine with
+% \file{-{}-shell-escape} option enabled.
+%
+% The output is shown in \autoref{fig:example-tex} and \autoref{fig:example}.
+% Within this example the file \file{svg-example.svg} was included three times
+% using the \cs{includesvg} command.
+%
+% As you can see, \autoref{fig:example-tex-a} is created with default settings,
+% except for the width specification. So the \app{Inkscape}~export with
+% \LaTeX~support is done as well as the extraction of a independent graphic~file
+% in PDF~format as the \pkg{svg-extract} package was loaded.
+%
+% However, the text is slightly overrunning the margins of the image, and so
+% \autoref{fig:example-tex-b}---which again uses the same \app{Inkscape}~export
+% results---decreases the font size of the text within the image relative
+% using the \prm{pretex} option together with the \cs{relscale} command
+% provided by the \pkg{relsize} package.
+%
+% In \autoref{fig:example} the same SVG~file was used but without the export
+% of a separate \LaTeX~file containing all text elements.
+%
+% Feel free to use this given example to try out all the options and
+% possibilities described in \autoref{sec:inkscape} for package \pkg{svg}.
+% Especially if you want to use package \pkg{svg-extract} for the automated
+% extraction of independent graphics (\autoref{sec:extract}) and their
+% conversion to different graphic formats with \app{ImageMagick} and/or
+% \app{Ghostscript} (\autoref{sec:convert}), this example can be easily used
+% for the first steps.
+%
+%
+%
+% \section{Troubleshooting and reporting issues}
+%
+% When using the packages \pkg{svg} and \pkg{svg-extract}, the most likely
+% occurring problems will be caused by calling the external programs. For this
+% reason, a short package information is written into the log~file right before
+% each call of an external program via shell. If a file should have been
+% created, both packages check after the external call, whether this file
+% exists or not and raise an error or at least a warning, if this file is
+% missing. If you got such a message, please check the log~file for lines like:
+% \begin{quote}
+% |Package svg Info:| or |Package svg-extract Info:|
+% \end{quote}
+% Right afterwards, there should appear |runsystem(<command>)...excuted.| which
+% you should try to execute manually from shell in the right directory. In most
+% cases, the problem will be an invalid command call. If something goes wrong
+% during the extraction/converting process of package \pkg{svg-extract}, it
+% would make sense to set option \opt{clean}|=|\val{false} to not delete any
+% auxiliary files that might be needed.
+%
+% If you are sure that the problem is not caused by the configuration of your
+% operating system, you can send an error report either via email or create a
+% new issue on GitHub. Both addresses can be found on the title.
+%
+% \minisec{When using pdf\LaTeX{} there are a lot of warnings}
+%
+% It may happen that several warnings like
+% \begin{quote}\ttfamily\raggedright%
+% pdfTeX warning:\,pdflatex.exe(file \meta{filename}.pdf):\,PDF inclusion:
+% multiple pdfs with page group included in a single page
+% \end{quote}
+% occur when including the PDF~graphics exported with \app{Inkscape}. This is
+% related to the handling of transparency effects within PDF~files. Since
+% pdf\TeX~version 1.40.15 or later, you can get rid of these messages by using
+% \cs{pdfsuppresswarningpagegroup}|=|\val{1}. See also the discussion on
+% \hrfn{http://tex.stackexchange.com/questions/76273/}{LaTeX Stack Exchange}
+% for more information.
+%
+%
+%
+% \section{Include SVG files created with \app{ROOT}}
+%
+% This section was originally written by Philip Ilten. In the hope that since
+% then nothing has changed fundamentally in the described procedure, this
+% passage remains in the documentation, even if it will almost certainly be
+% relevant to experimental particle physicists only, who frequently use the
+% analysis package \app{ROOT}.
+%
+% \app{ROOT} has the ability to export directly to a SVG~file, which means that
+% it is possible to completely by-pass all of \app{ROOT}'s internal text
+% rendering machinery, and let \LaTeX{} handle the text natively. This means
+% that all of the ugly fonts that are rendered by \app{ROOT} can now be
+% completely avoided, with the additional bonus of being able to add references
+% within plots. So how does one go about using this package with \app{ROOT}?
% \begin{enumerate}
-% \item Create the plot with \croot as normal, but turn off all \latex
-% interpretation of text strings. This is a bit tricky, but can be
-% accomplished by setting the font in \croot to a precision of zero
-% as described in the documentation for
-% \href{http://root.cern.ch/root/html/TAttText.html}{\tt
-% TAttFill}. Remember that the font is set using the function
-% |(TAttFill*)->SetTextFont(i)| where |i| is the (font type) $\times
-% ~10 ~+$ (font precision). In the following lines of code, a
-% |TStyle| is defined which sets the font to type ``Courier New''
-% with a precision of zero.
-% \begin{example}
+% \item
+% Create the plot with \app{ROOT} as normal, but turn off all
+% \LaTeX~interpretation of text strings. This is a bit tricky, but can be
+% accomplished by setting the font in \app{ROOT} to a precision of zero as
+% described in the documentation for
+% \hrfn{http://root.cern.ch/root/html/TAttText.html}{\texttt{TAttFill}}.
+% Remember that the font is set by using the function
+% |(TAttFill*)->SetTextFont(i)| with
+% \[\texttt{i}=\textrm{(font type)} \times 10 + \textrm{(font precision)}\]
+% In the following lines of code, a |TStyle| is defined which sets the font
+% to type ``Courier New'' with a precision of zero.
+% \begin{svgexample}[backgroundcolor=\color{red!10}]
% TStyle *style = new TStyle("style","style"); int FONT = 80;
% style->SetTextFont(FONT);
% style->SetLabelFont(FONT,"XYZ");
@@ -397,71 +1150,3929 @@ urlcolor=blue]{hyperref}
% style->SetTitleFont(FONT,"");
% gROOT->SetStyle("style");
% gROOT->ForceStyle();
-% \end{example}
-% Now, just use the standard \latex syntax for creating labels,
-% etc. Note however, that the backslash must be escaped due to
-% interpretation of special characters by C++.
-% \item Print the plot as an \svg.
-% \begin{example}
+% \end{svgexample}
+% Now, you can just use the well\hbox{-}known standard \LaTeX~syntax for
+% creating labels, etc. Note however, that backslashes have to be escaped due
+% to interpretation of special characters by \app{C++}.
+% \item Print the plot as a SVG~file.
+% \begin{svgexample}[backgroundcolor=\color{red!10}]
% gPad->Print("foo.svg");
-% \end{example}
-% \item Include the \svg within the document using this package.
-% \begin{example}
-% \usepackage[clean,pdf]{svg}
-% ...
-% \includesvg[width=\columnwidth]{foo}
-% \end{example}
+% \end{svgexample}
+% \item Include the SVG~file within the document using this package.
+% \begin{svgexample}
+% \usepackage{svg}
+% \usepackage{svg-extract}
+% \svgsetup{clean=true}
+% §\dots§
+% \includesvg[width=\linewidth]{foo}
+% \end{svgexample}
% \end{enumerate}
%
-% \begin{figure}
-% \begin{center}
-% \includesvg[clean,preamble=preamble.tex,pdf,png,height=6cm,pretex=\tiny]
-% {root}
-% \end{center}
-% \caption{Rendering of a \croot plot (no more ``Comic
-% CERNs'').\label{fig:root}}
-% \end{figure}
+% Consider the following example image produced by \app{ROOT} in
+% \autoref{fig:root}. This figure was generated by the \app{ROOT} macro
+% \file{root.C}, provided within \file{\meta{texmf}/doc/latex/svg/examples/},
+% which produces the file~\file{root.svg} when run. The code used to produce
+% this SVG~file from within \app{ROOT} is
+% \lstinputlisting[style=svg,backgroundcolor=\color{red!10}]{examples/root.C}
+% where the text produced within the \app{ROOT} plot is set to a precision of
+% zero.
%
-% Consider the example image produced by \croot in Figure
-% \ref{fig:root}. This figure was generated by the \croot macro
-% |root.C|, provided within this directory, which produces the \svg
-% |root.svg| when run. The code used to produce this \svg from within
-% \croot is
-% \lstinputlisting[basicstyle=\footnotesize\ttfamily,columns=flexible,
-% frame=single,backgroundcolor=\color{yellow!20},xleftmargin=\fboxsep,
-% xrightmargin=\fboxsep,gobble=1]{root.C} where the text produced
-% within the \croot plot is set to a precision of zero. The plot was
-% then included within this document using the \latex code
-% \begin{example}
+% The plot was then included within this document using the following
+% \LaTeX~code
+% \begin{svgexample}
% \begin{figure}
-% \begin{center}
-% \includesvg[clean,preamble=preamble.tex,pdf,png,height=6cm,pretex=\tiny]
-% {root}
-% \end{center}
-% \caption{Rendering of a \croot plot (no more ``Comic
-% CERNs'').\label{fig:root}}
+% \centering%
+% \includesvg[%
+% inkscapearea=page,height=6cm,pretex=\tiny,convertformat=png%
+% ]{root}%
+% \caption{Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}}%
+% \label{fig:root}%
% \end{figure}
-% \end{example}
-% which produces the extracted images |Fig.2.pdf| and
-% |Fig.2.png|. Enjoy plots from \croot with natively rendered \latex!
-%
-% \StopEventually{\section{Thanks} Thanks to my lovely wife \'Eadaoin
-% for being a very patient beta tester and important
-% collaborator. Thanks is also due to J. Engelen for creating this
-% functionality within \inkscape, and of course to all the developers
-% of \inkscape.}
-%
-% \section{Implementation}\label{sec:implementation}
-%
-% \begin{macro}{initialization}
-% The package, which requires the packages |xkeyval| for the
-% options, |subfig| for automatic labeling within the subfigure
-% command, the |import| package for correct handling of paths,
-% |graphicx| for the \pdf inclusion commands, |transparent| for
-% transparency, and |xcolor| for color, is initialized.
+% \end{svgexample}
+% \begin{figure}
+% \centering%
+% \includesvg[%
+% inkscapearea=page,height=6cm,pretex=\tiny,convertformat=png%
+% ]{root}%
+% \caption{Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}}%
+% \label{fig:root}%
+% \end{figure}
+% which includes the graphic as well as the \LaTeX~file exported by
+% \app{Inkscape}, produces the extracted PDF~image~(\file{root.pdf}) and
+% converts this to a PNG~image~(\file{root.png}) by using \app{ImageMagick}.
+% Enjoy plots from \app{ROOT} with natively rendered \LaTeX!
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
% \iffalse
-%<*svg>
+%<*package&option>
% \fi
+%
+%
+%
+% \cleardoublepage
+% \appendix
+% \part{Implementation}
+% \section{Initialization}
+%
+% The package \pkg{svg} requires \pkg{scrbase} for options processing, the
+% packages \pkg{ifluatex}, \pkg{ifpdf} and \pkg{ifxetex} for detecting the
+% used \LaTeX~engine, \pkg{pdftexcmds} for pdf\TeX{} primitives when using
+% Lua\TeX, \pkg{shellesc} and \pkg{ifplatform} for engine independent access to
+% systems commands and files as well as \pkg{graphicx} for the inclusion of
+% PDF~files. The usage of packages \pkg{xcolor} and \pkg{transparent}
+% can be switched of with the corresponding options. Package \pkg{svg-extract}
+% only needs package \pkg{svg} itself.
+% \begin{macrocode}
+%<*base>
+\RequirePackage{scrbase}[2016/06/14]
+\RequirePackage{ifxetex}[2010/09/12]
+\RequirePackage{ifluatex}[2016/05/16]
+\RequirePackage{ifpdf}[2016/05/14]
+\RequirePackage{pdftexcmds}[2016/05/21]
+\RequirePackage{shellesc}[2016/06/07]
+\RequirePackage{graphicx}[1999/02/16]
+%</base>
+%<*extract>
+\RequirePackage{svg}[2017/03/27]
+%</extract>
+% \end{macrocode}
+% With the interface provided by package \pkg{scrbase} all options, which can
+% be set either as package options or with \cs{svgsetup}, as well as the
+% optional parameters for both user commands
+% \cs{includesvg}\oarg{parameters}\marg{svg filename} and
+% \cs{includeinkscape}\oarg{parameters}\marg{graphic filename} are defined.
+% \begin{macrocode}
+\DefineFamily{SVG}
+\DefineFamilyMember{SVG}
+% \end{macrocode}
+% \begin{macro}{\svg@deprecated@key}
+% With version v2.00 the whole user interface was renewed. For reasons of
+% compatibility, outdated options and parameters from version~v1.0 are also
+% provided. If an old key was given, a warning is issued and the valid key is
+% used.
+% \begin{macrocode}
+%<*base>
+\newcommand*\svg@deprecated@key[3][svg]{%
+ \PackageWarning{#1}{%
+ The option key `#2' is deprecated.\MessageBreak%
+ It's recommended to use `#3'\MessageBreak%
+ instead%
+ }%
+ \FamilyOptions{SVG}{#3}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \svg@deprecated@key
+% \begin{macro}{\svg@tempa}
+% \begin{macro}{\svg@tempb}
+% \begin{macro}{\if@svg@tempswa}
+% \begin{macro}{\svg@tempcnt}
+% Internal temporary macros.
+% \begin{macrocode}
+%<*base>
+\newcommand*\svg@tempa{}
+\newcommand*\svg@tempb{}
+\newif\if@svg@tempswa
+\newcount\svg@tempcnt
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \svg@tempcnt
+% \end{macro}^^A \if@svg@tempswa
+% \end{macro}^^A \svg@tempb
+% \end{macro}^^A \svg@tempa
+%
+% \iffalse
+%</package&option>
+%<*package&base>
+%<*option>
+% \fi
+%
+%
+%
+% \section{Including SVG files with package \pkg{svg}}
+% \subsection{Options}
+%
+% Within the exported \LaTeX~files of \app{Inkscape}, some commands are used
+% out of additional packages. But maybe the user doesn't want to load this
+% packages anyways.
+%
+% \begin{option}{usexcolor}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{option}{noxcolor}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\if@svg@use@xcolor}
+% \begin{option}{usetransparent}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{option}{notransparent}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\if@svg@use@transparent}
+% Options for preventing packages \pkg{xcolor} and \pkg{transparent} to be
+% loaded.
+% \begin{macrocode}
+\newif\if@svg@use@xcolor
+\FamilyBoolKey{SVG}{usexcolor}{@svg@use@xcolor}
+\DeclareOption{noxcolor}{\FamilyOptions{SVG}{usexcolor=false}}
+\newif\if@svg@use@transparent
+\FamilyBoolKey{SVG}{usetransparent}{@svg@use@transparent}
+\DeclareOption{notransparent}{\FamilyOptions{SVG}{usetransparent=false}}
+% \end{macrocode}
+% They are only available during the loading process of package \pkg{svg}.
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \RelaxFamilyKey{SVG}{usexcolor}%
+ \RelaxFamilyKey{SVG}{usetransparent}%
+ \if@svg@use@xcolor%
+ \RequirePackage{xcolor}[2016/05/11]%
+ \else%
+ \AfterPackage*{xcolor}{%
+ \PackageWarning{svg}{Package `xcolor' was loaded anyway}%
+ }%
+ \fi%
+ \if@svg@use@transparent%
+ \RequirePackage{transparent}[2016/05/16]%
+ \else%
+ \AfterPackage*{transparent}{%
+ \PackageWarning{svg}{Package `transparent' was loaded anyway}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svg@use@transparent
+% \end{option}^^A notransparent
+% \end{option}^^A usetransparent
+% \end{macro}^^A \if@svg@use@xcolor
+% \end{option}^^A noxcolor
+% \end{option}^^A usexcolor
+%
+%
+%
+% \subsubsection{The invocation of \app{Inkscape}}
+%
+% The Application \app{Inkscape} is used to create includable graphic files in
+% a desired format (PDF/EPS/PS/PNG) out of files in SVG~format, whereas the
+% support of \LaTeX{} can optionally be used.
+%
+% \begin{option}{inkscape}
+% \changes{v2.00}{2017/02/17}{changed/extended}
+% \begin{macro}{\svg@ink@mode}
+% The intension of option \opt{inkscape} is to control the running behaviour of
+% \app{Inkscape}. It can be switched off at all or invoked only if necessarry
+% or the command line call can be forced with every \LaTeX~run. Additionally,
+% option \opt{inkscape} can be used as wrapper for options \opt{inkscapeformat},
+% \opt{inkscapelatex}, \opt{inkscapearea} and \opt{inkscapedpi}, which are
+% declared later.
+% \begin{macrocode}
+\newcommand*\svg@ink@mode{}
+\DefineFamilyKey{SVG}{inkscape}[true]{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{inkscape}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {force}{2},{forced}{2},{overwrite}{2},%
+ {pdf}{3},{eps}{4},{ps}{5},{png}{6},%
+ {drawing}{7},{crop}{7},%
+ {page}{8},{nocrop}{8},%
+ {tex}{9},{latex}{9},{exportlatex}{9},{latexexport}{9},%
+ {notex}{10},{nolatex}{10},{noexportlatex}{10},{nolatexexport}{10},%
+ {latexnoexport}{10},{raw}{10},{plain}{10},{simple}{10}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifnum\svg@tempa<\thr@@\relax%
+ \let\svg@ink@mode\svg@tempa%
+ \else%
+ \ifcase\svg@tempa\relax\or\or\or% pdf
+ \FamilyOptions{SVG}{inkscapeformat=pdf}%
+ \or% eps
+ \FamilyOptions{SVG}{inkscapeformat=eps}%
+ \or% ps
+ \FamilyOptions{SVG}{inkscapeformat=ps}%
+ \or% png
+ \FamilyOptions{SVG}{inkscapeformat=png}%
+ \or% drawing
+ \FamilyOptions{SVG}{inkscapearea=drawing}%
+ \or% page
+ \FamilyOptions{SVG}{inkscapearea=page}%
+ \or% tex
+ \FamilyOptions{SVG}{inkscapelatex=true}%
+ \or% notex
+ \FamilyOptions{SVG}{inkscapelatex=false}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% It's also possible to set the option \opt{inkscapedpi} by passing a number
+% followed by \val{dpi} like \opt{inkscape}|=|\val{300dpi}.
+% \begin{macrocode}
+ \else% dpi
+ \def\svg@tempa##1dpi##2\@nil{%
+ \ifstr{##2}{dpi}{\FamilyOptions{SVG}{inkscapedpi=##1}}{}%
+ }%
+ \lowercase{\svg@tempa#1dpi\@nil}%
+% \end{macrocode}
+% In version~v1.0 the option \opt{inkscape} was used to set both the executable
+% and options for \app{Inkscape}. This is taken into account here.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed\else%
+% \end{macrocode}
+% Splitting executable from options with delimitted macros. After calling
+% \cs{svg@tempa} with the given value, the part for the executable is stored in
+% \cs{svg@tempa} and the option part---which is recognized by the first |-|
+% character--- in \cs{svg@tempb}.
+% \begin{macrocode}
+ \def\svg@tempa##1-##2\@nil{%
+ \IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
+ \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}%
+ \svg@tempa#1\@nil%
+ }%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1-\@nil%
+ \PackageWarning{svg}{%
+ Setting the executable%
+ \ifx\svg@tempb\@empty\else%
+ \space and associated options%
+ \fi%
+ \MessageBreak%
+ for Inkscape should be done with options\MessageBreak%
+ `inkscapeexe=\svg@tempa'%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak and `inkscapeopt=\svg@tempb'%
+ \fi.\MessageBreak%
+ Nevertheless, this was done by now anyway%
+ }%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{inkscapeexe=\svg@tempa}%
+ \ifx\svg@tempb\@empty\else%
+ \noexpand\FamilyOptions{SVG}{inkscapeopt=\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@mode
+% \end{option}^^A inkscape
+% \begin{option}{on}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{off}
+% \changes{v2.00}{2017/02/24}{new}
+% Package options which can be used to switch functionality on or off during
+% the loading of package \pkg{svg}.
+% \begin{macrocode}
+\DeclareOption{on}{\FamilyOptions{SVG}{inkscape=true}}
+\DeclareOption{off}{\FamilyOptions{SVG}{inkscape=false}}
+% \end{macrocode}
+% \end{option}^^A off
+% \end{option}^^A on
+% \begin{option}{inkscapeformat}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@ink@format}
+% With option \opt{inkscapeformat} the output format of the \app{Inkscape}
+% export function, which is called via \cs{ShellEscape}, can be configured.
+% It is set to \val{pdf} or, if dvi output could be detected, to \val{eps}
+% during initialization.
+% \begin{macrocode}
+\newcommand*\svg@ink@format{pdf}
+\ifxetex\else\ifpdf\else
+ \renewcommand*\svg@ink@format{eps}
+\fi\fi
+\DefineFamilyKey{SVG}{inkscapeformat}{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{inkscapeformat}{svg@tempa}{%
+ {pdf}{0},{eps}{1},{ps}{2},{png}{3}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% latex
+ \renewcommand*\svg@ink@format{pdf}%
+ \or% eps
+ \renewcommand*\svg@ink@format{eps}%
+ \or% ps
+ \renewcommand*\svg@ink@format{ps}%
+ \or% png
+ \renewcommand*\svg@ink@format{png}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@format
+% \end{option}^^A inkscapeformat
+% \begin{option}{inkscapelatex}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@ink@latex}
+% This options controls whether the \app{Inkscape} export will be invoked with
+% or without the generation of a seperate \LaTeX~file.
+% \begin{macrocode}
+\newif\if@svg@ink@latex
+\FamilyBoolKey{SVG}{inkscapelatex}{@svg@ink@latex}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@latex
+% \end{option}^^A inkscapelatex
+% \begin{option}{inkscapearea}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@ink@area}
+% The exported area for an \app{Inkscape} graphic can be set with this option.
+% \begin{macrocode}
+\newcommand*\svg@ink@area{}
+\DefineFamilyKey{SVG}{inkscapearea}{%
+ \FamilySetNumerical{SVG}{inkscapearea}{svg@tempa}{%
+ {drawing}{0},{crop}{0},%
+ {page}{1},{nocrop}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% drawing
+ \renewcommand*\svg@ink@area{-D}%
+ \else% page
+ \renewcommand*\svg@ink@area{-C}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@area
+% \end{option}^^A inkscapearea
+% \begin{option}{inkscapedpi}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{option}{inkscapedensity}
+% \begin{macro}{\svg@ink@dpi}
+% A density can be chosen, which is used during export with \app{Inkscape} for
+% bitmaps and rasterization of filters.
+% \begin{macrocode}
+\newcommand*\svg@ink@dpi{}
+\let\svg@ink@dpi\relax
+\DefineFamilyKey{SVG}{inkscapedpi}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@ink@dpi\relax%
+ \FamilyKeyStateProcessed%
+ }{%
+ \def\svg@tempa##1dpi##2\@nil{\def\svg@tempa{##1}}%
+ \lowercase{\svg@tempa#1dpi\@nil}%
+ \ifnumber{\svg@tempa}{%
+ \edef\svg@ink@dpi{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ }{}%
+ }%
+}
+\DefineFamilyKey{SVG}{inkscapedensity}{\FamilyOptions{SVG}{inkscapedpi=#1}}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@dpi
+% \end{option}^^A inkscapedensity
+% \end{option}^^A inkscapedpi
+% \begin{option}{inkscapeexe}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@ink@exe}
+% \begin{option}{inkscapeopt}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@ink@opt}
+% With these options, the terminal command for invoking \app{Inkscape} as well
+% as additional options can be defined.
+% \begin{macrocode}
+\newcommand*\svg@ink@exe{inkscape}
+\DefineFamilyKey{SVG}{inkscapeexe}{%
+ \renewcommand*\svg@ink@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@ink@opt{}
+\DefineFamilyKey{SVG}{inkscapeopt}{%
+ \renewcommand*\svg@ink@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@opt
+% \end{option}^^A inkscapeopt
+% \end{macro}^^A \svg@ink@exe
+% \end{option}^^A inkscapeexe
+%
+%
+%
+% \subsubsection{Setting input folder}
+%
+% \begin{option}{svgpath}
+% \changes{v2.00}{2017/02/12}{deprecated}
+% In version~v1.0 setting the path to SVG~files was done via option. So
+% this method is provided as well.
+% \begin{macrocode}
+\DefineFamilyKey{SVG}{svgpath}{%
+ \PackageWarning{svg}{%
+ The key `svgpath' is deprecated. It's recommended\MessageBreak%
+ to use `\string\svgpath' instead%
+ }%
+ \ifx\svgpath\@undefined%
+ \AtEndOfPackage{\svgpath{{#1}}}%
+ \else%
+ \svgpath{{#1}}%
+ \fi%
+ \FamilyKeyStateProcessed%
+}
+% \end{macrocode}
+% \end{option}^^A svgpath
+%
+%
+%
+% \subsubsection{Setting output folder}
+%
+% \begin{option}{inkscapepath}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{option}{inkscapename}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@out@path}
+% \begin{macro}{\svg@out@name}
+% \begin{macro}{\svg@out@base}
+% The option \opt{inkscapepath} controls, in which folder the results of the
+% \app{Inkscape} export will be located. With option \opt{inkscapename} the
+% name of the exported file itself can be changed.
+% \begin{macrocode}
+\newcommand*\svg@out@path{}
+\newcommand*\svg@out@name{\svg@file@name\svg@file@suffix}
+\newcommand*\svg@out@base{\svg@out@path\svg@out@name.\svg@ink@format}
+\DefineFamilyKey{SVG}{inkscapepath}{%
+ \FamilySetNumerical{SVG}{inkscapepath}{svg@tempa}{%
+ {svgpath}{0},{svgdir}{0},%
+ {svgsubpath}{1},{svgsubdir}{1},%
+ {basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
+ {basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% svgpath
+ \renewcommand*\svg@out@path{\svg@file@path}%
+ \or% svgsubpath
+ \renewcommand*\svg@out@path{\svg@file@path svg-inkscape/}%
+ \or% basepath
+ \renewcommand*\svg@out@path{./}%
+ \or% basesubpath
+ \renewcommand*\svg@out@path{./svg-inkscape/}%
+ \fi%
+ \else%
+ \renewcommand*\svg@out@path{#1}%
+ \svg@normalize@path{\svg@out@path}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{inkscapename}{%
+ \renewcommand*\svg@out@name{#1\svg@file@suffix}%
+ \FamilyKeyStateProcessed%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@out@base
+% \end{macro}^^A \svg@out@name
+% \end{macro}^^A \svg@out@path
+% \end{option}^^A inkscapename
+% \end{option}^^A inkscapepath
+%
+%
+%
+% \subsubsection{Options for the inclusion of graphics}
+%
+% After the graphic export with \app{Inkscape}, the inclusion of those graphics
+% can be controlled with the following options.
+%
+% \begin{option}{width}
+% \begin{macro}{\svg@param@width}
+% \begin{option}{height}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@param@width}
+% \begin{option}{scale}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\svg@param@scale}
+% These options determine the size of the included graphics. The usage of
+% \val{\cs{relax}} as value resets the respective option to the default
+% behavior.
+% \begin{macrocode}
+\newcommand*\svg@param@width{\z@}
+\DefineFamilyKey{SVG}{width}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@width{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{width}{\svg@param@width}{#1}%
+ \ifdim\svg@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+}
+\newcommand*\svg@param@height{\z@}
+\DefineFamilyKey{SVG}{height}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@height{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{height}{\svg@param@height}{#1}%
+ \ifdim\svg@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+}
+\newcommand*\svg@param@scale{1}
+\DefineFamilyKey{SVG}{scale}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@scale{1}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \ifdim\dimexpr#1\p@\relax>\z@\relax%
+ \renewcommand*\svg@param@scale{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@param@scale
+% \end{option}^^A scale
+% \end{macro}^^A \svg@param@height
+% \end{option}^^A height
+% \end{macro}^^A \svg@param@width
+% \end{option}^^A width
+% \begin{option}{pretex}
+% \begin{macro}{\svg@param@pretex}
+% \begin{option}{apptex}
+% \begin{macro}{\svg@param@apptex}
+% \begin{option}{postex}
+% \changes{v2.00}{2017/03/02}{deprecated}
+% For executing code right before or after the graphic inclusion, two hooks are
+% defined.
+% \begin{macrocode}
+\newcommand*\svg@param@pretex{}
+\let\svg@param@pretex\relax
+\DefineFamilyKey{SVG}{pretex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@param@pretex\relax%
+ }{%
+ \def\svg@param@pretex{#1}%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@param@apptex{}
+\let\svg@param@apptex\relax
+\DefineFamilyKey{SVG}{apptex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@param@apptex\relax%
+ }{%
+ \def\svg@param@apptex{#1}%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{postex}{%
+ \svg@deprecated@key{postex=#1}{apptex=#1}%
+}
+% \end{macrocode}
+% \end{option}^^A postex
+% \end{macro}^^A \svg@param@apptex
+% \end{option}^^A apptex
+% \end{macro}^^A \svg@param@pretex
+% \end{option}^^A pretex
+% \begin{option}{lastpage}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{counter}{svg@param@lastpage}
+% For \app{Inkscape}~0.91 a bug concerning the \LaTeX~export has been reported
+% (\url{https://bugs.launchpad.net/ubuntu/+source/inkscape/+bug/1417470}).
+% Sometimes the \LaTeX~file created by \app{Inkscape} tries to include more
+% pages than actually are present in the PDF~file. To work around this
+% problem, a patch is provided. For this purpose, the total page number is read
+% from the PDF~file.
+% \begin{macrocode}
+\newcounter{svg@param@lastpage}
+\DefineFamilyKey{SVG}{lastpage}{%
+ \FamilySetNumerical{SVG}{lastpage}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},{ignore}{0},%
+ {true}{1},{on}{1},{yes}{1},{auto}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \FamilySetCounter{SVG}{lastpage}{svg@param@lastpage}{\m@ne}%
+ \or% true
+ \FamilySetCounter{SVG}{lastpage}{svg@param@lastpage}{\z@}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{counter}^^A svg@param@lastpage
+% \end{option}^^A lastpage
+% \begin{option}{draft}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\if@svg@draft}
+% The option \opt{draft} has the same effect as the eponymous option of package
+% \pkg{graphicx}.
+% \begin{macrocode}
+\newif\if@svg@draft
+\FamilyBoolKey{SVG}{draft}{@svg@draft}
+\AtBeginDocument{\if@svg@draft\else\ifGin@draft\@svg@drafttrue\fi\fi}
+% \end{macrocode}
+% \end{macro}^^A \if@svg@draft
+% \end{option}^^A draft
+%
+%
+%
+% \subsection{Handling path information}
+%
+% Both packages \pkg{svg} and \pkg{svg-extract} should be able to handle
+% user-defined input and output paths. As there is the possibility for users to
+% provide paths with or without quotes to \LaTeX, this is taken into account.
+%
+% \begin{macro}{\svg@quotes@remove}
+% \begin{macro}{\svg@quotes@@remove}
+% These two commands are used to remove all occurring quotes within a string.
+% The only argument passed to \cs{svg@quotes@remove} is not the string itself
+% but a macro in which a string is stored.
+% \begin{macrocode}
+\newcommand*\svg@quotes@remove[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \expandafter\svg@quotes@@remove\svg@tempa""\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@quotes@@remove{}
+\def\svg@quotes@@remove#1"#2"#3\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \edef\svg@tempa{#1}%
+ }{%
+ \svg@quotes@@remove#1#2#3""\@nil%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@quotes@@remove
+% \end{macro}^^A \svg@quotes@remove
+% \begin{macro}{\svg@quotes@check}
+% \begin{macro}{\svg@quotes@@check}
+% \begin{macro}{\if@svg@quotes@found}
+% During the treatment of paths, it may be necessary to temporarily remove
+% quotes and, if required, add them again later. For this purpose, the switch
+% \cs{if@svg@quotes@found} as well as the commands \cs{svg@quotes@check} and
+% \cs{svg@quotes@@check}, which controls the switch, are defined. As before,
+% the string is passed in a macro to \cs{svg@quotes@check}.
+% \begin{macrocode}
+\newif\if@svg@quotes@found
+\newcommand*\svg@quotes@check[1]{%
+ \expandafter\svg@quotes@@check#1"\@nil%
+}
+\newcommand*\svg@quotes@@check{}
+\def\svg@quotes@@check#1"#2\@nil{%
+ \IfArgIsEmpty{#2}{\@svg@quotes@foundfalse}{\@svg@quotes@foundtrue}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svg@quotes@found
+% \end{macro}^^A \svg@quotes@@check
+% \end{macro}^^A \svg@quotes@check
+% \begin{macro}{\svg@normalize@path}
+% \begin{macro}{\svg@normalize@@path}
+% If any path is given, a trailing slash is needed. These two macros ensure
+% that this condition is fulfilled in any case, even if this is not considered
+% by the user. As before, a macro containing the path string is passed to
+% \cs{svg@normalize@path}.
+% \begin{macrocode}
+\newcommand*\svg@normalize@path[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@check{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempa}%
+ \ifx\svg@tempa\@empty\relax%
+ \def\svg@tempa{./}%
+ \fi%
+ \expandafter\svg@normalize@@path\svg@tempa//\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \if@svg@quotes@found%
+ \noexpand\def\noexpand#1{"\unexpanded\expandafter{\svg@tempa}"}%
+ \else%
+ \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@normalize@@path{}
+\def\svg@normalize@@path#1/#2/\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \IfArgIsEmpty{#1}{\def\svg@tempa{}}{\def\svg@tempa{#1/}}%
+ }{%
+ \svg@normalize@@path#2/\@nil%
+ \edef\svg@tempa{#1/\unexpanded\expandafter{\svg@tempa}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@normalize@@path
+% \end{macro}^^A \svg@normalize@path
+% \begin{macro}{\svg@ifvalueisrelax}
+% For some keys the usage of \val{\cs{relax}} as a value should lead to a
+% special reaction, such as restoring to default behavior or reseting the key.
+% Therefore, \cs{svg@ifvalueisrelax} checks, whether \val{\cs{relax}} was used
+% as value or not.
+% \begin{macrocode}
+\newcommand*\svg@ifvalueisrelax[1]{%
+ \begingroup%
+ \def\svg@tempa{#1}%
+ \def\svg@tempb{\relax}%
+ \ifx\svg@tempa\svg@tempb\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ifvalueisrelax
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\svg@get@path}
+% \begin{macro}{\svg@get@@path}
+% \begin{macro}{\if@svg@file@found}
+% \begin{macro}{\svg@file@path}
+% \begin{macro}{\svg@file@name}
+% \begin{macro}{\svg@file@base}
+% \begin{macro}{\svg@file@suffix}
+% The command \cs{svg@get@path} tries to find a given SVG~file. If the
+% searched file wasn't found in the current path, all paths given with
+% \cs{svgpath} are evaluated. If there was no appropriate file again, all paths
+% given by \cs{graphicspath} are examined. In the last step, a given path
+% within the second mandatory argument is browsed. The results for file path
+% and name are stored in \cs{svg@file@path} and \cs{svg@file@name} as well as
+% the compound of both is saved in \cs{svg@file@base}.
+% \begin{macrocode}
+\newif\if@svg@file@found
+\newcommand*\svg@file@path{}
+\newcommand*\svg@file@name{}
+\newcommand*\svg@file@base{}
+\newcommand*\svg@file@suffix{}
+\newcommand*\svg@get@path[3][svg]{%
+ \begingroup%
+% \end{macrocode}
+% A maybe given, unneeded file extension is removed.
+% \begin{macrocode}
+ \edef\svg@tempa{#2}%
+ \svg@quotes@check{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempa}%
+ \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
+ \IfArgIsEmpty{#1}{%
+ \edef\svg@tempa{\filename@area\filename@base.\filename@ext}%
+ }{%
+ \edef\svg@tempa{\filename@area\filename@base.#1}%
+ }%
+ \if@svg@quotes@found%
+ \edef\svg@tempa{"\svg@tempa"}%
+ \fi%
+% \end{macrocode}
+% If \cs{svgpath} was used, it is searched first. If nothing was found,
+% \cs{graphicspath} is considered if defined followed by a path given in the
+% third argument. If nothing was found yet, the standard \cs{input@path} is
+% searched last.
+% \begin{macrocode}
+ \@svg@file@foundfalse%
+ \let\input@path\svg@path%
+ \svg@get@@path{\svg@tempa}%
+ \if@svg@file@found\else%
+ \ifx\Ginput@path\@undefined\else%
+ \let\input@path\Ginput@path%
+ \svg@get@@path{\svg@tempa}%
+ \fi%
+ \fi%
+ \IfArgIsEmpty{#3}{}{%
+ \if@svg@file@found\else%
+ \ifx#3\@undefined\else%
+ \edef\svg@tempb{{#3}}%
+ \let\input@path\svg@tempb%
+ \svg@get@@path{\svg@tempa}%
+ \fi%
+ \fi%
+ }%
+ \edef\svg@tempa{%
+ \endgroup%
+ \if@svg@file@found%
+ \noexpand\@svg@file@foundtrue%
+ \noexpand\def\noexpand\svg@file@path{\filename@area}%
+ \noexpand\def\noexpand\svg@file@name{\filename@base}%
+ \noexpand\def\noexpand\svg@file@base{\filename@area\filename@base}%
+ \else%
+ \noexpand\@svg@file@foundfalse%
+ \noexpand\def\noexpand\svg@file@path{}%
+ \noexpand\def\noexpand\svg@file@name{#2}%
+ \noexpand\def\noexpand\svg@file@base{#2}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+% \end{macrocode}
+% The macro \cs{svg@get@@path} does the actual search job.
+% \begin{macrocode}
+\newcommand*\svg@get@@path[1]{%
+% The specified file is searched with \cs{IfFileExists}. If the file search was
+% succesful, the macro \cs{svg@filename@parse} is called with the result.
+% \begin{macrocode}
+ \expandafter\IfFileExists\expandafter{#1}{%
+ \@svg@file@foundtrue%
+ \expandafter\svg@filename@parse\expandafter{\@filef@und}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@file@suffix
+% \end{macro}^^A \svg@file@base
+% \end{macro}^^A \svg@file@name
+% \end{macro}^^A \svg@file@path
+% \end{macro}^^A \if@svg@file@found
+% \end{macro}^^A \svg@get@@path
+% \end{macro}^^A \svg@get@path
+% \begin{macro}{\svg@filename@parse}
+% As the internal \LaTeXe{} command \cs{filename@parse} is not able to split a
+% given file name containing quotes, \cs{svg@filename@parse} is defined to
+% resolve this problem.
+% \begin{macrocode}
+\newcommand*\svg@filename@parse[1]{%
+ \begingroup%
+ \def\svg@tempa##1{%
+ \def\svg@tempb####1####2\@nil{%
+ \ifstr{####1}{"}{\def\svg@tempb{####2}}{\def\svg@tempb{####1####2}}%
+ }%
+ \expandafter\svg@tempb##1\@nil%
+ \edef##1{\svg@tempb}%
+ }%
+% \end{macrocode}
+% The given path and file is parsed with \cs{filename@parse}. If an extension
+% was found, it is appended to the file name for a second parsing run.
+% \begin{macrocode}
+ \filename@parse{#1}%
+ \ifx\filename@ext\relax\else%
+ \edef\filename@base{\filename@base.\filename@ext}%
+ \fi%
+% \end{macrocode}
+% If there are quotes in the file path, the closing one will be found as first
+% character in \cs{filename@base} as \cs{filename@area} is splitted at the last
+% slash. This leading quote is removed from \cs{filename@base} with
+% \cs{svg@tempa}.
+% \begin{macrocode}
+ \svg@quotes@check{\filename@area}%
+ \if@svg@quotes@found%
+ \svg@quotes@remove{\filename@area}%
+ \edef\filename@area{"\filename@area"}%
+ \svg@tempa{\filename@base}%
+ \fi%
+% \end{macrocode}
+% Before the second call of \cs{filename@parse} remaining quotes are removed
+% and the path in \cs{filename@area} is temporary stored in \cs{svg@tempa}.
+% \begin{macrocode}
+ \svg@quotes@check{\filename@base}%
+ \if@svg@quotes@found%
+ \svg@quotes@remove{\filename@base}%
+ \fi%
+ \let\svg@tempa\filename@area%
+ \expandafter\filename@parse\expandafter{\filename@base}%
+ \let\filename@area\svg@tempa%
+ \if@svg@quotes@found%
+ \edef\filename@base{"\filename@base"}%
+ \fi%
+% \end{macrocode}
+% With \cs{svg@tempa} the group is closed and the results are saved in the
+% macros \cs{filename@\dots}.
+% \begin{macrocode}
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\def\noexpand\filename@area{\filename@area}%
+ \noexpand\def\noexpand\filename@base{\filename@base}%
+ \ifx\filename@ext\relax%
+ \noexpand\let\noexpand\filename@ext\noexpand\relax%
+ \else%
+ \noexpand\def\noexpand\filename@ext{\filename@ext}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@filename@parse
+% \begin{macro}{\svg@file@missing}
+% The error message, which is raised, if a file is missing either after the
+% export with \app{Inkscape} or in general.
+% \begin{macrocode}
+\newcommand*\svg@file@missing[3][]{%
+ \begingroup%
+ \edef\svg@tempa{#2}%
+ \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
+ \svg@quotes@remove{\filename@area}%
+ \svg@quotes@remove{\filename@base}%
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \fi%
+ \IfArgIsEmpty{#1}{%
+ \def\svg@tempa{%
+ Did you run the export with Inkscape? There's no file\MessageBreak%
+ `\filename@area\filename@base.\filename@ext'%
+ }%
+ }{%
+ \edef\filename@ext{#1}%
+ \edef\svg@tempb{#3}%
+ \ifstr{\svg@tempb}{./}{\let\svg@tempb\@empty}{}%
+ \ifstr{\filename@area}{./}{\let\filename@area\@empty}{}%
+ \def\svg@tempa{%
+ There's no file `\filename@base.\filename@ext'\MessageBreak%
+ \ifx\filename@area\@empty%
+ neither in the current directory nor\MessageBreak%
+ any other searched path given by\MessageBreak%
+ \string\svgpath%
+ \ifx\svg@path\@undefined\space\else%
+ \space(\svg@path)\MessageBreak%
+ \fi%
+ or \string\graphicspath%
+ \ifx\Ginput@path\@undefined\else%
+ \space(\Ginput@path)%
+ \fi%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak or even `inkscapepath' (`\svg@tempb')%
+ \fi.%
+ \else%
+ in folder `\filename@area'.%
+ \fi%
+ }%
+ }%
+ \PackageError{svg}{%
+ File `\filename@base.\filename@ext' is missing%
+ }{\svg@tempa}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@file@missing
+% \begin{macro}{\svg@iffilenewer}
+% The macro \cs{svg@iffilenewer} is used to decide, whether the export with
+% \app{Inkscape} is necessarry due to an updated SVG~file. This can only be
+% done, if \cs{pdf@filemoddate} is definied. Unfortunately this functionality
+% isn't provided by Xe\TeX.
+% \begin{macrocode}
+\ifx\pdf@filemoddate\@undefined
+ \newcommand*\svg@iffilenewer[2]{\@gobbletwo}
+\else
+ \newcommand*\svg@iffilenewer[2]{%
+ \begingroup%
+ \edef\svg@tempa{\pdf@filemoddate{#1}}%
+ \edef\svg@tempb{\pdf@filemoddate{#2}}%
+ \ifnum\pdf@strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+ }
+\fi
+% \end{macrocode}
+% \end{macro}^^A \svg@iffilenewer
+%
+%
+%
+% \subsection{Optional Parameters for user commands}
+%
+% \begin{macro}{\svg@local@param@set}
+% \begin{macro}{\svg@local@param@use}
+% \begin{macro}{\svg@local@param@def}
+% Most of the package options can also be used as optional parameters for
+% \cs{includesvg} or \cs{includeinkscape}. Some of them are overloaded for the
+% usage as optional argument and there are some keys, which \emph{only} can be
+% used as optional parameters. This is realized in such a way that
+% \cs{svg@local@param@use} is extended with \cs{svg@local@param@def} by the
+% definition of local keys during the loading of package \pkg{svg}.
+% \begin{macrocode}
+\newcommand*\svg@local@param@set[1]{%
+ \svg@local@param@use%
+ \FamilyOptions{SVG}{#1}%
+% \end{macrocode}
+% As \cs{svg@local@param@set} is always used in a local group, it is possible
+% to set \opt{inkscapelatex} to \val{false}, if the output format was set to
+% \val{png} with option \opt{inkscapeformat}.
+% \begin{macrocode}
+ \ifstr{\svg@ink@format}{png}{\FamilyOptions{SVG}{inkscapelatex=false}}{}%
+}
+\newcommand*\svg@local@param@use{}
+\newcommand*\svg@local@param@def[1]{%
+ \edef\svg@local@param@use{%
+ \unexpanded\expandafter{\svg@local@param@use}\unexpanded{#1}%
+ }%
+}
+\DefineFamilyMember[.param]{SVG}
+% \end{macrocode}
+% \end{macro}^^A \svg@local@param@def
+% \end{macro}^^A \svg@local@param@use
+% \end{macro}^^A \svg@local@param@set
+%
+%
+%
+% \subsection{User commands}
+%
+% \begin{macro}{\svgsetup}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{macro}{\setsvg}
+% \changes{v2.00}{2017/02/17}{deprecated}
+% The macro \cs{svgsetup} can be used to change options after loading the
+% package \pkg{svg} both in preamble and the document body. For compatibility
+% reasons, \cs{setsvg} is also defined.
+% \begin{macrocode}
+\newcommand*\svgsetup{\FamilyOptions{SVG}}
+\newcommand*\setsvg{\FamilyOptions{SVG}}
+% \end{macrocode}
+% \end{macro}^^A \setsvg
+% \end{macro}^^A \svgsetup
+% \begin{macro}{\svgpath}
+% \changes{v2.00}{2017/02/12}{new}
+% \begin{macro}{\svg@path}
+% With \cs{svgpath} the user can give several root paths to SVG~files in the
+% same way as \cs{graphicspath} is used. The only difference is that a missing
+% slash is added at the end of the path, if needed.
+% \begin{macrocode}
+\newcommand*\svg@path{}
+\let\svg@path\input@path
+\newcommand*\svgpath[1]{%
+ \def\svg@tempb{}%
+ \@tfor\svg@tempa:=#1\do{%
+ \ifx\svg@tempa\@empty\else%
+ \svg@normalize@path{\svg@tempa}%
+ \edef\svg@tempb{\svg@tempb{\svg@tempa}}%
+ \fi%
+ }%
+ \ifx\svg@tempb\@empty\else%
+ \let\svg@path\svg@tempb%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@path
+% \end{macro}^^A \svgpath
+% \begin{macro}{\includesvg}
+% \changes{v2.00}{2017/02/17}{changes, especially to optional parameters}
+% For the inclusion of SVG~files the command \cs{includesvg} is defined.
+% \begin{macrocode}
+\newcommand*{\includesvg}[2][]{%
+ \begingroup%
+% \end{macrocode}
+% Checking for deprecated commands \cs{svgwidth} and \cs{svgscale}.
+% \begin{macrocode}
+ \svg@deprecated@param%
+% \end{macrocode}
+% \begin{parameter}{inkscape}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{inkscapeformat}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{inkscapelatex}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{inkscapearea}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{inkscapedpi}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{inkscapeopt}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{width}
+% \begin{parameter}{height}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{scale}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{pretex}
+% \begin{parameter}{apptex}
+% \begin{parameter}{draft}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{extract}
+% \begin{parameter}{extractpreamble}
+% \begin{parameter}{extractformat}
+% \begin{parameter}{extractwidth}
+% \begin{parameter}{extractheight}
+% \begin{parameter}{extractscale}
+% \begin{parameter}{extractpretex}
+% \begin{parameter}{extractapptex}
+% \begin{parameter}{extractruns}
+% \begin{parameter}{latexopt}
+% \begin{parameter}{convert}
+% \begin{parameter}{convertformat}
+% \begin{parameter}{convertdpi}
+% \begin{parameter}{magicksetting}
+% \begin{parameter}{magickoperator}
+% \begin{parameter}{gsopt}
+% \begin{parameter}{gsdevice}
+% \begin{parameter}{clean}
+% \begin{parameter}{exclude}
+% Most of the optional parameters have the same effect as the identically named
+% options. Only parameter \prm{lastpage} is extended (see below). Moreover,
+% there are some additional parameters, which can only be used as optional
+% argument for \cs{includesvg} (\prm{angle} and \prm{origin}) but not as an
+% option. Now all parameters are set in local context (within a group).
+% \begin{macrocode}
+ \svg@local@param@set{#1}%
+% \end{macrocode}
+% \end{parameter}^^A exclude
+% \end{parameter}^^A clean
+% \end{parameter}^^A gsdevice
+% \end{parameter}^^A gsopt
+% \end{parameter}^^A magickoperator
+% \end{parameter}^^A magicksetting
+% \end{parameter}^^A convertdpi
+% \end{parameter}^^A convertformat
+% \end{parameter}^^A convert
+% \end{parameter}^^A latexopt
+% \end{parameter}^^A extractruns
+% \end{parameter}^^A extractapptex
+% \end{parameter}^^A extractpretex
+% \end{parameter}^^A extractscale
+% \end{parameter}^^A extractheight
+% \end{parameter}^^A extractwidth
+% \end{parameter}^^A extractformat
+% \end{parameter}^^A extractpreamble
+% \end{parameter}^^A extract
+% \end{parameter}^^A draft
+% \end{parameter}^^A apptex
+% \end{parameter}^^A pretex
+% \end{parameter}^^A scale
+% \end{parameter}^^A height
+% \end{parameter}^^A width
+% \end{parameter}^^A inkscapeopt
+% \end{parameter}^^A inkscapedpi
+% \end{parameter}^^A inkscapearea
+% \end{parameter}^^A inkscapelatex
+% \end{parameter}^^A inkscapeformat
+% \end{parameter}^^A inkscape
+% The file suffix used by both packages \pkg{svg} and \pkg{svg-extract}.
+% \begin{macrocode}
+ \if@svg@ink@latex%
+ \def\svg@file@suffix{_svg-tex}%
+ \else%
+ \def\svg@file@suffix{_svg-raw}%
+ \fi%
+ \@onelevel@sanitize\svg@file@suffix%
+% \end{macrocode}
+% Searching all given paths for the relevant SVG~file.
+% \begin{macrocode}
+ \svg@get@path{#2}{}%
+ \if@svg@file@found%
+% \end{macrocode}
+% Running the export with \app{Inkscape} (if necessarry) and checking the
+% required files for graphic inclusion.
+% \begin{macrocode}
+ \svg@ink@run%
+ \IfFileExists{\svg@out@base}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base}{}%
+ }%
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base_tex}{}%
+ }%
+ \fi%
+% \end{macrocode}
+% Include the resulting graphic file and maybe extract independent files.
+% \begin{macrocode}
+ \if@svg@file@found%
+ \svg@input{\svg@out@base}%
+ \svg@extract{\svg@out@base}%
+ \fi%
+ \else%
+% \end{macrocode}
+% Raise an error, if the requested SVG~file wasn't found.
+% \begin{macrocode}
+ \svg@file@missing[svg]{\svg@file@base}{}%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \begin{parameter}{lastpage}
+% \changes{v2.00}{2017/02/17}{new}
+% In addition to the automatic finding of the last page, which is included, it
+% can also be given directly as parameter.
+% \begin{macrocode}
+\svg@local@param@def{%
+ \FamilyCounterKey[.param]{SVG}{lastpage}{svg@param@lastpage}%
+}
+% \end{macrocode}
+% \end{parameter}^^A lastpage
+% \begin{parameter}{angle}
+% \changes{v2.00}{2017/02/17}{new}
+% \begin{parameter}{origin}
+% \changes{v2.00}{2017/02/17}{new}
+% The parameters \prm{angle} and \prm{origin} are definied as pendants to the
+% keys provided by \cs{includegraphics}.
+% \begin{macrocode}
+\newcommand*\svg@param@angle{0}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{angle}{%
+ \renewcommand*\svg@param@angle{#1}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+\newcommand*\svg@param@origin{c}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{origin}[c]{%
+ \renewcommand*\svg@param@origin{#1}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+% \end{macrocode}
+% \end{parameter}^^A origin
+% \end{parameter}^^A angle
+% \end{macro}^^A \includesvg
+% \begin{macro}{\includeinkscape}
+% \changes{v2.00}{2017/02/23}{new}
+% The command \cs{includeinkscape} can be used for including the export results
+% of \app{Inkscape}, if this part of the job was done in another way.
+% \begin{macrocode}
+\newcommand*{\includeinkscape}[2][]{%
+ \begingroup%
+% \end{macrocode}
+% Checking for deprecated commands \cs{svgwidth} and \cs{svgscale}.
+% \begin{macrocode}
+ \svg@deprecated@param%
+% \end{macrocode}
+% The given file extension is examined, where a known extension overwrites the
+% current setting for \opt{inkscapeformat}. If there's a suffix \file{\_tex},
+% the option \opt{inkscapelatex} is set to \val{true} by default.
+% \begin{macrocode}
+ \filename@parse{#2}%
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \expandafter\lowercase\expandafter{%
+ \expandafter\def\expandafter\filename@ext\expandafter{\filename@ext}%
+ }%
+ \let\svg@tempb\filename@ext%
+ \def\svg@tempa##1_tex##2\@nil{\def\svg@tempb{##1}}%
+ \expandafter\svg@tempa\svg@tempb_tex\@nil%
+ \@for\svg@tempa:={pdf,eps,ps,png}\do{%
+ \ifstr{\svg@tempb}{\svg@tempa}{%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{inkscapeformat=\svg@tempb}%
+ }%
+ \svg@tempa%
+ }{}%
+ }%
+ \ifstr{\filename@ext}{\svg@ink@format_tex}{%
+ \FamilyOptions{SVG}{inkscapelatex=true}%
+ }{}%
+ \fi%
+% \end{macrocode}
+% \begin{parameter}{inkscapeformat}
+% \begin{parameter}{inkscapelatex}
+% \begin{parameter}{width}
+% \begin{parameter}{height}
+% \begin{parameter}{scale}
+% \begin{parameter}{pretex}
+% \begin{parameter}{apptex}
+% \begin{parameter}{draft}
+% \begin{parameter}{lastpage}
+% \begin{parameter}{angle}
+% \begin{parameter}{origin}
+% \begin{parameter}{extract}
+% \begin{parameter}{extractpreamble}
+% \begin{parameter}{extractformat}
+% \begin{parameter}{extractwidth}
+% \begin{parameter}{extractheight}
+% \begin{parameter}{extractscale}
+% \begin{parameter}{extractpretex}
+% \begin{parameter}{extractapptex}
+% \begin{parameter}{extractruns}
+% \begin{parameter}{latexopt}
+% \begin{parameter}{convert}
+% \begin{parameter}{convertformat}
+% \begin{parameter}{convertdpi}
+% \begin{parameter}{magicksetting}
+% \begin{parameter}{magickoperator}
+% \begin{parameter}{gsopt}
+% \begin{parameter}{gsdevice}
+% \begin{parameter}{clean}
+% \begin{parameter}{exclude}
+% All parameters which are supported by \cs{includesvg} can also be used with
+% \cs{includeinkscape} even if some of them---more precisely those that control
+% the export with \app{Inkscape}---don't have an effect at all. Nevertheless,
+% they are set right now in local context (within a group).
+% \begin{macrocode}
+ \svg@local@param@set{#1}%
+% \end{macrocode}
+% \end{parameter}^^A exclude
+% \end{parameter}^^A clean
+% \end{parameter}^^A gsdevice
+% \end{parameter}^^A gsopt
+% \end{parameter}^^A magickoperator
+% \end{parameter}^^A magicksetting
+% \end{parameter}^^A convertdpi
+% \end{parameter}^^A convertformat
+% \end{parameter}^^A convert
+% \end{parameter}^^A latexopt
+% \end{parameter}^^A extractruns
+% \end{parameter}^^A extractapptex
+% \end{parameter}^^A extractpretex
+% \end{parameter}^^A extractscale
+% \end{parameter}^^A extractheight
+% \end{parameter}^^A extractwidth
+% \end{parameter}^^A extractformat
+% \end{parameter}^^A extractpreamble
+% \end{parameter}^^A extract
+% \end{parameter}^^A origin
+% \end{parameter}^^A angle
+% \end{parameter}^^A lastpage
+% \end{parameter}^^A draft
+% \end{parameter}^^A apptex
+% \end{parameter}^^A pretex
+% \end{parameter}^^A scale
+% \end{parameter}^^A height
+% \end{parameter}^^A width
+% \end{parameter}^^A inkscapelatex
+% \end{parameter}^^A inkscapeformat
+% Searching all given paths for the relevant PDF/EPS~file.
+% \begin{macrocode}
+ \expandafter\svg@get@path\expandafter[\svg@ink@format]{#2}{\svg@out@path}%
+ \if@svg@file@found%
+% \end{macrocode}
+% Checking the required files for graphic inclusion.
+% \begin{macrocode}
+ \edef\svg@out@name{\svg@file@name}%
+ \edef\svg@out@base{\svg@file@path\svg@file@name.\svg@ink@format}%
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base_tex}{}%
+ }%
+ \fi%
+% \end{macrocode}
+% Include the resulting graphic file and maybe extract independent files.
+% \begin{macrocode}
+ \if@svg@file@found%
+ \svg@input{\svg@out@base}%
+ \svg@extract{\svg@out@base}%
+ \fi%
+ \else%
+% \end{macrocode}
+% Raise an error, if the requested PDF/EPS~file wasn't found.
+% \begin{macrocode}
+ \svg@file@missing[\svg@ink@format]{\svg@file@base}{\svg@out@path}%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \includeinkscape
+%
+%
+%
+% \subsection{Auxiliary macros}
+%
+% \begin{macro}{\svg@deprecated@param}
+% This macro checks, if \cs{svgwidth} or \cs{svgscale} are defined. In this
+% case, the given values are passed to the correlating parameters and a warning
+% is raised.
+% \begin{macrocode}
+\newcommand*\svg@deprecated@param{%
+ \@svg@tempswafalse%
+ \ifx\svgwidth\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{width=\svgwidth}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \ifx\svgscale\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{scale=\svgscale}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \if@svg@tempswa%
+ \PackageWarning{svg}{%
+ You should specify the image size with parameters\MessageBreak%
+ `width' and `height' or `scale' instead of using\MessageBreak%
+ `\string\svgscale' or `\string\svgwidth'%
+ }%
+ \let\svgwidth\@undefined%
+ \let\svgscale\@undefined%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@deprecated@param
+% \begin{macro}{\svg@ink@run}
+% \begin{macro}{\if@svg@ink@run}
+% The command, which performs the call of \app{Inkscape} via \cs{ShellEscape}.
+% \begin{macrocode}
+\newif\if@svg@ink@run
+\newcommand*\svg@ink@run{%
+ \ifnum\svg@ink@mode>\z@\relax%
+ \begingroup%
+% \end{macrocode}
+% If the mode for \opt{inkscape} was set to \val{forced}, \app{Inkscape} will
+% be called in any case. Otherwise, some checks are performed to detect, if a
+% run of \app{Inkscape} is actually necessarry.
+% \begin{macrocode}
+ \@svg@ink@runtrue%
+ \ifnum\svg@ink@mode=\tw@\relax\else%
+% \end{macrocode}
+% This is the case when the SVG~file is newer than the corresponding exported
+% file, or if the latter isn't present at all.
+% \begin{macrocode}
+ \svg@iffilenewer{\svg@file@base.svg}{\svg@out@base}{}{%
+ \@svg@ink@runfalse%
+ }%
+% \end{macrocode}
+% The same is true, when the associated \LaTeX~file is missing. But when this
+% file already exists, maybe the user did some changes to this file. In this
+% case, overwriting this file is maybe not intended.
+% \begin{macrocode}
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{%
+ \ifnum\pdf@shellescape=\@ne\relax\if@svg@ink@run%
+ \svg@iffilenewer{\svg@out@base_tex}{\svg@out@base}{%
+ \@svg@ink@runfalse%
+ \edef\svg@tempa{\svg@out@base}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg}{%
+ Since the encountered filedate of file\MessageBreak%
+ `\svg@tempa_tex' is newer than \MessageBreak%
+ `\svg@tempa' it's supposed that\MessageBreak%
+ you customized this file. To avoid an accidental\MessageBreak%
+ overwriting of this file, the Inkscape export\MessageBreak%
+ won't be done. If you want to overwrite the\MessageBreak%
+ existing file please choose the parameter\MessageBreak%
+ `inkscape=force'%
+ }%
+ }{}%
+ \fi\fi%
+ }{\@svg@ink@runtrue}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% If all checks were positive, the export with \app{Inkscape} can be done in
+% case \file{-{}-shell-escape} is enabled.
+% \begin{macrocode}
+ \if@svg@ink@run%
+ \ifnum\pdf@shellescape=\@ne\relax%
+% \end{macrocode}
+% For exporting PNG~files, the used density ist set to \val{300dpi}, if no
+% value was given.
+% \begin{macrocode}
+ \ifx\svg@ink@dpi\relax%
+ \ifstr{\svg@ink@format}{png}{%
+ \FamilyOptions{SVG}{inkscapedpi=300}%
+ }{}%
+ \fi%
+ \PackageInfo{svg}{%
+ Calling Inkscape%
+ \ifx\svg@ink@opt\@empty\else%
+ \space with added options `\svg@ink@opt'%
+ \fi%
+ }%
+% \end{macrocode}
+% Executing \app{Inkscape} on command line. Afterwards, the export results are
+% moved into the given output path.
+% \begin{macrocode}
+ \edef\svg@tempa{\svg@file@base}%
+ \edef\svg@tempb{\svg@out@name}%
+ \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempb}%
+ \ShellEscape{\svg@ink@cmd{\svg@tempa}{\svg@tempb}}%
+ \IfFileExists{\svg@out@name.\svg@ink@format}{%
+ \edef\svg@tempb{\svg@tempb.\svg@ink@format}%
+ \svg@quotes@remove{\svg@out@base}%
+ \svg@shell@mkdir{\svg@out@path}%
+ \svg@shell@move{\svg@tempb}{\svg@out@base}%
+ \if@svg@ink@latex%
+ \svg@shell@move{\svg@tempb_tex}{\svg@out@base_tex}%
+ \fi%
+ }{%
+ \PackageWarning{svg}{%
+ The export with Inkscape failed for file\MessageBreak%
+ `\svg@tempa.svg'\MessageBreak%
+ Troubleshooting: Please check in the log file how\MessageBreak%
+ the invocation of Inkscape took place and try to\MessageBreak%
+ execute it yourself in the terminal%
+ }%
+ }%
+% \end{macrocode}
+% If \file{-{}-shell-escape} wasn't enabled, a warning is issued.
+% \begin{macrocode}
+ \else%
+ \edef\svg@tempa{\svg@file@base}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg}{%
+ You didn't enable `shell escape' (or `write18')\MessageBreak%
+ so it wasn't possible to launch the Inkscape export\MessageBreak%
+ for `\svg@tempa.svg'%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svg@ink@run
+% \end{macro}^^A \svg@ink@run
+% \begin{macro}{\svg@ink@cmd}
+% The actual call of \app{Inkscape} at command line.
+% \begin{macrocode}
+\newcommand*\svg@ink@cmd[2]{%
+ \svg@ink@exe\space-z\space\svg@ink@area\space%
+ \ifx\svg@ink@dpi\relax\else--export-dpi=\svg@ink@dpi\space\fi%
+ \if@svg@ink@latex--export-latex\space\fi%
+ \svg@ink@opt\space%
+ --file="#1.svg"\space%
+ --export-\svg@ink@format="#2.\svg@ink@format"\space%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ink@cmd
+% \begin{macro}{\svg@get@lastpage}
+% This macro is used to circumvent the multiple pages bug for PDF~files of
+% \app{Inkscape}~0.91, when the the \LaTeX~export was enabled. For this
+% purpose, the total page number is read from the PDF~file.
+% \begin{macrocode}
+\newcommand*\svg@get@lastpage[1]{%
+ \ifstr{\svg@ink@format}{pdf}{%
+ \begingroup%
+ \svg@tempcnt=\m@ne\relax%
+ \ifx\XeTeXpdfpagecount\@undefined%
+ \ifpdf%
+ \ifx\pdfximage\@undefined%
+ \ifx\saveimageresource\@undefined\else%
+ \saveimageresource{#1}%
+ \svg@tempcnt=\lastsavedimageresourcepages\relax%
+ \fi%
+ \else%
+ \pdfximage{#1}%
+ \svg@tempcnt=\pdflastximagepages\relax%
+ \fi%
+ \fi%
+ \else%
+ \svg@tempcnt=\XeTeXpdfpagecount#1\relax%
+ \fi%
+ \ifnum\svg@tempcnt=\m@ne\relax%
+ \PackageWarning{svg}{%
+ It wasn't possible to detect the last page\MessageBreak%
+ of `#1'%
+ }%
+ \else%
+ \PackageInfo{svg}{Last page of `#1' is \the\svg@tempcnt}%
+ \fi%
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\FamilyOptions{SVG}{lastpage=\the\svg@tempcnt}%
+ }%
+ \svg@tempa%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@get@lastpage
+% \begin{macro}{\svg@wrn@scale}
+% The option \opt{scale} respectively the parameter \prm{scale} is only
+% considered if the size was not specified.
+% \begin{macrocode}
+\newcommand*\svg@wrn@scale{%
+ \ifdim\dimexpr\svg@param@scale\p@\relax=\p@\relax\else%
+ \@svg@tempswafalse%
+ \ifdim\svg@param@width>\z@\relax%
+ \@svg@tempswatrue%
+ \fi%
+ \ifdim\svg@param@height>\z@\relax%
+ \@svg@tempswatrue%
+ \fi%
+ \if@svg@tempswa%
+ \PackageWarning{svg}{%
+ The parameter `scale' is only considered if neither\MessageBreak%
+ `width' nor `height' are specified%
+ }%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@wrn@scale
+% \begin{macro}{\svg@input}
+% \begin{macro}{\svg@@input}
+% With \cs{svg@@input} the export results of \app{Inkscape} are included. The
+% macro \cs{svg@input} is defined in order to realize the option \opt{exclude}
+% for package \pkg{svg-extract}.
+% \begin{macrocode}
+\newcommand*\svg@input{\svg@@input}
+\newcommand*\svg@@input[2][]{%
+ \IfArgIsEmpty{#1}{}{\svg@local@param@set{#1}}%
+ \if@svg@draft%
+ \@svg@ink@latexfalse%
+ \fi%
+% \end{macrocode}
+% If the export with \app{Inkscape} was done with \LaTeX~support enabled, the
+% corresponding file will be used together with \cs{input}. The necessary
+% patches to environment \env{picture} as well as command \cs{includegraphics}
+% are made beforehand with \cs{svg@patches}.
+% \begin{macrocode}
+ \edef\svg@tempa{#2}%
+ \if@svg@ink@latex%
+ \svg@patches{\svg@tempa}%
+ \ifnum\value{svg@param@lastpage}=\z@\relax%
+ \expandafter\svg@get@lastpage\expandafter{\svg@tempa}%
+ \fi%
+ \edef\svg@tempa{%
+ \ifx\svg@param@pretex\relax\else%
+ \noexpand\svg@param@pretex%
+ \fi%
+ \noexpand\input{\svg@tempa_tex}%
+ \ifx\svg@param@apptex\relax\else%
+ \noexpand\svg@param@apptex%
+ \fi%
+ }%
+% \end{macrocode}
+% If a rotation angle was given, the input is done within \cs{rotatebox}.
+% \begin{macrocode}
+ \ifdim\dimexpr\svg@param@angle\p@\relax=\z@\relax%
+ \svg@tempa%
+ \else%
+ \edef\svg@tempb{origin=\svg@param@origin}%
+ \expandafter\rotatebox\expandafter[\svg@tempb]{\svg@param@angle}{%
+ \svg@tempa%
+ }%
+ \fi%
+ \else%
+% \end{macrocode}
+% If the export with \app{Inkscape} was done without \LaTeX~support, the
+% resulting graphic file will be included with \cs{includegraphics}.
+% \begin{macrocode}
+ \svg@wrn@scale%
+ \edef\svg@tempb{keepaspectratio,scale=\svg@param@scale}%
+ \ifdim\svg@param@height>\z@\relax%
+ \edef\svg@tempb{\svg@tempb,height=\svg@param@height}%
+ \fi%
+ \ifdim\svg@param@width>\z@\relax%
+ \edef\svg@tempb{\svg@tempb,width=\svg@param@width}%
+ \fi%
+ \ifdim\dimexpr\svg@param@angle\p@\relax=\z@\relax\else%
+ \edef\svg@tempb{%
+ \svg@tempb,origin=\svg@param@origin,angle=\svg@param@angle%
+ }%
+ \fi%
+ \if@svg@draft%
+ \edef\svg@tempb{\svg@tempb,draft}%
+ \else%
+ \edef\svg@tempb{\svg@tempb,draft=false}%
+ \fi%
+ \expandafter\includegraphics\expandafter[\svg@tempb]{\svg@tempa}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@@input
+% \end{macro}^^A \svg@input
+%
+%
+%
+% \subsection{Patches}
+%
+% \begin{macro}{\svg@patches}
+% For including the export results from \app{Inkscape} with \LaTeX~support
+% enabled, there are some patches necessarry for environment \env{picture} and
+% \cs{includegraphics}. Those patches are done with \cs{svg@patches}.
+% \begin{macrocode}
+\newcommand*\svg@patches[1]{%
+ \let\svg@picture@saved\picture%
+ \let\picture\svg@picture@patched%
+ \let\svg@includegraphics@saved\includegraphics%
+ \let\includegraphics\svg@includegraphics@patched%
+ \edef\svg@includegraphics@file{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@patches
+% \begin{macro}{\svg@picture@saved}
+% \begin{macro}{\svg@pictur@patched}
+% In order to provide the possibility specify the desired width of a graphic,
+% the appropriate \cs{unitlength} is calculated at the beginning of the
+% \env{picture}~environment.
+% \begin{macrocode}
+\newcommand*\svg@picture@saved{}
+\newcommand*\svg@picture@patched{}
+\newcommand*\svg@pictur@patched{}
+\long\def\svg@picture@patched#1{\svg@pictur@patched@#1}
+\def\svg@pictur@patched@(#1,#2){%
+ \svg@wrn@scale%
+% \end{macrocode}
+% If a desired height is present, the resulting \cs{unitlength} is calculated
+% with the ratio of the coordinates of the \env{picture}~environment given as
+% arguments for x- and y-direction by using \cs{Gscale@div}. With this factor,
+% \cs{unitlength}---which is connected to the x-coordinate---can be scaled in a
+% suitable manner.
+% \begin{macrocode}
+ \ifdim\svg@param@height>\z@\relax%
+ \Gscale@div\svg@tempa{#1\p@}{#2\p@}%
+ \setlength\unitlength{\svg@param@height}%
+ \setlength\unitlength{\svg@tempa\unitlength}%
+ \ifdim\svg@param@width>\z@\relax%
+ \ifdim\unitlength>\svg@param@width\relax%
+ \setlength\unitlength{\svg@param@width}%
+ \fi%
+ \fi%
+ \else%
+% \end{macrocode}
+% If no height is given, \cs{unitlength} can be set easily.
+% \begin{macrocode}
+ \ifdim\svg@param@width>\z@\relax%
+ \setlength\unitlength{\svg@param@width}%
+ \else%
+ \setlength\unitlength{\svg@param@scale\unitlength}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% After setting \cs{unitlength}, the \env{picture}~environment can be called
+% with its original definition.
+% \begin{macrocode}
+ \svg@picture@saved(#1,#2)%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@pictur@patched
+% \end{macro}^^A \svg@picture@saved
+% \begin{macro}{\svg@includegraphics@saved}
+% \begin{macro}{\svg@includegraphics@patched}
+% \begin{macro}{\svg@includegraphics@file}
+% The patch to \cs{includegraphics} is meant to dissolve the \app{Inkscape} bug
+% concerning the inclusion of more PDF~pages than actually are existing.
+%
+% The given optional parameters to \cs{includegraphics} are processed and the
+% counter \cnt{svg@param@currpage} is set to the value of a given \prm{page}.
+% The value of parameter \prm{width} is ignored.
+% \begin{macrocode}
+\DefineFamily{SVGpatch}
+\DefineFamilyMember{SVGpatch}
+\newcounter{svg@param@currpage}
+\setcounter{svg@param@currpage}{\m@ne}
+\FamilyCounterKey{SVGpatch}{page}{svg@param@currpage}
+\DefineFamilyKey{SVGpatch}{width}{\FamilyKeyStateProcessed}
+\newcommand*\svg@includegraphics@file{}
+\newcommand*\svg@includegraphics@saved{}
+\newcommand*\svg@includegraphics@patched[2][]{%
+ \FamilyOptions{SVGpatch}{#1}%
+% \end{macrocode}
+% If option \opt{lastpage} was set to \val{false}, each page is included---even
+% if it doesn't exist, which may cause errors.
+% \begin{macrocode}
+ \ifnum\value{svg@param@lastpage}<\z@\relax%
+ \FamilySetCounter{SVGpatch}{page}{svg@param@currpage}{%
+ \the\value{svg@param@lastpage}%
+ }%
+ \fi%
+% \end{macrocode}
+% Pages are only included, if counter \cnt{svg@param@lastpage} is smaller than
+% \cnt{svg@param@currpage}, where \cnt{svg@param@lastpage} was either given as
+% a number with parameter \prm{lastpage} or was automatically calculated with
+% \cs{svg@get@lastpage}.
+% \begin{macrocode}
+ \ifnum\value{svg@param@currpage}>\value{svg@param@lastpage}\relax\else%
+% \end{macrocode}
+% A page is included with the original definition of \cs{includegraphics}. All
+% optional parameters are passed.
+% \begin{macrocode}
+ \svg@includegraphics@saved[{#1}]{\svg@includegraphics@file}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@includegraphics@file
+% \end{macro}^^A \svg@includegraphics@patched
+% \end{macro}^^A \svg@includegraphics@saved
+%
+% \iffalse
+%</body>
+%</package&base>
+%<*package&option>
+% \fi
+%
+%
+%
+% \section{Extracting independent graphic files with package \pkg{svg-extract}}
+% \subsection{Options}
+%
+% For package \pkg{svg-extract} the user interface is extended. The following
+% options can either be set with \cs{svgsetup} or be used as local optional
+% parameters for \cs{includesvg} and \cs{includeinkscape}.
+%
+% \begin{macro}{\svg@dummy@key}
+% If package \pkg{svg-extract} wasn't loaded, the following options are defined
+% for package \pkg{svg} in order to raise a warning message. Primarily this is
+% done for compatibility reasons.
+% \begin{macrocode}
+%<*base>
+\DefineFamilyMember[.dummy]{SVG}
+\newcommand*\svg@dummy@key[2][]{%
+ \IfArgIsEmpty{#1}{%
+ \DefineFamilyKey[.dummy]{SVG}{#2}{%
+ \PackageWarning{svg}{%
+ The option key `#2' can only\MessageBreak%
+ be used with package `svg-extract', but\MessageBreak%
+ you didn't load it%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ }{%
+ \DefineFamilyKey[.dummy]{SVG}{#2}[{#1}]{%
+ \PackageWarning{svg}{%
+ The option key `#2' can only\MessageBreak%
+ be used with package `svg-extract', but\MessageBreak%
+ you didn't load it%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ }%
+% \end{macrocode}
+% Before package \pkg{svg-extract} the given key |#2| of family member |.dummy|
+% is relaxed.
+% \begin{macrocode}
+ \BeforePackage{svg-extract}{\RelaxFamilyKey[.dummy]{SVG}{#2}}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \svg@dummy@key
+%
+%
+%
+% \subsubsection{Controlling the extract process}
+%
+% \begin{option}{extract}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\if@svgx@run}
+% With option \opt{extract} it can be controlled, if the extraction of
+% independent graphic files should be done.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key[true]{extract}
+%</base>
+%<*extract>
+\newif\if@svgx@run
+\DefineFamilyKey{SVG}{extract}[true]{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{extract}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {overwrite}{1},{force}{1},{forced}{1},%
+ {pdf}{2},{eps}{3},{ps}{4}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \@svgx@runfalse%
+ \or% true
+ \@svgx@runtrue%
+ \or% pdf
+ \FamilyOptions{SVG}{extractformat=pdf}%
+ \or% eps
+ \FamilyOptions{SVG}{extractformat=eps}%
+ \or% ps
+ \FamilyOptions{SVG}{extractformat=ps}%
+ \fi%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \if@svgx@run
+% \end{option}^^A extract
+% \begin{option}{on}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{off}
+% \changes{v2.00}{2017/02/24}{new}
+% Package options which can be used to switch functionality on or off during
+% the loading of package \pkg{svg-extract}.
+% \begin{macrocode}
+%<*extract>
+\DeclareOption{on}{\FamilyOptions{SVG}{extract=true}}
+\DeclareOption{off}{\FamilyOptions{SVG}{extract=false}}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A off
+% \end{option}^^A on
+% \begin{option}{extractformat}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@format}
+% \begin{option}{pdf}
+% \changes{v2.00}{2017/03/02}{deprecated}
+% \begin{option}{eps}
+% \changes{v2.00}{2017/03/02}{deprecated}
+% Option \opt{extractformat} controls the output format (\val{pdf/eps/ps}). It
+% is set to \val{pdf} or, if dvi output could be detected, to \val{eps} during
+% initialization.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractformat}
+\svg@dummy@key[true]{pdf}
+\svg@dummy@key[true]{eps}
+%</base>
+%<*extract>
+\newcommand*\svgx@format{pdf}
+\ifxetex\else\ifpdf\else
+ \renewcommand*\svgx@format{eps}
+\fi\fi
+\DefineFamilyKey{SVG}{extractformat}{%
+ \lowercase{\edef\svgx@format{#1}}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdf}[true]{%
+ \FamilySetBool{SVG}{pdf}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{pdf}{\svgx@format}{}{%
+ \edef\svgx@format{\svgx@format,pdf}%
+ }%
+ \svg@deprecated@key{pdf}{extractformat={\svgx@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+\DefineFamilyKey{SVG}{eps}[true]{%
+ \FamilySetBool{SVG}{eps}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{eps}{\svgx@format}{}{%
+ \edef\svgx@format{\svgx@format,eps}%
+ }%
+ \svg@deprecated@key{eps}{extractformat={\svgx@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A eps
+% \end{option}^^A pdf
+% \end{macro}^^A \svgx@format
+% \end{option}^^A extractformat
+% \begin{option}{extractpreamble}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{preamble}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% \begin{macro}{\svgx@preamble}
+% \begin{option}{extractpreambleend}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{end}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% \begin{macro}{\svgx@endpreamble}
+% For the extraction process, a preamble is necessarry for a separate auxiliary
+% \LaTeX~file. By default, the preamble of the main document is used, which end
+% is detected at \cs{begin}|{document}|.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractpreamble}
+\svg@dummy@key{preamble}
+\svg@dummy@key{extractpreambleend}
+\svg@dummy@key{end}
+%</base>
+%<*extract>
+\newcommand*\svgx@preamble{\jobname.\svgx@latex@ext}%
+\DefineFamilyKey{SVG}{extractpreamble}{%
+ \renewcommand*\svgx@preamble{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{preamble}{%
+ \svg@deprecated@key[svg-extract]{preamble=#1}{extractpreamble=#1}%
+}
+\newcommand*\svgx@endpreamble{}
+\expandafter\def\expandafter\svgx@endpreamble\expandafter{%
+ \csname begin\endcsname{document}%
+}
+\DefineFamilyKey{SVG}{extractpreambleend}{%
+ \renewcommand*\svgx@endpreamble{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{end}{%
+ \svg@deprecated@key[svg-extract]{end=#1}{extractpreambleend=#1}%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@endpreamble
+% \end{option}^^A end
+% \end{option}^^A extractpreambleend
+% \end{macro}^^A \svgx@preamble
+% \end{option}^^A preamble
+% \end{option}^^A extractpreamble
+% \begin{option}{extractruns}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{counter}{svgx@runs}
+% With this option, the number of \LaTeX~runs for the separate auxiliary file
+% can be set.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractruns}
+%</base>
+%<*extract>
+\newcounter{svgx@runs}
+\DefineFamilyKey{SVG}{extractruns}{%
+ \FamilySetCounter{SVG}{extractruns}{svgx@runs}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifnum\value{svgx@runs}<\@ne\relax%
+ \PackageWarning{svg-extract}{%
+ The count for runs has to be at least one%
+ }%
+ \FamilySetCounter{SVG}{extractruns}{svgx@runs}{\@ne}%
+ \fi%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{counter}^^A svgx@runs
+% \end{option}^^A extractruns
+% \begin{option}{latexexe}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{pdflatex}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% \begin{macro}{\svgx@latex@exe}
+% \begin{option}{latexext}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@latex@ext}
+% \begin{option}{latexopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@latex@opt}
+% The command and facultative options for the \LaTeX~call of the separate
+% auxiliary file. The default is set according to the currently used compiler.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{latexexe}
+\svg@dummy@key{pdflatex}
+\svg@dummy@key{latexext}
+\svg@dummy@key{latexopt}
+%</base>
+%<*extract>
+\ifxetex
+ \newcommand*\svgx@latex@exe{xelatex}
+\else\ifluatex
+ \ifpdf
+ \newcommand*\svgx@latex@exe{lualatex}
+ \else
+ \newcommand*\svgx@latex@exe{lualatex --output-format=dvi}
+ \fi
+\else\ifpdf
+ \newcommand*\svgx@latex@exe{pdflatex}
+\else
+ \newcommand*\svgx@latex@exe{latex}
+\fi\fi\fi
+\DefineFamilyKey{SVG}{latexexe}{%
+ \renewcommand*\svgx@latex@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdflatex}{%
+ \svg@deprecated@key[svg-extract]{pdflatex=#1}{latexexe=#1}%
+}
+\newcommand*\svgx@latex@ext{tex}
+\DefineFamilyKey{SVG}{latexext}{%
+ \renewcommand*\svgx@latex@ext{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@latex@opt{}
+\DefineFamilyKey{SVG}{latexopt}{%
+ \renewcommand*\svgx@latex@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@latex@opt
+% \end{option}^^A latexopt
+% \end{macro}^^A \svgx@latex@ext
+% \end{option}^^A latexext
+% \end{macro}^^A \svgx@latex@exe
+% \end{option}^^A latexexe
+% \end{option}^^A pdflatexexe
+% \begin{option}{dvipsopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@dvips@exe}
+% \begin{macro}{\svgx@dvips@opt}
+% \begin{option}{pstoepsopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@pstoeps@exe}
+% \begin{macro}{\svgx@pstoeps@opt}
+% \begin{option}{pstopdfopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@pstopdf@exe}
+% \begin{macro}{\svgx@pstopdf@opt}
+% \begin{option}{pdftoepsopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@pdftoeps@exe}
+% \begin{macro}{\svgx@pdftoeps@opt}
+% \begin{option}{pdftopsopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@pdftops@exe}
+% \begin{macro}{\svgx@pdftops@opt}
+% \begin{option}{pdftops}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% Options and macros for calling convert commands, which are supplied by most
+% \LaTeXe~distributions. These are used to generate all files, which are
+% supported by option \opt{extractformat}, as they don't need an additional
+% application.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{dvipsopt}
+\svg@dummy@key{pstoepsopt}
+\svg@dummy@key{pstopdfopt}
+\svg@dummy@key{pdftoepsopt}
+\svg@dummy@key{pdftopsopt}
+\svg@dummy@key{pdftops}
+%</base>
+%<*extract>
+\newcommand*\svgx@dvips@exe{dvips}
+\newcommand*\svgx@dvips@opt{}
+\DefineFamilyKey{SVG}{dvipsopt}{%
+ \renewcommand*\svgx@dvips@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pstoeps@exe{ps2eps}
+\newcommand*\svgx@pstoeps@opt{-B -C}
+\DefineFamilyKey{SVG}{pstoepsopt}{%
+ \renewcommand*\svgx@pstoeps@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pstopdf@exe{ps2pdf}
+\newcommand*\svgx@pstopdf@opt{}
+\DefineFamilyKey{SVG}{pstopdfopt}{%
+ \renewcommand*\svgx@pstopdf@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pdftoeps@exe{pdftops -eps}
+\newcommand*\svgx@pdftoeps@opt{}
+\DefineFamilyKey{SVG}{pdftoepsopt}{%
+ \renewcommand*\svgx@pdftoeps@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pdftops@exe{pdftops}
+\newcommand*\svgx@pdftops@opt{}
+\DefineFamilyKey{SVG}{pdftopsopt}{%
+ \renewcommand*\svgx@pdftops@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdftops}{%
+ \PackageWarning{#1}{%
+ The option key `pdftops' is deprecated.\MessageBreak%
+ You should use either `pdftoepsopt' or\MessageBreak%
+ `pdftopsopt' instead. See the manual for\MessageBreak%
+ more. Nothing was done%
+ }%
+ \FamilyKeyStateProcessed
+}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A pdftops
+% \end{macro}^^A \svgx@pdftops@opt
+% \end{macro}^^A \svgx@pdftops@exe
+% \end{option}^^A pdftopsopt
+% \end{macro}^^A \svgx@pdftoeps@opt
+% \end{macro}^^A \svgx@pdftoeps@exe
+% \end{option}^^A pdftoepsopt
+% \end{macro}^^A \svgx@pstopdf@opt
+% \end{macro}^^A \svgx@pstopdf@exe
+% \end{option}^^A pstopdfopt
+% \end{macro}^^A \svgx@pstoeps@opt
+% \end{macro}^^A \svgx@pstoeps@exe
+% \end{option}^^A pstoepsopt
+% \end{macro}^^A \svgx@dvips@opt
+% \end{macro}^^A \svgx@dvips@exe
+% \end{option}^^A dvipsopt
+%
+%
+%
+% \subsubsection{Invoking external application for graphic conversion}
+%
+% Besides the use of a conversion tool supplied by \LaTeXe, the applications
+% \app{ImageMagick} and \app{Ghostscript} can be used for converting graphics.
+%
+% \begin{option}{convert}
+% \changes{v2.00}{2017/02/24}{changed/extended}
+% \begin{macro}{\if@svgx@cnv@run}
+% \begin{macro}{\svgx@cnv@cmd}
+% The option \opt{convert} can be used to define, which of both applications
+% should be use. \app{ImageMagick} is set by default.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key[true]{convert}
+%</base>
+%<*extract>
+\newif\if@svgx@cnv@run
+\newcommand*\svgx@cnv@cmd{}
+\DefineFamilyKey{SVG}{convert}[true]{%
+ \FamilySetNumerical{SVG}{convert}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {overwrite}{1},{force}{1},{forced}{1},%
+ {magick}{2},{imagemagick}{2},{convert}{2},%
+ {gs}{3},{ghostscript}{3},%
+ {gs64}{4},{ghostscript64}{4},%
+ {gs32}{5},{ghostscript32}{5}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \@svgx@cnv@runfalse%
+ \or% true
+ \@svgx@cnv@runtrue%
+ \or% magick
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@magick@cmd}%
+ \or% gs
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \or% gs64
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \svgx@onlywindows{%
+ \renewcommand*\svgx@gs@exe{gswin64c}%
+ }%
+ \or% gs32
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \svgx@onlywindows{%
+ \renewcommand*\svgx@gs@exe{gswin32c}%
+ }%
+ \fi%
+% \end{macrocode}
+% In version~v1.0 the option \opt{convert} was used to set both the executable
+% and options for the conversion application, meant for the usage of
+% \app{ImageMagick}. This is taken into account here.
+% \begin{macrocode}
+ \else%
+% \end{macrocode}
+% Same doing like with option \opt{inkscape}.
+% \begin{macrocode}
+ \def\svg@tempa##1-##2\@nil{%
+ \IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
+ \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}%
+ \svg@tempa#1\@nil%
+ }%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1-\@nil%
+ \PackageWarning{svg-extract}{%
+ Setting the executable%
+ \ifx\svg@tempb\@empty\else%
+ \space and associated options%
+ \fi%
+ \MessageBreak%
+ for ImageMagick should be done with options\MessageBreak%
+ `magickexe=\svg@tempa'%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak and `magicksetting' and/or `magickoperator'%
+ \fi.\MessageBreak%
+ Nevertheless, this was done by now%
+ \ifx\svg@tempb\@empty\else%
+ , whereby \MessageBreak `magicksetting=\svg@tempb' was used%
+ \fi%
+ }%
+ \FamilyOptions{SVG}{convert=magick}%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{magickexe=\svg@tempa}%
+ \ifx\svg@tempb\@empty\else%
+ \noexpand\FamilyOptions{SVG}{magicksetting=\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@cnv@cmd
+% \end{macro}^^A \if@svgx@cnv@run
+% \end{option}^^A convert
+% \begin{option}{convertformat}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@cnv@format}
+% \begin{option}{png}
+% \changes{v2.00}{2017/03/02}{deprecated}
+% Option \opt{convertformat} controls the output format for converted files. It
+% is set to \val{png} by default.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{convertformat}
+\svg@dummy@key[true]{png}
+%</base>
+%<*extract>
+\newcommand*\svgx@cnv@format{png}
+\DefineFamilyKey{SVG}{convertformat}{%
+ \lowercase{\edef\svgx@cnv@format{#1}}%
+ \ifx\svgx@cnv@format\@empty\else%
+ \@svgx@cnv@runtrue%
+ \fi%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{png}[true]{%
+ \FamilySetBool{SVG}{png}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{png}{\svgx@cnv@format}{}{%
+ \edef\svgx@cnv@format{\svgx@cnv@format,png}%
+ }%
+ \svg@deprecated@key{png}{convertformat={\svgx@cnv@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A png
+% \end{macro}^^A \svgx@cnv@format
+% \end{option}^^A convertformat
+% \begin{option}{convertdpi}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{convertdensity}
+% \begin{macro}{\svgx@cnv@dpi}
+% The option \opt{convertdpi} is meant to define the used density during the
+% conversion process. It can be set either for all designated output formats or
+% targeted for a specific format. It's also possible to use something like
+% \val{500x300}. Given values are resolved by \cs{svgx@cnv@get@dpi}. It's used
+% like \opt{convertdpi}|=|\val{300} or \opt{convertdpi}|=|\val{\{png=600\}} If
+% the option is used for a specific or for all output formats is recocnized by
+% \cs{svgx@ifkeyandval}.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{convertdpi}
+\svg@dummy@key{convertdensity}
+%</base>
+%<*extract>
+\newcommand*\svgx@cnv@dpi{}
+\let\svgx@cnv@dpi\relax
+\DefineFamilyKey{SVG}{convertdpi}{%
+ \FamilyKeyStateUnknownValue%
+ \svgx@ifkeyandval{#1}{%
+ \svgx@cnv@get@dpi{##2}%
+ \ifx\svg@tempa\relax\else%
+ \expandafter\edef\csname svgx@cnv@dpi@##1\endcsname{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{%
+ \svgx@cnv@get@dpi{##1}%
+ \ifx\svg@tempa\relax\else%
+ \edef\svgx@cnv@dpi{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }%
+}
+\DefineFamilyKey{SVG}{convertdensity}{\FamilyOptions{SVG}{convertdpi=#1}}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@cnv@dpi
+% \end{option}^^A convertdensity
+% \end{option}^^A convertdpi
+% \begin{option}{magickexe}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@magick@exe}
+% \begin{option}{magicksetting}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@magick@set}
+% \begin{option}{magickoperator}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@magick@opr}
+% Setting the command including maybe the path to \app{ImageMagick}. The keys
+% \opt{magicksetting} and \opt{magickoperator} should be used to add optional
+% arguments before (\emph{Settings}) or after (\emph{Operators}) the input
+% file. They can either be set for all or a specific output format as like
+% option \opt{convertdpi}. For this \cs{svgx@setformatkey} is used.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{magickexe}
+\svg@dummy@key{magicksetting}
+\svg@dummy@key{magickoperator}
+%</base>
+%<*extract>
+\newcommand*\svgx@magick@exe{}
+\DefineFamilyKey{SVG}{magickexe}{%
+ \renewcommand*\svgx@magick@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@magick@set{}
+\DefineFamilyKey{SVG}{magicksetting}{%
+ \svgx@setformatkey{#1}{svgx@magick@set}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@magick@opr{}
+\DefineFamilyKey{SVG}{magickoperator}{%
+ \svgx@setformatkey{#1}{svgx@magick@opr}%
+ \FamilyKeyStateProcessed%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@magick@opr
+% \end{option}^^A magickoperator
+% \end{macro}^^A \svgx@magick@set
+% \end{option}^^A magicksetting
+% \end{macro}^^A \svgx@magick@exe
+% \end{option}^^A magickexe
+% \begin{option}{gsexe}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@gs@exe}
+% \begin{option}{gsopt}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@gs@opt}
+% \begin{option}{gsdevice}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svgx@gs@device}
+% Options to set the command including maybe the path to \app{Ghostscript}. As
+% \app{Ghostscript} needs a specific device defined for different output
+% formats, the option \opt{gsdevice} can be used. It can either be set for all
+% or a specific output format just like \opt{gsopt} in the same manner like
+% option \opt{convertdpi}.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{gsexe}
+\svg@dummy@key{gsopt}
+\svg@dummy@key{gsdevice}
+%</base>
+%<*extract>
+\newcommand*\svgx@gs@exe{}
+\DefineFamilyKey{SVG}{gsexe}{%
+ \renewcommand*\svgx@gs@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@gs@opt{}
+\DefineFamilyKey{SVG}{gsopt}{%
+ \svgx@setformatkey{#1}{svgx@gs@opt}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@gs@device{}
+\DefineFamilyKey{SVG}{gsdevice}{%
+ \svgx@setformatkey{#1}{svgx@gs@device}%
+ \FamilyKeyStateProcessed%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@gs@device
+% \end{option}^^A gsdevice
+% \end{macro}^^A \svgx@gs@opt
+% \end{option}^^A gsopt
+% \end{macro}^^A \svgx@gs@exe
+% \end{option}^^A gsexe
+%
+%
+%
+% \subsubsection{Setting output folder}
+%
+% \begin{option}{extractpath}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{path}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% \begin{option}{extractname}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{option}{name}
+% \changes{v2.00}{2017/02/24}{deprecated}
+% \changes{v2.00}{2017/02/24}{support of \pkg{subfig} removed}
+% \begin{macro}{\svgx@out@path}
+% \begin{macro}{\svgx@out@name}
+% \begin{macro}{\if@svgx@out@sec}
+% \begin{counter}{svgx@out@count}
+% The option \opt{extractpath} controls, in which folder the results both of
+% the extraction as well as the conversion of \app{ImageMagick} or
+% \app{Ghostscript} will be located. With option \opt{extractname} the
+% name of the extracted and maybe converted file itself can be changed.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractpath}
+\svg@dummy@key{path}
+\svg@dummy@key{extractname}
+\svg@dummy@key{name}
+%</base>
+%<*extract>
+\newcommand*\svgx@out@path{}
+\DefineFamilyKey{SVG}{extractpath}{%
+ \FamilySetNumerical{SVG}{extractpath}{svg@tempa}{%
+ {svgpath}{0},{svgdir}{0},%
+ {svgsubpath}{1},{svgsubdir}{1},%
+ {basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
+ {basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% svgpath
+ \renewcommand*\svgx@out@path{\svg@file@path}%
+ \or% svgsubpath
+ \renewcommand*\svgx@out@path{\svg@file@path svg-extract/}%
+ \or% basepath
+ \renewcommand*\svgx@out@path{./}%
+ \or% basesubpath
+ \renewcommand*\svgx@out@path{./svg-extract/}%
+ \fi%
+ \else%
+ \renewcommand*\svgx@out@path{#1}%
+ \svg@normalize@path{\svgx@out@path}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{path}{%
+ \svg@deprecated@key[svg-extract]{path=#1}{extractpath=#1}%
+}
+\newcounter{svgx@out@count}
+\newcommand*\svgx@out@name{}
+\newif\if@svgx@out@sec
+\DefineFamilyKey{SVG}{extractname}{%
+ \FamilySetNumerical{SVG}{extractname}{svg@tempa}{%
+ {filename}{0},{name}{0},%
+ {filenamenumbered}{1},{namenumbered}{1},%
+ {numberedfilename}{1},{numberedname}{1},%
+ {numbered}{2},{section}{2},{numberedsection}{2},{sectionnumbered}{2}%
+ }{#1}%
+ \@svgx@out@secfalse%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% filename
+ \renewcommand*\svgx@out@name{\svg@out@name-extract}%
+ \or% filenamenumbered
+ \renewcommand*\svgx@out@name{\the\value{svgx@out@count}-\svg@out@name}%
+ \or% numbered
+ \renewcommand*\svgx@out@name{\the\value{svgx@out@count}-\svgx@out@sec}%
+ \@svgx@out@sectrue%
+ \fi%
+ \else%
+ \def\svg@tempa##1.##2\@nil{%
+ \IfArgIsEmpty{##1}{}{\renewcommand*\svgx@out@name{##1}}%
+ }%
+ \svg@tempa#1.\@nil%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{name}{%
+ \svg@deprecated@key[svg-extract]{name=#1}{extractname=#1}%
+}
+%</extract>
+% \end{macrocode}
+% \end{counter}^^A svgx@out@count
+% \end{macro}^^A \if@svgx@out@sec
+% \end{macro}^^A \svgx@out@name
+% \end{macro}^^A \svgx@out@path
+% \end{option}^^A name
+% \end{option}^^A extractname
+% \end{option}^^A path
+% \end{option}^^A extractpath
+%
+%
+%
+% \subsubsection{Options for the extraction of graphics}
+%
+% \begin{option}{extractwidth}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{macro}{\svgx@param@width}
+% \begin{option}{extractheight}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{macro}{\svgx@param@width}
+% \begin{option}{extractscale}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{macro}{\svgx@param@scale}
+% For graphic extraction, the given settings regarding the size for inclusion
+% can be overwritten with these options. Using \val{\cs{relax}} as value leads
+% to reseting an option as unset, regardless of what was previously given. The
+% value \val{inherit} means, that the actual option for including is used for
+% extraction as well. This is the default setting.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractwidth}
+\svg@dummy@key{extractheight}
+\svg@dummy@key{extractscale}
+%</base>
+%<*extract>
+\newcommand*\svgx@param@width{\svg@param@width}
+\DefineFamilyKey{SVG}{extractwidth}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@width{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@width{\svg@param@width}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{extractwidth}{\svgx@param@width}{#1}%
+ \ifdim\svgx@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+ }%
+}
+\newcommand*\svgx@param@height{\svg@param@height}
+\DefineFamilyKey{SVG}{extractheight}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@height{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@height{\svg@param@height}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{extractheight}{\svgx@param@height}{#1}%
+ \ifdim\svgx@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+ }%
+}
+\newcommand*\svgx@param@scale{\svg@param@scale}
+\DefineFamilyKey{SVG}{extractscale}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@scale{1}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@scale{\svg@param@scale}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \ifdim\dimexpr#1\p@\relax>\z@\relax%
+ \renewcommand*\svgx@param@scale{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ }%
+ }%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@param@scale
+% \end{option}^^A extractscale
+% \end{macro}^^A \svgx@param@height
+% \end{option}^^A extractheight
+% \end{macro}^^A \svgx@param@width
+% \end{option}^^A extractwidth
+% \begin{option}{extractpretex}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{macro}{\svgx@param@pretex}
+% \begin{option}{extractapptex}
+% \changes{v2.00}{2017/02/20}{new}
+% \begin{macro}{\svgx@param@apptex}
+% \begin{option}{extractpostex}
+% The similar hooks for executing code right before or after the graphic
+% extraction.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key{extractpretex}
+\svg@dummy@key{extractapptex}
+\svg@dummy@key{extractpostex}
+%</base>
+%<*extract>
+\newcommand*\svgx@param@pretex{\svg@param@pretex}
+\DefineFamilyKey{SVG}{extractpretex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svgx@param@pretex\relax%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \def\svgx@param@pretex{\svg@param@pretex}%
+ }{%
+ \def\svgx@param@pretex{#1}%
+ }%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@param@apptex{\svg@param@apptex}
+\DefineFamilyKey{SVG}{extractapptex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svgx@param@apptex\relax%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \def\svgx@param@apptex{\svg@param@apptex}%
+ }{%
+ \def\svgx@param@apptex{#1}%
+ }%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{extractpostex}{%
+ \svg@deprecated@key[svg-extract]{extractpostex=#1}{extractapptex=#1}%
+}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A extractpostex
+% \end{macro}^^A \svgx@param@apptex
+% \end{option}^^A extractapptex
+% \end{macro}^^A \svgx@param@pretex
+% \end{option}^^A extractpretex
+%
+%
+%
+% \subsubsection{Miscellaneous options}
+%
+% \begin{option}{clean}
+% \changes{v2.00}{2017/02/24}{changes, file list possible}
+% \begin{option}{clear}
+% \begin{macro}{\svgx@clean}
+% With option \opt{clean} files generated during the extraction process can be
+% deleted. Setting \val{true} will remove all files, \val{false} won't clear
+% any file. Additionally, a specific file list of suffixes can be given.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key[true]{clean}
+\svg@dummy@key[true]{clear}
+%</base>
+%<*extract>
+\newcommand*\svgx@clean{}
+\DefineFamilyKey{SVG}{clean}[true]{%
+ \FamilySetBool{SVG}{clean}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \renewcommand*\svgx@clean{log,aux,dvi,out,ps,eps,pdf,\svgx@latex@ext}%
+ \else%
+ \renewcommand*\svgx@clean{}%
+ \fi%
+ \else%
+ \renewcommand*\svgx@clean{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{clear}{\FamilyOptions{SVG}{clean=#1}}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@clean
+% \end{option}^^A clear
+% \end{option}^^A clean
+% \begin{option}{exclude}
+% If it is desired not to include but only extract graphics with package
+% \pkg{svg-extract}, option \opt{exclude} can be used.
+% \begin{macrocode}
+%<*base>
+\svg@dummy@key[true]{exclude}
+%</base>
+%<*extract>
+\DefineFamilyKey{SVG}{exclude}[true]{%
+ \FamilySetBool{SVG}{exclude}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \renewcommand*\svg@input[2][]{%
+ \if@svgx@run\else%
+ \PackageWarning{svg-extract}{%
+ The image `##2' was\MessageBreak%
+ neither extracted nor included%
+ }%
+ \fi%
+ }%
+ \else%
+ \renewcommand*\svg@input{\svg@@input}%
+ \fi%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{option}^^A exclude
+%
+% \iffalse
+%</package&option>
+%<*package&body>
+% \fi
+%
+%
+%
+% \subsection{User commands}
+%
+% \begin{macro}{\svghidepreamblestart}
+% \changes{v2.00}{2017/02/24}{new}
+% \begin{macro}{\svghidepreambleend}
+% \changes{v2.00}{2017/02/24}{new}
+% Some dummys for package \pkg{svg}.
+% \begin{macrocode}
+%<*base>
+\newcommand*\svghidepreamblestart{%
+ \PackageWarning{svg}{%
+ The macro `\string\svghidepreamblestart' is only meant\MessageBreak%
+ to be used together with package `svg-extract'.\MessageBreak%
+ Nevertheless, nothing will happen%
+ }%
+}
+\newcommand*\svghidepreambleend{%
+ \PackageWarning{svg}{%
+ The macro `\string\svghidepreambleend' is only meant\MessageBreak%
+ to be used together with package `svg-extract'.\MessageBreak%
+ Nevertheless, nothing will happen%
+ }%
+}
+%</base>
+% \end{macrocode}
+% These two macros can be used to hide some parts of the preamble during
+% reading the preamble of the main document.
+% \begin{macrocode}
+%<*extract>
+\let\svghidepreamblestart\relax
+\let\svghidepreambleend\relax
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svghidepreambleend
+% \end{macro}^^A \svghidepreamblestart
+%
+%
+%
+% \subsection{Auxiliary macros}
+%
+% \begin{macro}{\svg@extract}
+% \begin{macro}{\svgx@stream@in}
+% \begin{macro}{\svgx@read@line}
+% \begin{macro}{\svgx@stream@out}
+% \begin{macro}{\if@svgx@preamble@write}
+% The macro \cs{svg@extract} does the actual job of both extracting and
+% converting independent graphic files. Since it is necessary to run it with
+% \file{-{}-shell-escape} enabled, the command raises a warning if it is not
+% activated. Afterwards, the package is finished.
+% \begin{macrocode}
+%<*base>
+\newcommand*\svg@extract[1]{}
+%</base>
+%<*extract>
+\ifnum\pdf@shellescape=\@ne\relax\else%
+ \renewcommand*\svg@extract[1]{%
+ \if@svgx@run%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg-extract}{%
+ You didn't enable `shell escape' (or `write18')\MessageBreak%
+ so it wasn't possible to run the extraction for\MessageBreak%
+ file `\svg@tempa'%
+ }%
+ \endgroup%
+ \fi%
+ }%
+ \expandafter\endinput%
+\fi
+% \end{macrocode}
+% If \file{-{}-shell-escape} is enabled, the command is defined with its
+% intended functionality. Some macros and a input stream as well as a output
+% stream are necessary for this.
+% \begin{macrocode}
+\newread\svgx@stream@in
+\newcommand*\svgx@read@line{}
+\newwrite\svgx@stream@out
+\newif\if@svgx@preamble@write
+\renewcommand*\svg@extract[1]{%
+% \end{macrocode}
+% If option \opt{extract} is enabled\dots
+% \begin{macrocode}
+ \if@svgx@run%
+% \end{macrocode}
+% \dots the macro \cs{svgx@get@out@sec} is used to get the current level
+% numbering within the document and the counter for extracted graphics is
+% stepped. After that, a separate auxiliary \LaTeX~file is created for
+% extracting independent graphic files. The macro \cs{svgx@get@out@sec} is used
+% to get the current level numbering within the document. The specified
+% preamble is read for this task, if it exists. It is first searched in the
+% same folder as the SVG~file and if it wasn't found, in any other valid folder
+% for SVG~files.
+% \begin{macrocode}
+ \if@svgx@out@sec%
+ \svgx@get@out@sec%
+ \fi%
+ \stepcounter{svgx@out@count}%
+ \begingroup%
+ \def\svg@tempa##1.##2\@nil{%
+ \IfArgIsEmpty{##2}{\edef\svgx@preamble{##1.\svgx@latex@ext}}{}%
+ }%
+ \expandafter\svg@tempa\svgx@preamble.\@nil%
+ \IfFileExists{\svg@file@path\svgx@preamble}{%
+ \@svg@file@foundtrue%
+ }{%
+ \svg@get@path[]{\svgx@preamble}{\svg@out@path}%
+ \def\svg@tempa####1.####2\@nil{%
+ \edef\svgx@preamble{\svg@file@name.####2}%
+ }%
+ \expandafter\svg@tempa\svgx@preamble\@nil%
+ }%
+ \edef\svg@tempa{%
+ \endgroup%
+ \if@svg@file@found%
+ \ifx\svg@file@path\@empty%
+ \def\noexpand\svgx@preamble{./\svgx@preamble}%
+ \else%
+ \def\noexpand\svgx@preamble{\svg@file@path\svgx@preamble}%
+ \fi%
+ \fi%
+ }%
+ \svg@tempa%
+ \begingroup%
+ \endlinechar=\m@ne%
+ \IfFileExists{\svgx@preamble}{%
+ \PackageInfo{svg-extract}{%
+ The preamble file `\svgx@preamble'\MessageBreak%
+ is used for the generation of the auxiliary file\MessageBreak%
+ `\svgx@out@name.\svgx@latex@ext'%
+ }%
+% \end{macrocode}
+% The catcodes for |#| need to be changed to prevent doublification when
+% reading the line.
+% \begin{macrocode}
+ \catcode`\#=12\relax%
+ \immediate\openout\svgx@stream@out=\svgx@out@name.\svgx@latex@ext%
+ \immediate\openin\svgx@stream@in=\svgx@preamble%
+ \@svg@tempswatrue%
+ \@svgx@preamble@writetrue%
+ \def\svgx@read@line{}%
+% \end{macrocode}
+% The given preamble file is read line by line and written to the separate
+% auxiliary \LaTeX~file \file{\cs{svgx@out@name}.\cs{svgx@latex@ext}} via the
+% output stream.
+% \begin{macrocode}
+ \@whilesw\if@svg@tempswa\fi{%
+ \immediate\read\svgx@stream@in to\svgx@read@line%
+ \ifx\svgx@read@line\@empty%
+ \ifeof\svgx@stream@in\@svg@tempswafalse\fi%
+ \else%
+% \end{macrocode}
+% With \cs{svghidepreamblestart} and \cs{svghidepreambleend} it is possible for
+% the user to omit certain parts of the preamble. Therefor the two macros
+% \cs{svgx@read@preamble@till} and \cs{svgx@read@preamble@from} are toggling
+% the switch \cs{if@svgx@preamble@write}
+% \begin{macrocode}
+ \svgx@read@preamble@till{\svghidepreamblestart}{}%
+ \svgx@read@preamble@from{\svghidepreambleend}{}%
+% \end{macrocode}
+% If the desired end of the preamble (\cs{svgx@endpreamble}) was found, the
+% readout is terminated by switching \cs{if@svg@tempswa} to \val{false}.
+% \begin{macrocode}
+ \svgx@read@preamble@till{\svgx@endpreamble}{\@svg@tempswafalse}%
+ \if@svgx@preamble@write%
+% \end{macrocode}
+% During the readout process, it is searched with \cs{svgx@documentclass} for
+% the appearance of \cs{documentclass} and \cs{if@svgx@classfound} is set to
+% \val{true} if it was found.
+% \begin{macrocode}
+ \if@svgx@classfound\else%
+ \expandafter\svgx@documentclass%
+ \svgx@read@line\documentclass\documentclass\@nil%
+ \fi%
+% \end{macrocode}
+% Writing out the---maybe manipulated---read in line.
+% \begin{macrocode}
+ \ifx\svgx@read@line\@empty\else%
+ \immediate\write\svgx@stream@out{%
+ \unexpanded\expandafter{\svgx@read@line}%
+ }%
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \immediate\closein\svgx@stream@in%
+ \immediate\closeout\svgx@stream@out%
+ \catcode`\#=6\relax%
+% \end{macrocode}
+% Once the separate auxiliary \LaTeX~file is written, it is read in again and
+% its content is stored in \cs{svg@tempa}, since it is necessary to prepend
+% some stuff to the preamble, for example a maybe not existent document class.
+% \begin{macrocode}
+ \immediate\openin\svgx@stream@in=\svgx@out@name.\svgx@latex@ext%
+ \def\svg@tempa{}%
+ \loop\unless\ifeof\svgx@stream@in%
+ \readline\svgx@stream@in to\svgx@read@line%
+ \ifx\svgx@read@line\@empty\else%
+ \edef\svg@tempa{%
+ \unexpanded\expandafter{\svg@tempa}%
+ \unexpanded\expandafter{\svgx@read@line}^^J%
+ }%
+ \fi%
+ \repeat%
+ \immediate\closein\svgx@stream@in%
+ }{%
+% \end{macrocode}
+% If a file was given that doesn't exist, a warning is issued.
+% \begin{macrocode}
+ \svg@quotes@remove{\svgx@preamble}%
+ \ifx\svgx@preamble\@empty\else%
+ \PackageWarning{svg-extract}{%
+ The preamble file `\svgx@preamble'\MessageBreak%
+ does not exist%
+ }%
+ \fi%
+ \def\svg@tempa{}%
+ }%
+% \end{macrocode}
+% After the preamble was read in and stored in \cs{svg@tempa}, the separate
+% auxiliary \LaTeX~file is written again. Some information are written right at
+% the beginning of the file.
+% \begin{macrocode}
+ \immediate\openout\svgx@stream@out=\svgx@out@name.\svgx@latex@ext%
+ \immediate\write\svgx@stream@out{%
+ \@percentchar\@percentchar\space This file was generated by package
+ `svg-extract'^^J%
+ \@percentchar\@percentchar\space from source `\jobname'^^J%
+ \@percentchar\@percentchar\space It's intended to be compiled with
+ `\svgx@latex@exe\ifx\svgx@latex@opt\@empty\else\space\svgx@latex@opt\fi'
+ }%
+% \end{macrocode}
+% With the intention of passing the correct paper dimensions, the calculating
+% of the paper size is executed with \cs{AtBeginDocument} even before the
+% document class, so that this is definitely the first thing to happen at the
+% beginning of the document. Additionally, it is ensured that the \cs{special}
+% command is definitely used with the correct paper size, when creating a
+% DVI~file.
+% \begin{macrocode}
+ \immediate\write\svgx@stream@out{%
+ \string\AtBeginDocument{\@percentchar^^J%
+ \space\space\string\svgxsetpapersize\@percentchar^^J%
+ \ifxetex\else\ifpdf\else%
+ \space\space\string\AtBeginDvi{\string\special{%
+ papersize=\string\the\string\paperwidth,%
+ \string\the\string\paperheight%
+ }}\@percentchar^^J%
+ \fi\fi%
+ }^^J%
+ \string\PassOptionsToPackage{hidelinks}{hyperref}%
+ }%
+% \end{macrocode}
+% If no document class was found during reading the preamble file, then class
+% \cs{article} is used.
+% \begin{macrocode}
+ \if@svgx@classfound\else%
+ \immediate\write\svgx@stream@out{\string\documentclass{article}}%
+ \fi%
+% \end{macrocode}
+% And now the stored preamble.
+% \begin{macrocode}
+ \ifx\svg@tempa\@empty\else%
+ \immediate\write\svgx@stream@out{\unexpanded\expandafter{\svg@tempa}}%
+ \fi%
+% \end{macrocode}
+% After the given preamble was written, package \pkg{svg-extract} will be
+% loaded in case it was forgotten.
+% \begin{macrocode}
+ \immediate\write\svgx@stream@out{\string\usepackage{svg-extract}}%
+% \end{macrocode}
+% Now all parameters relevant for the extraction are evaluated and appended.
+% \begin{macrocode}
+ \def\svg@tempa##1{%
+ \immediate\write\svgx@stream@out{\string\svgsetup{##1}}%
+ }%
+ \if@svg@ink@latex\else%
+ \svg@tempa{inkscapelatex=false}%
+ \fi%
+ \ifdim\svgx@param@width>\z@\relax%
+ \svg@tempa{width=\svgx@param@width}%
+ \fi%
+ \ifdim\svgx@param@height>\z@\relax%
+ \svg@tempa{height=\svgx@param@height}%
+ \fi%
+ \ifdim\dimexpr\svgx@param@scale\p@\relax=\p@\relax\else%
+ \svg@tempa{scale=\svgx@param@scale}%
+ \fi%
+ \def\svg@tempb{\svg@param@pretex}%
+ \ifx\svgx@param@pretex\svg@tempb\relax%
+ \let\svgx@param@pretex\svg@param@pretex%
+ \fi%
+ \ifx\svgx@param@pretex\relax\else%
+ \svg@tempa{pretex=\unexpanded\expandafter{\svgx@param@pretex}}%
+ \fi%
+ \def\svg@tempb{\svg@param@apptex}%
+ \ifx\svgx@param@apptex\svg@tempb\relax%
+ \let\svgx@param@apptex\svg@param@apptex%
+ \fi%
+ \ifx\svgx@param@apptex\relax\else%
+ \svg@tempa{apptex=\unexpanded\expandafter{\svgx@param@apptex}}%
+ \fi%
+% \end{macrocode}
+% Parameter \prm{lastpage} is only considered for including PDF~files with
+% \LaTeX~support.
+% \begin{macrocode}
+ \let\svg@tempa\@empty%
+ \if@svg@ink@latex%
+ \ifstr{\svg@ink@format}{pdf}{%
+ \ifnum\value{svg@param@lastpage}>\z@\relax%
+ \edef\svg@tempa{lastpage=\the\value{svg@param@lastpage}}%
+ \else%
+ \ifnum\value{svg@param@lastpage}=\z@\relax%
+ \def\svg@tempa{lastpage=true}%
+ \else%
+ \def\svg@tempa{lastpage=false}%
+ \fi%
+ \fi%
+ }{}%
+ \fi%
+% \end{macrocode}
+% As we are now at the end of the preamble and just before the beginning of the
+% document, the paper dimension are set again to make sure, that these settings
+% are active at the end of the preamble. Additionally, it is executed again at
+% the very end of \cs{AtBeginDocument} to ensure, that no other package used
+% this hook for manipulating the paper size.
+% \begin{macrocode}
+ \ifx\svg@tempa\@empty%
+ \def\svg@tempa{\string\svgxsetbox{#1}}%
+ \else%
+ \edef\svg@tempa{\noexpand\string\noexpand\svgxsetbox[\svg@tempa]{#1}}%
+ \fi%
+ \immediate\write\svgx@stream@out{\svg@tempa}%
+% \end{macrocode}
+% Package \pkg{xr} is used to evaluate possible labels within the included
+% \app{Inkscape}~\LaTeX~file.
+% \begin{macrocode}
+ \if@svg@ink@latex%
+ \IfFileExists{xr.sty}{%
+ \immediate\write\svgx@stream@out{%
+ \string\usepackage{xr}^^J%
+ \string\externaldocument{\jobname}^^J%
+ }%
+ }{}%
+ \fi%
+ \immediate\write\svgx@stream@out{%
+ \string\AtBeginDocument{\@percentchar^^J%
+ \space\space\svg@tempa\@percentchar^^J%
+ }^^J^^J%
+ \string\begin{document}^^J%
+ \string\pagestyle{empty}^^J%
+ \string\svgxoutputbox\@percentchar^^J%
+ \string\end{document}%
+ }%
+ \immediate\closeout\svgx@stream@out%
+ \endgroup%
+% \end{macrocode}
+% After creating the separate auxiliary \LaTeX~file, the actual extraction and
+% conversion can be done.
+% \begin{macrocode}
+ \ifstr{\svgx@format\svgx@cnv@format}{}{%
+ \PackageWarning{svg-extract}{%
+ Both keys `extractformat' and `convertformat' are\MessageBreak%
+ empty, so nothing to do so far%
+ }%
+ }{%
+% \end{macrocode}
+% As the extraction maybe needs to include the main~auxiliary~file with
+% \cs{externaldocument} provided by package \pkg{xr} it is necessarry to do all
+% related stuff after the main~auxiliary~file was written. This is done with
+% \cs{AfterReadingMainAux} provided by package \pkg{scrlfile}.
+% \begin{macrocode}
+ \svg@quotes@remove{\svgx@out@path}%
+ \svg@quotes@remove{\svgx@out@name}%
+% \end{macrocode}
+% All generated files will be moved to the desired output folder, which is
+% given by option \opt{extractpath}. Therefor, this folder is created.
+% \begin{macrocode}
+ \edef\svg@tempb{%
+ \noexpand\svg@shell@mkdir{\svgx@out@path}%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+% \end{macrocode}
+% First of all the separate auxiliary \LaTeX~file is compiled with the detected
+% \LaTeX~processor (\cs{svgx@latex@exe}) as often as defined by counter option
+% \opt{extractruns}.
+% \begin{macrocode}
+ \edef\svg@tempb{%
+ \noexpand\PackageInfo{svg-extract}{%
+ Running LaTeX (\svgx@latex@exe) for graphic extraction%
+ \ifx\svgx@latex@opt\@empty\else%
+ \MessageBreak with added options `\svgx@latex@opt'%
+ \fi%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \svgx@latex@exe\space\svgx@latex@opt\space%
+ "\svgx@out@name.\svgx@latex@ext"%
+ }%
+ }%
+ \loop\ifnum\value{svgx@runs}>\z@\relax%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \advance\c@svgx@runs\m@ne%
+ \repeat%
+% \end{macrocode}
+% All files requested with option \opt{extractformat} are created with internal
+% conversion tools supplied by most \LaTeXe~distributions if necessarry.
+% \begin{macrocode}
+ \def\svg@tempa##1##2##3{%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \@nameuse{svgx@##1@exe}\space\@nameuse{svgx@##1@opt}\space%
+ "\svgx@out@name.##2"%
+ }%
+ }%
+ \AfterReadingMainAux{\PackageInfo{svg-extract}{Running ##1}}%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ \@svg@tempswafalse%
+ \ifxetex\else\ifpdf\else%
+ \@svg@tempswatrue%
+ \fi\fi%
+ \if@svg@tempswa%
+ \svg@tempa{dvips}{dvi}{ps}%
+ \svgx@ifinlist{eps}{\svgx@format}{\svg@tempa{pstoeps}{ps}{eps}}{}%
+ \svgx@ifinlist{pdf}{\svgx@format}{\svg@tempa{pstopdf}{ps}{pdf}}{}%
+ \else%
+ \svgx@ifinlist{eps}{\svgx@format}{\svg@tempa{pdftoeps}{pdf}{eps}}{}%
+ \svgx@ifinlist{ps}{\svgx@format}{\svg@tempa{pdftops}{pdf}{ps}}{}%
+ \fi%
+% \end{macrocode}
+% Now the desired conversion tool is invoked if requested.
+% \begin{macrocode}
+ \if@svgx@cnv@run%
+% \end{macrocode}
+% If no density was given at all, the density for PNG~files is set to
+% \val{300dpi} by default.
+% \begin{macrocode}
+ \ifx\svgx@cnv@dpi\relax%
+ \ifx\svgx@cnv@dpi@png\@undefined%
+ \def\svgx@cnv@dpi@png{300}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% The first given file type with option \opt{extractformat} is used as source
+% for the conversion process.
+% \begin{macrocode}
+ \expandafter\svgx@cnv@get@informat\expandafter{\svgx@format}%
+% \end{macrocode}
+% The conversion is done for each desired file type given in a list by option
+% \opt{convertformat}.
+% \begin{macrocode}
+ \@for\svg@tempa:=\svgx@cnv@format\do{%
+ \ifx\svg@tempa\@empty\else%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svgx@format}{%
+ \PackageWarning{svg-extract}{%
+ File type `\svg@tempa' was specified for option\MessageBreak%
+ `extractformat' (\svgx@format) as well as for \MessageBreak
+ option `convertformat' (\svgx@cnv@format) so the\MessageBreak%
+ conversion won't be done%
+ }%
+ }{%
+ \edef\svg@tempb{%
+ \noexpand\PackageInfo{svg-extract}{%
+ Converting `\svgx@out@name.\svgx@cnv@informat'\MessageBreak%
+ to `\svgx@out@name.\svg@tempa'%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \svgx@cnv@cmd{\svgx@out@name}{\svgx@cnv@informat}{\svg@tempa}%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ \fi%
+ }%
+ \fi%
+% \end{macrocode}
+% As both extraction and conversion are done, all files are moved to the
+% desired output folder (\opt{extractpath}).
+% \begin{macrocode}
+ \edef\svg@tempa{\svgx@format\if@svgx@cnv@run,\svgx@cnv@format\fi}%
+ \@for\svg@tempb:=\svg@tempa\do{%
+ \ifx\svg@tempb\@empty\else%
+ \edef\svg@tempb{%
+ \noexpand\svgx@move{\svgx@out@name}{\svg@tempb}{\svgx@out@path}%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \fi%
+ }%
+% \end{macrocode}
+% At the very end, all unwanted auxiliary files are deleted.
+% \begin{macrocode}
+ \@for\svg@tempa:=\svgx@clean\do{%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svg@tempb}{}{%
+ \edef\svg@tempb{%
+ \noexpand\IfFileExists{"\svgx@out@name".\svg@tempa}{%
+ \noexpand\svg@shell@rm{\svgx@out@name.\svg@tempa}%
+ }{}%
+ }%
+ \expandafter\AtEndDocument\expandafter{%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ }%
+ }%
+ }%
+ \fi%
+}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \if@svgx@preamble@write
+% \end{macro}^^A \svgx@stream@out
+% \end{macro}^^A \svgx@read@line
+% \end{macro}^^A \svgx@stream@in
+% \end{macro}^^A \svg@extract
+%
+% \iffalse
+%</package&body>
+%<*package&extract&body>
+% \fi
+%
+% \begin{macro}{\svgx@get@out@sec}
+% \begin{macro}{\svgx@out@sec}
+% The macro \cs{svgx@get@out@sec} reads all sectioning counters in order to
+% get the numbering of the current sectioning level. The value is stored in
+% \cs{svgx@out@sec}.
+% \begin{macrocode}
+\newcommand*\svgx@out@sec{unknown}
+\newcommand*\svgx@get@out@sec{%
+ \begingroup%
+ \def\svg@tempa{}%
+ \@for\svg@tempb:={%
+ part,chapter,section,subsection,subsubsection,paragraph,subparagraph%
+ }\do{%
+ \ifx\svg@tempb\@empty\else%
+ \scr@ifundefinedorrelax{the\svg@tempb}{}{%
+ \ifnum\value{\svg@tempb}>\z@\relax%
+ \edef\svg@tempa{\svg@tempb}%
+ \fi%
+ }%
+ \fi%
+ }%
+ \edef\svg@tempb{%
+ \endgroup%
+ \ifx\svg@tempa\@empty\else%
+ \def\noexpand\svgx@out@sec{\csname the\svg@tempa\endcsname}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@out@sec
+% \end{macro}^^A \svgx@get@out@sec
+% \begin{macro}{\svgx@documentclass}
+% \begin{macro}{\if@svgx@classfound}
+% This delimited macro is used to find a occurrence of \cs{documentclass}
+% within a read in line. The delinmiter \cs{documentclass} is used twice in
+% order to ignore the possible occurrence of white space or anything else right
+% before \cs{documentclass}.
+% \begin{macrocode}
+\newif\if@svgx@classfound
+\newcommand*\svgx@documentclass{}
+\def\svgx@documentclass#1\documentclass#2\documentclass#3\@nil{%
+ \IfArgIsEmpty{#2}{}{\@svgx@classfoundtrue}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svgx@classfound
+% \end{macro}^^A \svgx@documentclass
+% \begin{macro}{\svgx@read@preamble@till}
+% \begin{macro}{\svgx@read@preamble@from}
+% \begin{macro}{\svgx@read@preamble@skip}
+% These macros are used to skip some parts of a read in preamble file.
+% \begin{macrocode}
+\newcommand*\svgx@read@preamble@till[2]{%
+ \svgx@read@preamble@skip#1\@nil{till}{#2}%
+}
+\newcommand*\svgx@read@preamble@from[2]{%
+ \svgx@read@preamble@skip#1\@nil{from}{#2}%
+}
+% \end{macrocode}
+% In principle, the functionality is the same as for \cs{svgx@documentclass}.
+% \begin{macrocode}
+\newcommand*\svgx@read@preamble@skip{}
+\def\svgx@read@preamble@skip#1\@nil#2#3{%
+% \end{macrocode}
+% A given token is used to create the macro \cs{svg@tempa} delimited by the
+% token itself which is used twice to get any stuff right before or after the
+% occurrence.
+% \begin{macrocode}
+ \def\svg@tempa##1{%
+ \def\svg@tempa####1##1####2##1####3\@nil{%
+ \IfArgIsEmpty{####3}{}{%
+% \end{macrocode}
+% Write everything which was found right before the macro which starts hiding
+% area to the output stream and stop writing with \cs{if@svgx@preamble@write}.
+% \begin{macrocode}
+ \ifstr{#2}{till}{%
+ \IfArgIsEmpty{####1}{}{%
+ \immediate\write\svgx@stream@out{####1}%
+ }%
+ \@svgx@preamble@writefalse%
+ }{%
+% \end{macrocode}
+% Write everything which was found right after the macro which ends the hiding
+% area and start writing again with \cs{if@svgx@preamble@write}.
+% \begin{macrocode}
+ \ifstr{#2}{from}{%
+ \IfArgIsEmpty{####2}{%
+ \def\svgx@read@line{}%
+ }{%
+ \def\svgx@read@line{####2}%
+ }%
+ \@svgx@preamble@writetrue%
+ }{}%
+ }%
+% \end{macrocode}
+% Additonal stuff which should be done.
+% \begin{macrocode}
+ #3%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Creating the macro \cs{svg@tempa} delimited by the first argument.
+% \begin{macrocode}
+ \edef\svg@tempb{\expandafter\detokenize\expandafter{#1}}%
+ \expandafter\svg@tempa\expandafter{\svg@tempb}%
+% \end{macrocode}
+% Calling the created macro.
+% \begin{macrocode}
+ \edef\svg@tempb{%
+ \expandafter\detokenize\expandafter{\svgx@read@line}\svg@tempb\svg@tempb%
+ }%
+ \expandafter\svg@tempa\svg@tempb\@nil%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@read@preamble@skip
+% \end{macro}^^A \svgx@read@preamble@from
+% \end{macro}^^A \svgx@read@preamble@till
+% \begin{macro}{\svgx@cnv@informat}
+% \begin{macro}{\svgx@cnv@get@informat}
+% The first list entry from argument (\cs{svgx@format}) is extracted by
+% \cs{svgx@cnv@get@informat}.
+% \begin{macrocode}
+\newcommand*\svgx@cnv@informat{}
+\newcommand*\svgx@cnv@get@informat[1]{%
+ \begingroup%
+ \def\svg@tempa##1,##2\@nil{%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1,\@nil%
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\def\noexpand\svgx@cnv@informat{\svg@tempa}%
+ }%
+ \svg@tempa%
+% \end{macrocode}
+% If the first argument (\cs{svgx@format}) was empty, \cs{svgx@cnv@informat} is
+% set to the a file type, which is generated anyway.
+% \begin{macrocode}
+ \ifx\svgx@cnv@informat\@empty%
+ \renewcommand*\svgx@cnv@informat{pdf}%
+ \ifxetex\else\ifpdf\else%
+ \renewcommand*\svgx@cnv@informat{ps}%
+ \fi\fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@cnv@get@informat
+% \end{macro}^^A \svgx@cnv@informat
+% \begin{macro}{\svgx@magick@cmd}
+% \begin{macro}{\svgx@gs@cmd}
+% Depending on option \opt{convert}, one of these two macros is actually used
+% by \cs{svgx@cnv@cmd}. For invoking the conversion process, the required
+% platform-dependent executable is set, if nothing was set by a package option.
+% \begin{macrocode}
+\ifx\svgx@magick@exe\@empty
+ \ifwindows
+ \renewcommand*\svgx@magick@exe{magick}
+ \else
+ \renewcommand*\svgx@magick@exe{convert}
+ \fi
+\fi
+\newcommand*\svgx@magick@cmd[3]{%
+ \svgx@magick@exe\space%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-density }%
+ \svgx@useformatkey{svgx@magick@set}{#3}{}%
+ "#1.#2"\space%
+ \svgx@useformatkey{svgx@magick@opr}{#3}{}%
+ "#1.#3"%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\svgx@gs@exe\@empty
+ \ifwindows
+ \renewcommand*\svgx@gs@exe{gswin64c}
+ \else
+ \renewcommand*\svgx@gs@exe{gs}
+ \fi
+\fi
+\newcommand*\svgx@gs@cmd[3]{%
+ \svgx@gs@exe\space-dSAFER -dBATCH -dNOPAUSE\space%
+ \svgx@useformatkey{svgx@gs@device}{#3}{-sDEVICE=}%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-r}%
+ \svgx@useformatkey{svgx@gs@opt}{#3}{}%
+ -sOutputFile="#1.#3"\space"#1.#2"%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@gs@cmd
+% \end{macro}^^A \svgx@magick@cmd
+% \begin{macro}{\svgx@move}
+% If the file doesn't exist
+% \begin{macrocode}
+\newcommand*\svgx@move[3]{%
+ \begingroup%
+ \IfFileExists{"#1".#2}{%
+ \svg@shell@move{#1.#2}{#3#1.#2}%
+ }{%
+ \edef\svg@tempa{#2}%
+ \@svg@tempswafalse%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svgx@cnv@format}{%
+ \@svg@tempswatrue%
+ \def\svg@tempb{conversion}%
+ }{%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{pdf,ps,eps}{%
+ \@svg@tempswatrue%
+ \def\svg@tempb{extraction}%
+ }{}%
+ }%
+ \if@svg@tempswa%
+ \edef\svg@tempb{%
+ The graphic file \svg@tempb\space failed\MessageBreak%
+ for `#1.#2'\MessageBreak%
+ Troubleshooting: Please check the log file how the\MessageBreak%
+ invocation of the extraction took place and try\MessageBreak%
+ to execute it yourself in the terminal%
+ }%
+ \else%
+ \def\svg@tempb{%
+ The extraction to format `#2' failed\MessageBreak%
+ for `#1.#2'\MessageBreak%
+ Only file types `pdf,ps,eps' are supported for\MessageBreak%
+ key `exportformat'%
+ }%
+ \fi%
+ \PackageWarning{svg-extract}{\svg@tempb}%
+ }%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@move
+%
+% \iffalse
+%</package&extract&body>
+%<*package&extract&option>
+% \fi
+%
+% \begin{macro}{\svgx@ifinlist}
+% Check, if the first argument is included in a comma-separated list in the
+% second argument. Keep in mind that the first argument is not expanded at all,
+% the second one exactly once.
+% \begin{macrocode}
+\newcommand*\svgx@ifinlist[2]{%
+ \begingroup%
+ \def\svg@tempa##1,#1,##2\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \aftergroup\@secondoftwo%
+ }{%
+ \aftergroup\@firstoftwo%
+ }%
+ }%
+ \expandafter\svg@tempa\expandafter,#2,#1,\@nil%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@ifinlist
+% \begin{macro}{\svgx@onlywindows}
+% Do only some stuff, if Windows was detected.
+% \begin{macrocode}
+\newcommand*\svgx@onlywindows[1]{}
+\AfterPackage*{ifplatform}{\renewcommand*\svgx@onlywindows[1]{\ifwindows#1\fi}}
+% \end{macrocode}
+% \end{macro}^^A \svgx@onlywindows
+% \begin{macro}{\svgx@ifkeyandval}
+% It is checked whether a key was given as \val{\meta{key}=\meta{value}} or
+% like \val{\meta{key}=\{\meta{format}=\meta{value}\}}.
+% \begin{macrocode}
+\newcommand*\svgx@ifkeyandval[3]{%
+ \def\svg@tempa##1=##2=##3\@nil{\ifstr{##3}{=}{#2}{#3}}%
+ \svg@tempa#1==\@nil%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@ifkeyandval
+% \begin{macro}{\svgx@cnv@get@dpi}
+% This macro is used to resolve a given value to set the density for the
+% conversion. The delimited macros \cs{svg@tempa} and \cs{svg@tempb} are
+% defined to first crop any given suffix \val{dpi} and second to split two
+% numbers at |x|, if present. Pay attention how both macros are invoked. In the
+% end, a passed value in any of the forms \val{300}, \val{300dpi}, \val{300x400}
+% or \val{300x400dpi} and even \val{300dpix400dpi} is possible. The result is
+% stored in \cs{svg@tempa}.
+% \begin{macrocode}
+\newcommand*\svgx@cnv@get@dpi[1]{%
+ \begingroup%
+ \def\svg@tempa##1dpi##2x##3dpi##4\@nil{%
+ \edef\svg@tempa{##1}%
+% \end{macrocode}
+% Switch \cs{if@svg@tempswa} as \cs{iftrue} means, a valid value was found.
+% \begin{macrocode}
+ \@svg@tempswafalse%
+% \end{macrocode}
+% If only the first argument is a number and third is empty, a single number
+% was given and there's nothing more to do. If the argument is something like
+% \val{300dpix400dpi}, the third argument is the second number.
+% \begin{macrocode}
+ \ifnumber{##1}{%
+ \IfArgIsEmpty{##3}{\@svg@tempswatrue}{%
+ \ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
+ }%
+ }{}%
+ \if@svg@tempswa\else%
+ \expandafter\svg@tempb\svg@tempa xx\@nil%
+ \fi%
+ }%
+% \end{macrocode}
+% Macro \cs{svg@tempb} splits at |x| and checks, if something valid like
+% \val{300x400} was given. If true, the value is stored in \cs{svg@tempa}.
+% \begin{macrocode}
+ \def\svg@tempb##1x##2x##3\@nil{%
+ \ifstr{##3}{x}{%
+ \@svg@tempswatrue%
+ \IfArgIsEmpty{##1}{\@svg@tempswafalse}{%
+ \ifnumber{##1}{}{\@svg@tempswafalse}%
+ }%
+ \IfArgIsEmpty{##2}{\@svg@tempswafalse}{%
+ \ifnumber{##2}{}{\@svg@tempswafalse}%
+ }%
+ \if@svg@tempswa%
+ \edef\svg@tempa{##1x##2}%
+ \fi%
+ }{}%
+ }%
+ \IfArgIsEmpty{#1}{%
+ \let\svg@tempa\@empty%
+ }{%
+ \lowercase{\svg@tempa#1dpi#1xdpi\@nil}%
+ \if@svg@tempswa\else%
+ \let\svg@tempa\relax%
+ \fi%
+ }%
+ \edef\svg@tempb{%
+ \noexpand\endgroup%
+ \ifx\svg@tempa\relax%
+ \noexpand\let\noexpand\svg@tempa\noexpand\relax%
+ \else%
+ \noexpand\def\noexpand\svg@tempa{\svg@tempa}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@cnv@get@dpi
+% \begin{macro}{\svgx@setformatkey}
+% \begin{macro}{\svgx@useformatkey}
+% With \cs{svgx@setformatkey} the---maybe output format depend---keys for the
+% conversion tools are set. First argument contains the value given to a key,
+% second the command sequence name of the macro, to whom the value shall be
+% allocated.
+% \begin{macrocode}
+\newcommand*\svgx@setformatkey[2]{%
+% \end{macrocode}
+% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
+% The desired output format can be accessed with |##1|, the value with |##2|
+% within the arguments of \cs{svgx@ifkeyandval}.
+% \begin{macrocode}
+ \svgx@ifkeyandval{#1}{%
+ \svg@ifvalueisrelax{##2}{%
+ \expandafter\let\csname #2@##1\endcsname\relax%
+ }{%
+ \@namedef{#2@##1}{##2}%
+ }%
+% \end{macrocode}
+% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
+% The value can be used with |##1|.
+% \begin{macrocode}
+ }{%
+ \svg@ifvalueisrelax{##1}{%
+ \expandafter\let\csname #2\endcsname\relax%
+ }{%
+ \@namedef{#2}{##1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% The command \cs{svgx@useformatkey} checks, if a format specific key was
+% definded with \cs{svgx@setformatkey}, whereas the format is given in the
+% second argument. If this is not the case, the setting for all output formats
+% is used. After that, a specific key appended with a |+| can be used to do
+% some additional stuff.
+% \begin{macrocode}
+\newcommand*\svgx@useformatkey[3]{%
+ \scr@ifundefinedorrelax{#1@#2}{%
+ \scr@ifundefinedorrelax{#1}{}{%
+ \expandafter\ifx\csname #1\endcsname\@empty\else%
+ #3\@nameuse{#1}\space%
+ \fi%
+ }%
+ \scr@ifundefinedorrelax{#1@#2+}{}{%
+ \expandafter\ifx\csname #1@#2+\endcsname\@empty\else%
+ #3\@nameuse{#1@#2+}\space%
+ \fi%
+ }%
+ }{%
+% \end{macrocode}
+% If this a format specific key was definded, it is used.
+% \begin{macrocode}
+ \expandafter\ifx\csname #1@#2\endcsname\@empty\else%
+ #3\@nameuse{#1@#2}\space%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@useformatkey
+% \end{macro}^^A \svgx@setformatkey
+%
+%
+%
+% \subsection{Commands for the separate auxiliary \LaTeX-file}
+%
+% For the extraction of independent graphics, an auxiliary \LaTeX~file is
+% needed. Within this file, the following commands are used to include the
+% desired graphic.
+%
+% \begin{macro}{\svgxsetbox}
+% \begin{macro}{\svgx@box}
+% Within the preamble of the auxiliary \LaTeX~file, the desired grahic is used
+% to setup a box, which is used both to define the papersize as well as for the
+% output itself.
+% \begin{macrocode}
+\newbox\svgx@box
+\newcommand*\svgxsetbox[2][]{%
+ \sbox\svgx@box{\svg@@input[{#1},draft=false]{#2}}%
+% \end{macrocode}
+% Setting crop-mode for the \TUDScript-classes.
+% \begin{macrocode}
+ \csname @tud@x@standalone@croptrue\endcsname%
+ \svgxsetpapersize%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@box
+% \end{macro}^^A \svgxsetbox
+% \begin{macro}{\svgxsetpapersize}
+% This macro sets all well known length macros for defining the paper size as
+% well as the type area to the size of \cs{svgx@box}.
+% \begin{macrocode}
+\newcommand*\svgxsetpapersize{%
+ \setlength\paperwidth{\the\wd\svgx@box}%
+ \ifx\stockwidth\@undefined\else%
+ \setlength\stockwidth{\paperwidth}%
+ \fi%
+ \ifx\mediawidth\@undefined\else%
+ \setlength\mediawidth{\paperwidth}%
+ \fi%
+ \setlength\textwidth{\paperwidth}%
+ \setlength\paperheight{\the\dimexpr\ht\svgx@box+\dp\svgx@box\relax}%
+ \ifx\stockheight\@undefined\else%
+ \setlength\stockheight{\paperheight}%
+ \fi%
+ \ifx\mediaheight\@undefined\else%
+ \setlength\mediaheight{\paperheight}%
+ \fi%
+ \setlength\textheight{\paperheight}%
+% \end{macrocode}
+% Any other length regarding the layout is set to have no influence at all.
+% Hence the document has the same size as the graphic.
+% \begin{macrocode}
+ \hoffset=-1in%
+ \oddsidemargin=\z@%
+ \evensidemargin=\z@%
+ \voffset=-1in%
+ \topmargin=\z@%
+ \headheight=\z@%
+ \headsep=\z@%
+ \topskip=\z@%
+ \footskip=\z@%
+ \marginparsep=\z@%
+ \marginparwidth=\z@%
+ \marginparpush=\z@%
+}
+\@onlypreamble\svgxsetpapersize
+% \end{macrocode}
+% \end{macro}^^A \svgxsetpapersize
+% \begin{macro}{\svgxoutputbox}
+% \begin{macro}{\if@svgx@beamer}
+% With \cs{svgxoutputbox} the created box is displayed.
+% \begin{macrocode}
+\newif\if@svgx@beamer
+\@ifclassloaded{beamer}{\@svgx@beamertrue}{}%
+\newcommand*\svgxoutputbox{%
+ \begingroup%
+ \setlength\parindent{\z@}%
+ \setlength\parskip{\z@}%
+ \setlength\parfillskip{\z@}%
+ \if@svgx@beamer%
+ \setbeamertemplate{navigation symbols}{}%
+ \begin{frame}[plain]%
+ \usebox\svgx@box%
+ \end{frame}%
+ \else%
+ \usebox\svgx@box%
+ \fi%
+ \endgraf%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svgx@beamer
+% \end{macro}^^A \svgxoutputbox
+%
+% \iffalse
+%</package&extract&option>
+%<*package&option>
+% \fi
+%
+%
+%
+% \section{Processing Options}
+%
+% Setting the default options and processing the given ones during when loading
+% the packages.
+% \begin{macrocode}
+%<*base>
+\FamilyExecuteOptions{SVG}{%
+ inkscape=true,inkscapepath=basesubdir,inkscapelatex=true,%
+ inkscapearea=drawing,usexcolor=true,usetransparent=true%
+}
+%</base>
+%<*extract>
+\FamilyExecuteOptions{SVG}{%
+ extract=true,extractpath=basesubdir,extractruns=2,extractname=namenumbered,%
+ convert=magick,convert=false,%
+ gsdevice={png=png16m},gsdevice={jpeg=jpeg},gsdevice={jpg=jpeg},%
+ gsdevice={tif=tiff48nc},gsdevice={tiff=tiff48nc},%
+ gsdevice={eps=eps2write},gsdevice={ps=ps2write}%
+}
+%</extract>
+\FamilyProcessOptions{SVG}
+% \end{macrocode}
+%
+% \iffalse
+%</package&option>
+%<*package&base&body>
+% \fi
+%
+%
+%
+% \section{Macros for file access}
+%
+% Finally, platform dependend macros for creating directories as well as moving
+% and deleting files are provided, if \file{-{}-shell-escape} is enabled. Only
+% then package \pkg{ifplatform} is only used in order to do not raise a warning.
+% \begin{macrocode}
+\ifnum\pdf@shellescape=\@ne\relax\else%
+ \expandafter\endinput%
+\fi
+\RequirePackage{ifplatform}[2010/10/22]
+% \end{macrocode}
+% \begin{macro}{\svg@shell@mkdir}
+% \begin{macro}{\svg@shell@@mkdir}
+% \begin{macro}{\svg@shell@mv}
+% \begin{macro}{\svg@shell@@mv}
+% \begin{macro}{\svg@shell@rm}
+% \begin{macro}{\svg@shell@@rm}
+% The platform dependent commands for file access.
+% \begin{macrocode}
+\ifwindows
+ \newcommand*\svg@shell@@mkdir[1]{if not exist "#1" mkdir "#1"}
+ \newcommand*\svg@shell@@mv{move}
+ \newcommand*\svg@shell@@rm{del}
+\else
+ \newcommand*\svg@shell@@mkdir[1]{mkdir -p "#1"}
+ \newcommand*\svg@shell@@mv{mv}
+ \newcommand*\svg@shell@@rm{rm}
+\fi
+% \end{macrocode}
+% A directory should only be created, if it isn't the current working directory.
+% \begin{macrocode}
+\newcommand*\svg@shell@mkdir[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@remove{\svg@tempa}%
+ \@svg@tempswatrue%
+ \ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
+ \ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
+ }}%
+ \if@svg@tempswa%
+ \ShellEscape{\svg@shell@@mkdir{\svg@tempa}}%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% Commands for moving and deleting files.
+% \begin{macrocode}
+\newcommand*\svg@shell@move[2]{%
+ \ShellEscape{\svg@shell@@mv\space"#1"\space"#2"}%
+}
+\newcommand*\svg@shell@rm[1]{%
+ \ShellEscape{\svg@shell@@rm\space"#1"}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@shell@@rm
+% \end{macro}^^A \svg@shell@rm
+% \end{macro}^^A \svg@shell@@mv
+% \end{macro}^^A \svg@shell@mv
+% \end{macro}^^A \svg@shell@@mkdir
+% \end{macro}^^A \svg@shell@mkdir
+%
+% \iffalse
+%</package&base&body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% \iffalse
+%<*package&old>
+% \fi
+%
+%
+%
+% \section{Old Implementation}
+%
+% The package, which requires the packages \pkg{xkeyval} for the options,
+% \pkg{subfig} for automatic labeling within the subfigure command, the
+% \pkg{import} package for correct handling of paths, \pkg{graphicx} for the
+% PDF~file inclusion commands, \pkg{transparent} for transparency, and
+% \pkg{xcolor} for color, is initialized.
% \begin{macrocode}
\ProvidesPackage{svg}[2012/09/05 v1.0 SVG inclusion and extraction]%
\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}%
@@ -471,14 +5082,15 @@ urlcolor=blue]{hyperref}
\@ifpackageloaded{transparent}{}{\RequirePackage{transparent}}%
\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{input definition}
-% All commands used for input (i.e. for the \svg and preamble) are
-% defined within the |\SVG@in| prefix, and set by the key definition
-% of the line following their definition. The |exclude| boolean,
-% used to stop the inclusion of the \svg within the document is also
-% defined.
+%
+%
+% \subsection{Input definition}
+%
+% All commands used for input (i.e. for the SVG~file and preamble) are
+% defined within the \cs{SVG@in} prefix, and set by the key definition of the
+% line following their definition. The \opt{exclude} boolean, used to stop the
+% inclusion of the SVG~file within the document is also defined.
% \begin{macrocode}
\def\SVG@in@preamble{\jobname.tex}%
\define@key[SVG]{svg.sty}{preamble}{\def\SVG@in@preamble{#1}}%
@@ -488,29 +5100,36 @@ urlcolor=blue]{hyperref}
\define@key[SVG]{svg.sty}{end}{\def\SVG@in@end{#1}}%
\define@boolkey[SVG]{svg.sty}[SVG@in@]{exclude}[true]{}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{length definition}
-% All commands used for output are defined within the |\SVG@out|
-% prefix, beginning with the dimensions of the extracted image. If no
-% dimensions are supplied both |useheight| and |usewidth| are
-% |false|, and so the natural dimensions of the \svg are used. If
-% both |usewidth| and |useheight| are |true|, the width is used.
+%
+%
+% \subsection{Length definition}
+%
+% All commands used for output are defined within the \cs{SVG@out} prefix,
+% beginning with the dimensions of the extracted image. If no dimensions are
+% supplied both \cs{ifSVG@out@usewidth} and \cs{ifSVG@out@useheight} are
+% \val{false}, and so the natural dimensions of the SVG~file are used.
+% If both \cs{ifSVG@out@usewidth} and \cs{ifSVG@out@useheight} are
+% \val{true}, the width is used.
% \begin{macrocode}
\newlength\SVG@out@width%
\newif\ifSVG@out@usewidth%
-\define@key[SVG]{svg.sty}{width}%
-{\setlength{\SVG@out@width}{#1}\SVG@out@usewidthtrue}%
+\define@key[SVG]{svg.sty}{width}{%
+ \setlength{\SVG@out@width}{#1}\SVG@out@usewidthtrue%
+}%
\newlength\SVG@out@height%
\newif\ifSVG@out@useheight%
-\define@key[SVG]{svg.sty}{height}%
-{\setlength{\SVG@out@height}{#1}\SVG@out@useheighttrue}%
+\define@key[SVG]{svg.sty}{height}{%
+ \setlength{\SVG@out@height}{#1}\SVG@out@useheighttrue%
+}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{extract booleans}
+%
+%
+% \subsection{Extract booleans}
+%
% The booleans for the extraction formats are defined. Additionally,
-% the global export variable is defined, which is set to |true|
+% the global export variable is defined, which is set to \val{true}
% whenever any extraction is requested.
% \begin{macrocode}
\define@boolkey[SVG]{svg.sty}[SVG@out@]{pdf}[true]{}%
@@ -518,11 +5137,13 @@ urlcolor=blue]{hyperref}
\define@boolkey[SVG]{svg.sty}[SVG@out@]{png}[true]{}%
\newif\ifSVG@out@extract
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{output definitions}
+%
+%
+% \subsection{Output definitions}
+%
% The extraction path, extraction root name, clean boolean,
-% pre-\latex commands, and post-\latex commands are defined.
+% pre-\LaTeX~commands, and post-\LaTeX~commands are defined.
% \begin{macrocode}
\def\SVG@out@path{./}%
\define@key[SVG]{svg.sty}{path}{\def\SVG@out@path{#1}}%
@@ -534,10 +5155,12 @@ urlcolor=blue]{hyperref}
\def\SVG@out@postex{}%
\define@key[SVG]{svg.sty}{postex}{\def\SVG@out@postex{#1}}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{command definitions}
-% The command options are defined within the prefix |\SVG@cmd| and
+%
+%
+% \subsection{Command definitions}
+%
+% The command options are defined within the prefix \cs{SVG@cmd} and
% are set by the key definition following each command definition.
% \begin{macrocode}
\def\SVG@cmd@inkscape{inkscape -z -C}%
@@ -549,29 +5172,32 @@ urlcolor=blue]{hyperref}
\def\SVG@cmd@convert{convert -density 300}%
\define@key[SVG]{svg.sty}{convert}{\def\SVG@cmd@convert{#1}}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{process options}
-% All the options for the package are processed, and the \svg
-% counter is defined. The \svg counter is used to correctly handle
-% the |subfigure| counting.
+%
+%
+% \subsection{Process options}
+%
+% All the options for the package are processed, and a counter is defined,
+% which is used to correctly handle the \cnt{subfigure} counting.
% \begin{macrocode}
\ProcessOptionsX[SVG]%
\newcounter{svgfigure}[figure]%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\setsvg}
+%
+%
+% \subsection{User interface}
+%
% Define the macro to globally set keys.
% \begin{macrocode}
\def\setsvg#1{\setkeys[SVG]{svg.sty}{#1}}%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\includesvg}
-% Define the macro used to include an \svg. Set the keys and
+% Define the macro used to include a SVG~file. Set the keys and
% determine if extraction should occur.
% \begin{macrocode}
+\newread\SVG@in@file%
+\newwrite\SVG@out@file%
\def\includesvg{\@ifnextchar[\@includesvg{\@includesvg[]}}%
\def\@includesvg[#1]#2{%
\setkeys[SVG]{svg.sty}{#1}%
@@ -580,154 +5206,202 @@ urlcolor=blue]{hyperref}
\ifSVG@out@eps \SVG@out@extracttrue \fi%
\ifSVG@out@png \SVG@out@extracttrue \fi%
% \end{macrocode}
-% Run \inkscape to separate the \svg into text and image. Only run
-% \inkscape if the \svg is newer than the generated text and image.
-% \begin{macrocode}
-\ifnum\pdfstrcmp%
-{\pdffilemoddate{\SVG@in@path#2.svg}}%
-{\pdffilemoddate{\SVG@in@path#2.pdf}}>0%
-\immediate\write18{\SVG@cmd@inkscape \space -f\SVG@in@path#2.svg%
- \space-A\SVG@in@path#2.pdf --export-latex}%
-\fi%
-% \end{macrocode}
-% Determine the image width and height using |\includegraphics|.
-% \begin{macrocode}
-\ifSVG@out@usewidth%
-\settoheight\SVG@out@height%
-{\includegraphics[width=\SVG@out@width]{\SVG@in@path#2}}%
-\else\ifSVG@out@useheight%
-\settowidth\SVG@out@width%
-{\includegraphics[height=\SVG@out@height]{\SVG@in@path#2}}%
-\else%
-\settoheight\SVG@out@height{\includegraphics{\SVG@in@path#2}}%
-\settowidth\SVG@out@width{\includegraphics{\SVG@in@path#2}}%
-\fi%
-\fi%
+% Run \app{Inkscape} to separate the SVG~file into text and image. Only
+% run \app{Inkscape} if the SVG~file is newer than the generated text
+% and image.
+% \begin{macrocode}
+ \ifnum\pdfstrcmp{%
+ \pdffilemoddate{\SVG@in@path#2.svg}%
+ }{%
+ \pdffilemoddate{\SVG@in@path#2.pdf}%
+ }>0\relax%
+ \immediate\write18{%
+ \SVG@cmd@inkscape\space%
+ -f \SVG@in@path#2.svg\space%
+ -A \SVG@in@path#2.pdf\space%
+ --export-latex%
+ }%
+ \fi%
+% \end{macrocode}
+% Determine the image width and height using \cs{includegraphics}.
+% \begin{macrocode}
+ \ifSVG@out@usewidth%
+ \settoheight\SVG@out@height{%
+ \includegraphics[width=\SVG@out@width]{\SVG@in@path#2}%
+ }%
+ \else%
+ \ifSVG@out@useheight%
+ \settowidth\SVG@out@width{%
+ \includegraphics[height=\SVG@out@height]{\SVG@in@path#2}%
+ }%
+ \else%
+ \settoheight\SVG@out@height{%
+ \includegraphics{\SVG@in@path#2}%
+ }%
+ \settowidth\SVG@out@width{\includegraphics{\SVG@in@path#2}}%
+ \fi%
+ \fi%
% \end{macrocode}
% Open the output file for extraction.
-% \begin{macrocode}
+% \begin{macrocode}
% Open the output file.
-\ifSVG@out@extract%
-\newwrite\SVG@out@file%
-\setcounter{svgfigure}{\value{figure}}%
-\stepcounter{svgfigure}%
-\def\SVG@out@filename{\SVG@out@name}%
-\immediate\openout\SVG@out@file=\SVG@out@path\SVG@out@filename.tex%
-\fi%
+ \ifSVG@out@extract%
+ \setcounter{svgfigure}{\value{figure}}%
+ \stepcounter{svgfigure}%
+ \def\SVG@out@filename{\SVG@out@name}%
+ \immediate\openout\SVG@out@file=\SVG@out@path\SVG@out@filename.tex%
+ \fi%
% \end{macrocode}
% Open and write the preamble. Notice that the catcodes for |#| need
% to be changed to prevent double expansion when reading the line.
-% \begin{macrocode}
-\ifSVG@out@extract%
-\def\SVG@in@line{}%
-\newread\SVG@in@file%
-\immediate\openin\SVG@in@file=\SVG@in@preamble%
-\fi%
-\newif\ifSVG@in@read%
-\ifSVG@out@extract \SVG@in@readtrue \fi%
-\@whilesw\ifSVG@in@read\fi{%
- \catcode`\#=12\relax\endlinechar=-1%
- \immediate\read\SVG@in@file to \SVG@in@line%
- \ifx\SVG@in@end\SVG@in@line%
- \SVG@in@readfalse%
- \else%
- \immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@in@line}}%
+% \begin{macrocode}
+ \ifSVG@out@extract%
+ \def\SVG@in@line{}%
+ \immediate\openin\SVG@in@file=\SVG@in@preamble%
\fi%
- \ifeof\SVG@in@file\SVG@in@readfalse\fi%
- \endlinechar=13\catcode`\#=6\relax}%
-\ifSVG@out@extract \immediate\closein\SVG@in@file \fi%
+ \newif\ifSVG@in@read%
+ \ifSVG@out@extract \SVG@in@readtrue \fi%
+ \@whilesw\ifSVG@in@read\fi{%
+ \catcode`\#=12\relax\endlinechar=-1%
+ \immediate\read\SVG@in@file to \SVG@in@line%
+ \ifx\SVG@in@end\SVG@in@line%
+ \SVG@in@readfalse%
+ \else%
+ \immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@in@line}}%
+ \fi%
+ \ifeof\SVG@in@file\SVG@in@readfalse\fi%
+ \endlinechar=13\catcode`\#=6\relax%
+ }%
+ \ifSVG@out@extract \immediate\closein\SVG@in@file \fi%
% \end{macrocode}
% Now write everything needed after the preamble. This includes
-% requiring the |import| package and defining all the dimensions need
+% requiring the \pkg{import} package and defining all the dimensions need
% to match the document size with the image size.
-% \begin{macrocode}
-\ifSVG@out@extract%
-\def\SVG@out@defpack{\makeatletter%
- \@ifpackageloaded{import}{}{\RequirePackage{import}}%
- \@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}%
- \@ifpackageloaded{transparent}{}{\RequirePackage{transparent}}%
- \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}\makeatother}%
-\def\SVG@out@defwidth{\def\svgwidth{0.99\textwidth}}%
-\def\SVG@out@definput{\import{\SVG@in@path}{#2.pdf_tex}}%
-\immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@out@defpack}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\pdfpagewidth}{\the\SVG@out@width}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\pdfpageheight}{\the\SVG@out@height}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\paperheight}{\pdfpageheight}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\paperwidth}{\pdfpagewidth}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textheight}{\paperheight}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textwidth}{\paperwidth}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textheight}{\paperheight}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\oddsidemargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\evensidemargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\topmargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\headheight}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\headsep}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\topskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\footskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parindent}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parsep}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\begin{document}}%
- \immediate\write\SVG@out@file{%
- \noexpand\pagestyle{empty}%
- \noexpand\begin{center}%
- \unexpanded\expandafter{\SVG@out@defwidth}%
- \unexpanded\expandafter{\SVG@out@pretex}%
- \expandafter\noexpand\SVG@out@definput%
- \unexpanded\expandafter{\SVG@out@postex}%
- \noexpand\end{center}}%
- \immediate\write\SVG@out@file{\noexpand\end{document}}%
-\immediate\closeout\SVG@out@file%
-\fi%
-% \end{macrocode}
-% Run \latex on the extracted file and create the \pdf.
-% \begin{macrocode}
-\ifSVG@out@extract%
-\immediate\write18{\SVG@cmd@pdflatex\space\SVG@out@path\SVG@out@filename.tex}%
-\fi%
-% \end{macrocode}
-% Convert the \pdf to \eps if requested.
-% \begin{macrocode}
-\ifSVG@out@eps%
-\immediate\write18{\SVG@cmd@pdftops\space\SVG@out@filename.pdf}%
-\immediate\write18{mv \SVG@out@filename.eps%
- \space\SVG@out@path\SVG@out@filename.eps}%
-\fi%
-% \end{macrocode}
-% Convert the \pdf to \png if requested.
-% \begin{macrocode}
-\ifSVG@out@png%
-\immediate\write18{\SVG@cmd@convert\space\SVG@out@filename.pdf%
- \space\SVG@out@filename.png}%
-\immediate\write18{mv \SVG@out@filename.png%
- \space\SVG@out@path\SVG@out@filename.png}%
-\fi%
+% \begin{macrocode}
+ \ifSVG@out@extract%
+ \def\SVG@out@defpack{%
+ \makeatletter%
+ \@ifpackageloaded{import}{}{\RequirePackage{import}}%
+ \@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}%
+ \@ifpackageloaded{transparent}{}{\RequirePackage{transparent}}%
+ \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}%
+ \makeatother%
+ }%
+ \def\SVG@out@defwidth{\def\svgwidth{0.99\textwidth}}%
+ \def\SVG@out@definput{\import{\SVG@in@path}{#2.pdf_tex}}%
+ \immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@out@defpack}}%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\pdfpagewidth}{\the\SVG@out@width}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\pdfpageheight}{\the\SVG@out@height}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\paperheight}{\pdfpageheight}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\paperwidth}{\pdfpagewidth}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\textheight}{\paperheight}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\textwidth}{\paperwidth}%
+ }%
+ \immediate\write\SVG@out@file{%
+ \noexpand\setlength{\textheight}{\paperheight}%
+ }%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\oddsidemargin}{-1in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\evensidemargin}{-1in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\topmargin}{-1in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\headheight}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\headsep}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\topskip}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\footskip}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\parindent}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\parsep}{0in}}%
+ \immediate\write\SVG@out@file{\noexpand\setlength{\parskip}{0in}}%
+ \immediate\write\SVG@out@file{%
+ \noexpand\begin{document}%
+ \noexpand\pagestyle{empty}%
+ \noexpand\begin{center}%
+ \unexpanded\expandafter{\SVG@out@defwidth}%
+ \unexpanded\expandafter{\SVG@out@pretex}%
+ \expandafter\noexpand\SVG@out@definput%
+ \unexpanded\expandafter{\SVG@out@postex}%
+ \noexpand\end{center}%
+ \noexpand\end{document}%
+ }%
+ \immediate\closeout\SVG@out@file%
+ \fi%
+% \end{macrocode}
+% Run \LaTeX{} on the extracted file and create the PDF~file.
+% \begin{macrocode}
+ \ifSVG@out@extract%
+ \immediate\write18{%
+ \SVG@cmd@pdflatex\space\SVG@out@path\SVG@out@filename.tex%
+ }%
+ \fi%
+% \end{macrocode}
+% Convert the PDF~file to EPS~file if requested.
+% \begin{macrocode}
+ \ifSVG@out@eps%
+ \immediate\write18{\SVG@cmd@pdftops\space\SVG@out@filename.pdf}%
+ \immediate\write18{%
+ mv \SVG@out@filename.eps\space\SVG@out@path\SVG@out@filename.eps%
+ }%
+ \fi%
+% \end{macrocode}
+% Convert the PDF~file to PNG~file if requested.
+% \begin{macrocode}
+ \ifSVG@out@png%
+ \immediate\write18{%
+ \SVG@cmd@convert\space%
+ \SVG@out@filename.pdf\space\SVG@out@filename.png%
+ }%
+ \immediate\write18{%
+ mv \SVG@out@filename.png\space\SVG@out@path\SVG@out@filename.png%
+ }%
+ \fi%
% \end{macrocode}
% Clean up if requested.
-% \begin{macrocode}
-\ifSVG@out@extract%
-\ifSVG@out@pdf%
-\immediate\write18{mv \SVG@out@filename.pdf%
- \space\SVG@out@path\SVG@out@filename.pdf}%
-\else \ifSVG@out@clean \immediate\write18{rm \SVG@out@filename.pdf} \fi%
-\fi%
-\ifSVG@out@clean%
-\immediate\write18{rm \SVG@out@path\SVG@out@filename.tex%
- \space\SVG@out@filename.aux \SVG@out@filename.log \SVG@out@filename.out}%
-\fi\fi%
-% \end{macrocode}
-% Finally, include the \svg in the current document and end the package.
-% \begin{macrocode}
-\ifSVG@in@exclude \else {\def\svgwidth{\the\SVG@out@width}%
-\SVG@out@pretex\import{\SVG@in@path}{#2.pdf_tex}\SVG@out@postex} \fi%
+% \begin{macrocode}
+ \ifSVG@out@extract%
+ \ifSVG@out@pdf%
+ \immediate\write18{%
+ mv \SVG@out@filename.pdf\space\SVG@out@path\SVG@out@filename.pdf%
+ }%
+ \else%
+ \ifSVG@out@clean \immediate\write18{rm \SVG@out@filename.pdf} \fi%
+ \fi%
+ \ifSVG@out@clean%
+ \immediate\write18{%
+ rm
+ \SVG@out@path\SVG@out@filename.tex\space%
+ \SVG@out@filename.aux\space%
+ \SVG@out@filename.log\space%
+ \SVG@out@filename.out%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Finally, include the SVG~file in the current document and end the package.
+% \begin{macrocode}
+ \ifSVG@in@exclude\else%
+ {%
+ \def\svgwidth{\the\SVG@out@width}%
+ \SVG@out@pretex%
+ \import{\SVG@in@path}{#2.pdf_tex}%
+ \SVG@out@postex%
+ }%
+ \fi%
}%
% \end{macrocode}
-% \end{macro}
+%
% \iffalse
-%</svg>
+%</package&old>
% \fi
-% \Finale \ No newline at end of file
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/tex/latex/svg/svg-extract.sty b/Master/texmf-dist/tex/latex/svg/svg-extract.sty
new file mode 100644
index 00000000000..b3d1a728880
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/svg/svg-extract.sty
@@ -0,0 +1,1147 @@
+%%
+%% This is file `svg-extract.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% svg.dtx (with options: `package,option,extract')
+%% svg.dtx (with options: `package,body,extract')
+%%
+%% svg-extract -- Extract independent graphic files from SVG pictures
+%%
+%% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+%% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+%%
+%% This file was generated from file svg.dtx.
+%% ----------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, version 1.3c of the license.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX 2005/12/01 or later and of this work.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% The current maintainer and author of this work is Falk Hanisch.
+%%
+%% This work consists of the main source file README.md, LICENSE.md, svg.dtx and
+%% the derived documentation svg.pdf as well as the example files svg-example.svg,
+%% svg-preamble.tex and root.C (with derived file root.svg).
+%%
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{svg-extract}[%
+ 2017/03/27 v2.00\space%
+ (extract independent graphics from SVG pictures)%
+]
+\RequirePackage{svg}[2017/03/27]
+\DefineFamily{SVG}
+\DefineFamilyMember{SVG}
+\newif\if@svgx@run
+\DefineFamilyKey{SVG}{extract}[true]{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{extract}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {overwrite}{1},{force}{1},{forced}{1},%
+ {pdf}{2},{eps}{3},{ps}{4}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \@svgx@runfalse%
+ \or% true
+ \@svgx@runtrue%
+ \or% pdf
+ \FamilyOptions{SVG}{extractformat=pdf}%
+ \or% eps
+ \FamilyOptions{SVG}{extractformat=eps}%
+ \or% ps
+ \FamilyOptions{SVG}{extractformat=ps}%
+ \fi%
+ \fi%
+}
+\DeclareOption{on}{\FamilyOptions{SVG}{extract=true}}
+\DeclareOption{off}{\FamilyOptions{SVG}{extract=false}}
+\newcommand*\svgx@format{pdf}
+\ifxetex\else\ifpdf\else
+ \renewcommand*\svgx@format{eps}
+\fi\fi
+\DefineFamilyKey{SVG}{extractformat}{%
+ \lowercase{\edef\svgx@format{#1}}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdf}[true]{%
+ \FamilySetBool{SVG}{pdf}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{pdf}{\svgx@format}{}{%
+ \edef\svgx@format{\svgx@format,pdf}%
+ }%
+ \svg@deprecated@key{pdf}{extractformat={\svgx@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+\DefineFamilyKey{SVG}{eps}[true]{%
+ \FamilySetBool{SVG}{eps}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{eps}{\svgx@format}{}{%
+ \edef\svgx@format{\svgx@format,eps}%
+ }%
+ \svg@deprecated@key{eps}{extractformat={\svgx@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+\newcommand*\svgx@preamble{\jobname.\svgx@latex@ext}%
+\DefineFamilyKey{SVG}{extractpreamble}{%
+ \renewcommand*\svgx@preamble{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{preamble}{%
+ \svg@deprecated@key[svg-extract]{preamble=#1}{extractpreamble=#1}%
+}
+\newcommand*\svgx@endpreamble{}
+\expandafter\def\expandafter\svgx@endpreamble\expandafter{%
+ \csname begin\endcsname{document}%
+}
+\DefineFamilyKey{SVG}{extractpreambleend}{%
+ \renewcommand*\svgx@endpreamble{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{end}{%
+ \svg@deprecated@key[svg-extract]{end=#1}{extractpreambleend=#1}%
+}
+\newcounter{svgx@runs}
+\DefineFamilyKey{SVG}{extractruns}{%
+ \FamilySetCounter{SVG}{extractruns}{svgx@runs}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifnum\value{svgx@runs}<\@ne\relax%
+ \PackageWarning{svg-extract}{%
+ The count for runs has to be at least one%
+ }%
+ \FamilySetCounter{SVG}{extractruns}{svgx@runs}{\@ne}%
+ \fi%
+ \fi%
+}
+\ifxetex
+ \newcommand*\svgx@latex@exe{xelatex}
+\else\ifluatex
+ \ifpdf
+ \newcommand*\svgx@latex@exe{lualatex}
+ \else
+ \newcommand*\svgx@latex@exe{lualatex --output-format=dvi}
+ \fi
+\else\ifpdf
+ \newcommand*\svgx@latex@exe{pdflatex}
+\else
+ \newcommand*\svgx@latex@exe{latex}
+\fi\fi\fi
+\DefineFamilyKey{SVG}{latexexe}{%
+ \renewcommand*\svgx@latex@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdflatex}{%
+ \svg@deprecated@key[svg-extract]{pdflatex=#1}{latexexe=#1}%
+}
+\newcommand*\svgx@latex@ext{tex}
+\DefineFamilyKey{SVG}{latexext}{%
+ \renewcommand*\svgx@latex@ext{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@latex@opt{}
+\DefineFamilyKey{SVG}{latexopt}{%
+ \renewcommand*\svgx@latex@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@dvips@exe{dvips}
+\newcommand*\svgx@dvips@opt{}
+\DefineFamilyKey{SVG}{dvipsopt}{%
+ \renewcommand*\svgx@dvips@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pstoeps@exe{ps2eps}
+\newcommand*\svgx@pstoeps@opt{-B -C}
+\DefineFamilyKey{SVG}{pstoepsopt}{%
+ \renewcommand*\svgx@pstoeps@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pstopdf@exe{ps2pdf}
+\newcommand*\svgx@pstopdf@opt{}
+\DefineFamilyKey{SVG}{pstopdfopt}{%
+ \renewcommand*\svgx@pstopdf@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pdftoeps@exe{pdftops -eps}
+\newcommand*\svgx@pdftoeps@opt{}
+\DefineFamilyKey{SVG}{pdftoepsopt}{%
+ \renewcommand*\svgx@pdftoeps@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@pdftops@exe{pdftops}
+\newcommand*\svgx@pdftops@opt{}
+\DefineFamilyKey{SVG}{pdftopsopt}{%
+ \renewcommand*\svgx@pdftops@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{pdftops}{%
+ \PackageWarning{#1}{%
+ The option key `pdftops' is deprecated.\MessageBreak%
+ You should use either `pdftoepsopt' or\MessageBreak%
+ `pdftopsopt' instead. See the manual for\MessageBreak%
+ more. Nothing was done%
+ }%
+ \FamilyKeyStateProcessed
+}
+\newif\if@svgx@cnv@run
+\newcommand*\svgx@cnv@cmd{}
+\DefineFamilyKey{SVG}{convert}[true]{%
+ \FamilySetNumerical{SVG}{convert}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {overwrite}{1},{force}{1},{forced}{1},%
+ {magick}{2},{imagemagick}{2},{convert}{2},%
+ {gs}{3},{ghostscript}{3},%
+ {gs64}{4},{ghostscript64}{4},%
+ {gs32}{5},{ghostscript32}{5}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \@svgx@cnv@runfalse%
+ \or% true
+ \@svgx@cnv@runtrue%
+ \or% magick
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@magick@cmd}%
+ \or% gs
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \or% gs64
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \svgx@onlywindows{%
+ \renewcommand*\svgx@gs@exe{gswin64c}%
+ }%
+ \or% gs32
+ \@svgx@cnv@runtrue%
+ \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
+ \svgx@onlywindows{%
+ \renewcommand*\svgx@gs@exe{gswin32c}%
+ }%
+ \fi%
+ \else%
+ \def\svg@tempa##1-##2\@nil{%
+ \IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
+ \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}%
+ \svg@tempa#1\@nil%
+ }%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1-\@nil%
+ \PackageWarning{svg-extract}{%
+ Setting the executable%
+ \ifx\svg@tempb\@empty\else%
+ \space and associated options%
+ \fi%
+ \MessageBreak%
+ for ImageMagick should be done with options\MessageBreak%
+ `magickexe=\svg@tempa'%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak and `magicksetting' and/or `magickoperator'%
+ \fi.\MessageBreak%
+ Nevertheless, this was done by now%
+ \ifx\svg@tempb\@empty\else%
+ , whereby \MessageBreak `magicksetting=\svg@tempb' was used%
+ \fi%
+ }%
+ \FamilyOptions{SVG}{convert=magick}%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{magickexe=\svg@tempa}%
+ \ifx\svg@tempb\@empty\else%
+ \noexpand\FamilyOptions{SVG}{magicksetting=\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ \fi%
+}
+\newcommand*\svgx@cnv@format{png}
+\DefineFamilyKey{SVG}{convertformat}{%
+ \lowercase{\edef\svgx@cnv@format{#1}}%
+ \ifx\svgx@cnv@format\@empty\else%
+ \@svgx@cnv@runtrue%
+ \fi%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{png}[true]{%
+ \FamilySetBool{SVG}{png}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \svgx@ifinlist{png}{\svgx@cnv@format}{}{%
+ \edef\svgx@cnv@format{\svgx@cnv@format,png}%
+ }%
+ \svg@deprecated@key{png}{convertformat={\svgx@cnv@format}}%
+ \else%
+ \FamilyKeyStateUnknownValue
+ \fi%
+ \fi%
+}
+\newcommand*\svgx@cnv@dpi{}
+\let\svgx@cnv@dpi\relax
+\DefineFamilyKey{SVG}{convertdpi}{%
+ \FamilyKeyStateUnknownValue%
+ \svgx@ifkeyandval{#1}{%
+ \svgx@cnv@get@dpi{##2}%
+ \ifx\svg@tempa\relax\else%
+ \expandafter\edef\csname svgx@cnv@dpi@##1\endcsname{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{%
+ \svgx@cnv@get@dpi{##1}%
+ \ifx\svg@tempa\relax\else%
+ \edef\svgx@cnv@dpi{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }%
+}
+\DefineFamilyKey{SVG}{convertdensity}{\FamilyOptions{SVG}{convertdpi=#1}}
+\newcommand*\svgx@magick@exe{}
+\DefineFamilyKey{SVG}{magickexe}{%
+ \renewcommand*\svgx@magick@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@magick@set{}
+\DefineFamilyKey{SVG}{magicksetting}{%
+ \svgx@setformatkey{#1}{svgx@magick@set}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@magick@opr{}
+\DefineFamilyKey{SVG}{magickoperator}{%
+ \svgx@setformatkey{#1}{svgx@magick@opr}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@gs@exe{}
+\DefineFamilyKey{SVG}{gsexe}{%
+ \renewcommand*\svgx@gs@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@gs@opt{}
+\DefineFamilyKey{SVG}{gsopt}{%
+ \svgx@setformatkey{#1}{svgx@gs@opt}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@gs@device{}
+\DefineFamilyKey{SVG}{gsdevice}{%
+ \svgx@setformatkey{#1}{svgx@gs@device}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@out@path{}
+\DefineFamilyKey{SVG}{extractpath}{%
+ \FamilySetNumerical{SVG}{extractpath}{svg@tempa}{%
+ {svgpath}{0},{svgdir}{0},%
+ {svgsubpath}{1},{svgsubdir}{1},%
+ {basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
+ {basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% svgpath
+ \renewcommand*\svgx@out@path{\svg@file@path}%
+ \or% svgsubpath
+ \renewcommand*\svgx@out@path{\svg@file@path svg-extract/}%
+ \or% basepath
+ \renewcommand*\svgx@out@path{./}%
+ \or% basesubpath
+ \renewcommand*\svgx@out@path{./svg-extract/}%
+ \fi%
+ \else%
+ \renewcommand*\svgx@out@path{#1}%
+ \svg@normalize@path{\svgx@out@path}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{path}{%
+ \svg@deprecated@key[svg-extract]{path=#1}{extractpath=#1}%
+}
+\newcounter{svgx@out@count}
+\newcommand*\svgx@out@name{}
+\newif\if@svgx@out@sec
+\DefineFamilyKey{SVG}{extractname}{%
+ \FamilySetNumerical{SVG}{extractname}{svg@tempa}{%
+ {filename}{0},{name}{0},%
+ {filenamenumbered}{1},{namenumbered}{1},%
+ {numberedfilename}{1},{numberedname}{1},%
+ {numbered}{2},{section}{2},{numberedsection}{2},{sectionnumbered}{2}%
+ }{#1}%
+ \@svgx@out@secfalse%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% filename
+ \renewcommand*\svgx@out@name{\svg@out@name-extract}%
+ \or% filenamenumbered
+ \renewcommand*\svgx@out@name{\the\value{svgx@out@count}-\svg@out@name}%
+ \or% numbered
+ \renewcommand*\svgx@out@name{\the\value{svgx@out@count}-\svgx@out@sec}%
+ \@svgx@out@sectrue%
+ \fi%
+ \else%
+ \def\svg@tempa##1.##2\@nil{%
+ \IfArgIsEmpty{##1}{}{\renewcommand*\svgx@out@name{##1}}%
+ }%
+ \svg@tempa#1.\@nil%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{name}{%
+ \svg@deprecated@key[svg-extract]{name=#1}{extractname=#1}%
+}
+\newcommand*\svgx@param@width{\svg@param@width}
+\DefineFamilyKey{SVG}{extractwidth}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@width{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@width{\svg@param@width}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{extractwidth}{\svgx@param@width}{#1}%
+ \ifdim\svgx@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+ }%
+}
+\newcommand*\svgx@param@height{\svg@param@height}
+\DefineFamilyKey{SVG}{extractheight}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@height{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@height{\svg@param@height}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{extractheight}{\svgx@param@height}{#1}%
+ \ifdim\svgx@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+ }%
+}
+\newcommand*\svgx@param@scale{\svg@param@scale}
+\DefineFamilyKey{SVG}{extractscale}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@scale{1}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@scale{\svg@param@scale}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \ifdim\dimexpr#1\p@\relax>\z@\relax%
+ \renewcommand*\svgx@param@scale{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ }%
+ }%
+}
+\newcommand*\svgx@param@pretex{\svg@param@pretex}
+\DefineFamilyKey{SVG}{extractpretex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svgx@param@pretex\relax%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \def\svgx@param@pretex{\svg@param@pretex}%
+ }{%
+ \def\svgx@param@pretex{#1}%
+ }%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svgx@param@apptex{\svg@param@apptex}
+\DefineFamilyKey{SVG}{extractapptex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svgx@param@apptex\relax%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \def\svgx@param@apptex{\svg@param@apptex}%
+ }{%
+ \def\svgx@param@apptex{#1}%
+ }%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{extractpostex}{%
+ \svg@deprecated@key[svg-extract]{extractpostex=#1}{extractapptex=#1}%
+}
+\newcommand*\svgx@clean{}
+\DefineFamilyKey{SVG}{clean}[true]{%
+ \FamilySetBool{SVG}{clean}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \renewcommand*\svgx@clean{log,aux,dvi,out,ps,eps,pdf,\svgx@latex@ext}%
+ \else%
+ \renewcommand*\svgx@clean{}%
+ \fi%
+ \else%
+ \renewcommand*\svgx@clean{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{clear}{\FamilyOptions{SVG}{clean=#1}}
+\DefineFamilyKey{SVG}{exclude}[true]{%
+ \FamilySetBool{SVG}{exclude}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \renewcommand*\svg@input[2][]{%
+ \if@svgx@run\else%
+ \PackageWarning{svg-extract}{%
+ The image `##2' was\MessageBreak%
+ neither extracted nor included%
+ }%
+ \fi%
+ }%
+ \else%
+ \renewcommand*\svg@input{\svg@@input}%
+ \fi%
+ \fi%
+}
+\newcommand*\svgx@ifinlist[2]{%
+ \begingroup%
+ \def\svg@tempa##1,#1,##2\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \aftergroup\@secondoftwo%
+ }{%
+ \aftergroup\@firstoftwo%
+ }%
+ }%
+ \expandafter\svg@tempa\expandafter,#2,#1,\@nil%
+ \endgroup%
+}
+\newcommand*\svgx@onlywindows[1]{}
+\AfterPackage*{ifplatform}{\renewcommand*\svgx@onlywindows[1]{\ifwindows#1\fi}}
+\newcommand*\svgx@ifkeyandval[3]{%
+ \def\svg@tempa##1=##2=##3\@nil{\ifstr{##3}{=}{#2}{#3}}%
+ \svg@tempa#1==\@nil%
+}
+\newcommand*\svgx@cnv@get@dpi[1]{%
+ \begingroup%
+ \def\svg@tempa##1dpi##2x##3dpi##4\@nil{%
+ \edef\svg@tempa{##1}%
+ \@svg@tempswafalse%
+ \ifnumber{##1}{%
+ \IfArgIsEmpty{##3}{\@svg@tempswatrue}{%
+ \ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
+ }%
+ }{}%
+ \if@svg@tempswa\else%
+ \expandafter\svg@tempb\svg@tempa xx\@nil%
+ \fi%
+ }%
+ \def\svg@tempb##1x##2x##3\@nil{%
+ \ifstr{##3}{x}{%
+ \@svg@tempswatrue%
+ \IfArgIsEmpty{##1}{\@svg@tempswafalse}{%
+ \ifnumber{##1}{}{\@svg@tempswafalse}%
+ }%
+ \IfArgIsEmpty{##2}{\@svg@tempswafalse}{%
+ \ifnumber{##2}{}{\@svg@tempswafalse}%
+ }%
+ \if@svg@tempswa%
+ \edef\svg@tempa{##1x##2}%
+ \fi%
+ }{}%
+ }%
+ \IfArgIsEmpty{#1}{%
+ \let\svg@tempa\@empty%
+ }{%
+ \lowercase{\svg@tempa#1dpi#1xdpi\@nil}%
+ \if@svg@tempswa\else%
+ \let\svg@tempa\relax%
+ \fi%
+ }%
+ \edef\svg@tempb{%
+ \noexpand\endgroup%
+ \ifx\svg@tempa\relax%
+ \noexpand\let\noexpand\svg@tempa\noexpand\relax%
+ \else%
+ \noexpand\def\noexpand\svg@tempa{\svg@tempa}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svgx@setformatkey[2]{%
+ \svgx@ifkeyandval{#1}{%
+ \svg@ifvalueisrelax{##2}{%
+ \expandafter\let\csname #2@##1\endcsname\relax%
+ }{%
+ \@namedef{#2@##1}{##2}%
+ }%
+ }{%
+ \svg@ifvalueisrelax{##1}{%
+ \expandafter\let\csname #2\endcsname\relax%
+ }{%
+ \@namedef{#2}{##1}%
+ }%
+ }%
+}
+\newcommand*\svgx@useformatkey[3]{%
+ \scr@ifundefinedorrelax{#1@#2}{%
+ \scr@ifundefinedorrelax{#1}{}{%
+ \expandafter\ifx\csname #1\endcsname\@empty\else%
+ #3\@nameuse{#1}\space%
+ \fi%
+ }%
+ \scr@ifundefinedorrelax{#1@#2+}{}{%
+ \expandafter\ifx\csname #1@#2+\endcsname\@empty\else%
+ #3\@nameuse{#1@#2+}\space%
+ \fi%
+ }%
+ }{%
+ \expandafter\ifx\csname #1@#2\endcsname\@empty\else%
+ #3\@nameuse{#1@#2}\space%
+ \fi%
+ }%
+}
+\newbox\svgx@box
+\newcommand*\svgxsetbox[2][]{%
+ \sbox\svgx@box{\svg@@input[{#1},draft=false]{#2}}%
+ \csname @tud@x@standalone@croptrue\endcsname%
+ \svgxsetpapersize%
+}
+\newcommand*\svgxsetpapersize{%
+ \setlength\paperwidth{\the\wd\svgx@box}%
+ \ifx\stockwidth\@undefined\else%
+ \setlength\stockwidth{\paperwidth}%
+ \fi%
+ \ifx\mediawidth\@undefined\else%
+ \setlength\mediawidth{\paperwidth}%
+ \fi%
+ \setlength\textwidth{\paperwidth}%
+ \setlength\paperheight{\the\dimexpr\ht\svgx@box+\dp\svgx@box\relax}%
+ \ifx\stockheight\@undefined\else%
+ \setlength\stockheight{\paperheight}%
+ \fi%
+ \ifx\mediaheight\@undefined\else%
+ \setlength\mediaheight{\paperheight}%
+ \fi%
+ \setlength\textheight{\paperheight}%
+ \hoffset=-1in%
+ \oddsidemargin=\z@%
+ \evensidemargin=\z@%
+ \voffset=-1in%
+ \topmargin=\z@%
+ \headheight=\z@%
+ \headsep=\z@%
+ \topskip=\z@%
+ \footskip=\z@%
+ \marginparsep=\z@%
+ \marginparwidth=\z@%
+ \marginparpush=\z@%
+}
+\@onlypreamble\svgxsetpapersize
+\newif\if@svgx@beamer
+\@ifclassloaded{beamer}{\@svgx@beamertrue}{}%
+\newcommand*\svgxoutputbox{%
+ \begingroup%
+ \setlength\parindent{\z@}%
+ \setlength\parskip{\z@}%
+ \setlength\parfillskip{\z@}%
+ \if@svgx@beamer%
+ \setbeamertemplate{navigation symbols}{}%
+ \begin{frame}[plain]%
+ \usebox\svgx@box%
+ \end{frame}%
+ \else%
+ \usebox\svgx@box%
+ \fi%
+ \endgraf%
+ \endgroup%
+}
+\FamilyExecuteOptions{SVG}{%
+ extract=true,extractpath=basesubdir,extractruns=2,extractname=namenumbered,%
+ convert=magick,convert=false,%
+ gsdevice={png=png16m},gsdevice={jpeg=jpeg},gsdevice={jpg=jpeg},%
+ gsdevice={tif=tiff48nc},gsdevice={tiff=tiff48nc},%
+ gsdevice={eps=eps2write},gsdevice={ps=ps2write}%
+}
+\FamilyProcessOptions{SVG}
+\let\svghidepreamblestart\relax
+\let\svghidepreambleend\relax
+\ifnum\pdf@shellescape=\@ne\relax\else%
+ \renewcommand*\svg@extract[1]{%
+ \if@svgx@run%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg-extract}{%
+ You didn't enable `shell escape' (or `write18')\MessageBreak%
+ so it wasn't possible to run the extraction for\MessageBreak%
+ file `\svg@tempa'%
+ }%
+ \endgroup%
+ \fi%
+ }%
+ \expandafter\endinput%
+\fi
+\newread\svgx@stream@in
+\newcommand*\svgx@read@line{}
+\newwrite\svgx@stream@out
+\newif\if@svgx@preamble@write
+\renewcommand*\svg@extract[1]{%
+ \if@svgx@run%
+ \if@svgx@out@sec%
+ \svgx@get@out@sec%
+ \fi%
+ \stepcounter{svgx@out@count}%
+ \begingroup%
+ \def\svg@tempa##1.##2\@nil{%
+ \IfArgIsEmpty{##2}{\edef\svgx@preamble{##1.\svgx@latex@ext}}{}%
+ }%
+ \expandafter\svg@tempa\svgx@preamble.\@nil%
+ \IfFileExists{\svg@file@path\svgx@preamble}{%
+ \@svg@file@foundtrue%
+ }{%
+ \svg@get@path[]{\svgx@preamble}{\svg@out@path}%
+ \def\svg@tempa####1.####2\@nil{%
+ \edef\svgx@preamble{\svg@file@name.####2}%
+ }%
+ \expandafter\svg@tempa\svgx@preamble\@nil%
+ }%
+ \edef\svg@tempa{%
+ \endgroup%
+ \if@svg@file@found%
+ \ifx\svg@file@path\@empty%
+ \def\noexpand\svgx@preamble{./\svgx@preamble}%
+ \else%
+ \def\noexpand\svgx@preamble{\svg@file@path\svgx@preamble}%
+ \fi%
+ \fi%
+ }%
+ \svg@tempa%
+ \begingroup%
+ \endlinechar=\m@ne%
+ \IfFileExists{\svgx@preamble}{%
+ \PackageInfo{svg-extract}{%
+ The preamble file `\svgx@preamble'\MessageBreak%
+ is used for the generation of the auxiliary file\MessageBreak%
+ `\svgx@out@name.\svgx@latex@ext'%
+ }%
+ \catcode`\#=12\relax%
+ \immediate\openout\svgx@stream@out=\svgx@out@name.\svgx@latex@ext%
+ \immediate\openin\svgx@stream@in=\svgx@preamble%
+ \@svg@tempswatrue%
+ \@svgx@preamble@writetrue%
+ \def\svgx@read@line{}%
+ \@whilesw\if@svg@tempswa\fi{%
+ \immediate\read\svgx@stream@in to\svgx@read@line%
+ \ifx\svgx@read@line\@empty%
+ \ifeof\svgx@stream@in\@svg@tempswafalse\fi%
+ \else%
+ \svgx@read@preamble@till{\svghidepreamblestart}{}%
+ \svgx@read@preamble@from{\svghidepreambleend}{}%
+ \svgx@read@preamble@till{\svgx@endpreamble}{\@svg@tempswafalse}%
+ \if@svgx@preamble@write%
+ \if@svgx@classfound\else%
+ \expandafter\svgx@documentclass%
+ \svgx@read@line\documentclass\documentclass\@nil%
+ \fi%
+ \ifx\svgx@read@line\@empty\else%
+ \immediate\write\svgx@stream@out{%
+ \unexpanded\expandafter{\svgx@read@line}%
+ }%
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \immediate\closein\svgx@stream@in%
+ \immediate\closeout\svgx@stream@out%
+ \catcode`\#=6\relax%
+ \immediate\openin\svgx@stream@in=\svgx@out@name.\svgx@latex@ext%
+ \def\svg@tempa{}%
+ \loop\unless\ifeof\svgx@stream@in%
+ \readline\svgx@stream@in to\svgx@read@line%
+ \ifx\svgx@read@line\@empty\else%
+ \edef\svg@tempa{%
+ \unexpanded\expandafter{\svg@tempa}%
+ \unexpanded\expandafter{\svgx@read@line}^^J%
+ }%
+ \fi%
+ \repeat%
+ \immediate\closein\svgx@stream@in%
+ }{%
+ \svg@quotes@remove{\svgx@preamble}%
+ \ifx\svgx@preamble\@empty\else%
+ \PackageWarning{svg-extract}{%
+ The preamble file `\svgx@preamble'\MessageBreak%
+ does not exist%
+ }%
+ \fi%
+ \def\svg@tempa{}%
+ }%
+ \immediate\openout\svgx@stream@out=\svgx@out@name.\svgx@latex@ext%
+ \immediate\write\svgx@stream@out{%
+ \@percentchar\@percentchar\space This file was generated by package
+ `svg-extract'^^J%
+ \@percentchar\@percentchar\space from source `\jobname'^^J%
+ \@percentchar\@percentchar\space It's intended to be compiled with
+ `\svgx@latex@exe\ifx\svgx@latex@opt\@empty\else\space\svgx@latex@opt\fi'
+ }%
+ \immediate\write\svgx@stream@out{%
+ \string\AtBeginDocument{\@percentchar^^J%
+ \space\space\string\svgxsetpapersize\@percentchar^^J%
+ \ifxetex\else\ifpdf\else%
+ \space\space\string\AtBeginDvi{\string\special{%
+ papersize=\string\the\string\paperwidth,%
+ \string\the\string\paperheight%
+ }}\@percentchar^^J%
+ \fi\fi%
+ }^^J%
+ \string\PassOptionsToPackage{hidelinks}{hyperref}%
+ }%
+ \if@svgx@classfound\else%
+ \immediate\write\svgx@stream@out{\string\documentclass{article}}%
+ \fi%
+ \ifx\svg@tempa\@empty\else%
+ \immediate\write\svgx@stream@out{\unexpanded\expandafter{\svg@tempa}}%
+ \fi%
+ \immediate\write\svgx@stream@out{\string\usepackage{svg-extract}}%
+ \def\svg@tempa##1{%
+ \immediate\write\svgx@stream@out{\string\svgsetup{##1}}%
+ }%
+ \if@svg@ink@latex\else%
+ \svg@tempa{inkscapelatex=false}%
+ \fi%
+ \ifdim\svgx@param@width>\z@\relax%
+ \svg@tempa{width=\svgx@param@width}%
+ \fi%
+ \ifdim\svgx@param@height>\z@\relax%
+ \svg@tempa{height=\svgx@param@height}%
+ \fi%
+ \ifdim\dimexpr\svgx@param@scale\p@\relax=\p@\relax\else%
+ \svg@tempa{scale=\svgx@param@scale}%
+ \fi%
+ \def\svg@tempb{\svg@param@pretex}%
+ \ifx\svgx@param@pretex\svg@tempb\relax%
+ \let\svgx@param@pretex\svg@param@pretex%
+ \fi%
+ \ifx\svgx@param@pretex\relax\else%
+ \svg@tempa{pretex=\unexpanded\expandafter{\svgx@param@pretex}}%
+ \fi%
+ \def\svg@tempb{\svg@param@apptex}%
+ \ifx\svgx@param@apptex\svg@tempb\relax%
+ \let\svgx@param@apptex\svg@param@apptex%
+ \fi%
+ \ifx\svgx@param@apptex\relax\else%
+ \svg@tempa{apptex=\unexpanded\expandafter{\svgx@param@apptex}}%
+ \fi%
+ \let\svg@tempa\@empty%
+ \if@svg@ink@latex%
+ \ifstr{\svg@ink@format}{pdf}{%
+ \ifnum\value{svg@param@lastpage}>\z@\relax%
+ \edef\svg@tempa{lastpage=\the\value{svg@param@lastpage}}%
+ \else%
+ \ifnum\value{svg@param@lastpage}=\z@\relax%
+ \def\svg@tempa{lastpage=true}%
+ \else%
+ \def\svg@tempa{lastpage=false}%
+ \fi%
+ \fi%
+ }{}%
+ \fi%
+ \ifx\svg@tempa\@empty%
+ \def\svg@tempa{\string\svgxsetbox{#1}}%
+ \else%
+ \edef\svg@tempa{\noexpand\string\noexpand\svgxsetbox[\svg@tempa]{#1}}%
+ \fi%
+ \immediate\write\svgx@stream@out{\svg@tempa}%
+ \if@svg@ink@latex%
+ \IfFileExists{xr.sty}{%
+ \immediate\write\svgx@stream@out{%
+ \string\usepackage{xr}^^J%
+ \string\externaldocument{\jobname}^^J%
+ }%
+ }{}%
+ \fi%
+ \immediate\write\svgx@stream@out{%
+ \string\AtBeginDocument{\@percentchar^^J%
+ \space\space\svg@tempa\@percentchar^^J%
+ }^^J^^J%
+ \string\begin{document}^^J%
+ \string\pagestyle{empty}^^J%
+ \string\svgxoutputbox\@percentchar^^J%
+ \string\end{document}%
+ }%
+ \immediate\closeout\svgx@stream@out%
+ \endgroup%
+ \ifstr{\svgx@format\svgx@cnv@format}{}{%
+ \PackageWarning{svg-extract}{%
+ Both keys `extractformat' and `convertformat' are\MessageBreak%
+ empty, so nothing to do so far%
+ }%
+ }{%
+ \svg@quotes@remove{\svgx@out@path}%
+ \svg@quotes@remove{\svgx@out@name}%
+ \edef\svg@tempb{%
+ \noexpand\svg@shell@mkdir{\svgx@out@path}%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \noexpand\PackageInfo{svg-extract}{%
+ Running LaTeX (\svgx@latex@exe) for graphic extraction%
+ \ifx\svgx@latex@opt\@empty\else%
+ \MessageBreak with added options `\svgx@latex@opt'%
+ \fi%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \svgx@latex@exe\space\svgx@latex@opt\space%
+ "\svgx@out@name.\svgx@latex@ext"%
+ }%
+ }%
+ \loop\ifnum\value{svgx@runs}>\z@\relax%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \advance\c@svgx@runs\m@ne%
+ \repeat%
+ \def\svg@tempa##1##2##3{%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \@nameuse{svgx@##1@exe}\space\@nameuse{svgx@##1@opt}\space%
+ "\svgx@out@name.##2"%
+ }%
+ }%
+ \AfterReadingMainAux{\PackageInfo{svg-extract}{Running ##1}}%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ \@svg@tempswafalse%
+ \ifxetex\else\ifpdf\else%
+ \@svg@tempswatrue%
+ \fi\fi%
+ \if@svg@tempswa%
+ \svg@tempa{dvips}{dvi}{ps}%
+ \svgx@ifinlist{eps}{\svgx@format}{\svg@tempa{pstoeps}{ps}{eps}}{}%
+ \svgx@ifinlist{pdf}{\svgx@format}{\svg@tempa{pstopdf}{ps}{pdf}}{}%
+ \else%
+ \svgx@ifinlist{eps}{\svgx@format}{\svg@tempa{pdftoeps}{pdf}{eps}}{}%
+ \svgx@ifinlist{ps}{\svgx@format}{\svg@tempa{pdftops}{pdf}{ps}}{}%
+ \fi%
+ \if@svgx@cnv@run%
+ \ifx\svgx@cnv@dpi\relax%
+ \ifx\svgx@cnv@dpi@png\@undefined%
+ \def\svgx@cnv@dpi@png{300}%
+ \fi%
+ \fi%
+ \expandafter\svgx@cnv@get@informat\expandafter{\svgx@format}%
+ \@for\svg@tempa:=\svgx@cnv@format\do{%
+ \ifx\svg@tempa\@empty\else%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svgx@format}{%
+ \PackageWarning{svg-extract}{%
+ File type `\svg@tempa' was specified for option\MessageBreak%
+ `extractformat' (\svgx@format) as well as for \MessageBreak
+ option `convertformat' (\svgx@cnv@format) so the\MessageBreak%
+ conversion won't be done%
+ }%
+ }{%
+ \edef\svg@tempb{%
+ \noexpand\PackageInfo{svg-extract}{%
+ Converting `\svgx@out@name.\svgx@cnv@informat'\MessageBreak%
+ to `\svgx@out@name.\svg@tempa'%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \noexpand\ShellEscape{%
+ \svgx@cnv@cmd{\svgx@out@name}{\svgx@cnv@informat}{\svg@tempa}%
+ }%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ \fi%
+ }%
+ \fi%
+ \edef\svg@tempa{\svgx@format\if@svgx@cnv@run,\svgx@cnv@format\fi}%
+ \@for\svg@tempb:=\svg@tempa\do{%
+ \ifx\svg@tempb\@empty\else%
+ \edef\svg@tempb{%
+ \noexpand\svgx@move{\svgx@out@name}{\svg@tempb}{\svgx@out@path}%
+ }%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ \fi%
+ }%
+ \@for\svg@tempa:=\svgx@clean\do{%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svg@tempb}{}{%
+ \edef\svg@tempb{%
+ \noexpand\IfFileExists{"\svgx@out@name".\svg@tempa}{%
+ \noexpand\svg@shell@rm{\svgx@out@name.\svg@tempa}%
+ }{}%
+ }%
+ \expandafter\AtEndDocument\expandafter{%
+ \expandafter\AfterReadingMainAux\expandafter{\svg@tempb}%
+ }%
+ }%
+ }%
+ }%
+ \fi%
+}
+\newcommand*\svgx@out@sec{unknown}
+\newcommand*\svgx@get@out@sec{%
+ \begingroup%
+ \def\svg@tempa{}%
+ \@for\svg@tempb:={%
+ part,chapter,section,subsection,subsubsection,paragraph,subparagraph%
+ }\do{%
+ \ifx\svg@tempb\@empty\else%
+ \scr@ifundefinedorrelax{the\svg@tempb}{}{%
+ \ifnum\value{\svg@tempb}>\z@\relax%
+ \edef\svg@tempa{\svg@tempb}%
+ \fi%
+ }%
+ \fi%
+ }%
+ \edef\svg@tempb{%
+ \endgroup%
+ \ifx\svg@tempa\@empty\else%
+ \def\noexpand\svgx@out@sec{\csname the\svg@tempa\endcsname}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newif\if@svgx@classfound
+\newcommand*\svgx@documentclass{}
+\def\svgx@documentclass#1\documentclass#2\documentclass#3\@nil{%
+ \IfArgIsEmpty{#2}{}{\@svgx@classfoundtrue}%
+}
+\newcommand*\svgx@read@preamble@till[2]{%
+ \svgx@read@preamble@skip#1\@nil{till}{#2}%
+}
+\newcommand*\svgx@read@preamble@from[2]{%
+ \svgx@read@preamble@skip#1\@nil{from}{#2}%
+}
+\newcommand*\svgx@read@preamble@skip{}
+\def\svgx@read@preamble@skip#1\@nil#2#3{%
+ \def\svg@tempa##1{%
+ \def\svg@tempa####1##1####2##1####3\@nil{%
+ \IfArgIsEmpty{####3}{}{%
+ \ifstr{#2}{till}{%
+ \IfArgIsEmpty{####1}{}{%
+ \immediate\write\svgx@stream@out{####1}%
+ }%
+ \@svgx@preamble@writefalse%
+ }{%
+ \ifstr{#2}{from}{%
+ \IfArgIsEmpty{####2}{%
+ \def\svgx@read@line{}%
+ }{%
+ \def\svgx@read@line{####2}%
+ }%
+ \@svgx@preamble@writetrue%
+ }{}%
+ }%
+ #3%
+ }%
+ }%
+ }%
+ \edef\svg@tempb{\expandafter\detokenize\expandafter{#1}}%
+ \expandafter\svg@tempa\expandafter{\svg@tempb}%
+ \edef\svg@tempb{%
+ \expandafter\detokenize\expandafter{\svgx@read@line}\svg@tempb\svg@tempb%
+ }%
+ \expandafter\svg@tempa\svg@tempb\@nil%
+}
+\newcommand*\svgx@cnv@informat{}
+\newcommand*\svgx@cnv@get@informat[1]{%
+ \begingroup%
+ \def\svg@tempa##1,##2\@nil{%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1,\@nil%
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\def\noexpand\svgx@cnv@informat{\svg@tempa}%
+ }%
+ \svg@tempa%
+ \ifx\svgx@cnv@informat\@empty%
+ \renewcommand*\svgx@cnv@informat{pdf}%
+ \ifxetex\else\ifpdf\else%
+ \renewcommand*\svgx@cnv@informat{ps}%
+ \fi\fi%
+ \fi%
+}
+\ifx\svgx@magick@exe\@empty
+ \ifwindows
+ \renewcommand*\svgx@magick@exe{magick}
+ \else
+ \renewcommand*\svgx@magick@exe{convert}
+ \fi
+\fi
+\newcommand*\svgx@magick@cmd[3]{%
+ \svgx@magick@exe\space%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-density }%
+ \svgx@useformatkey{svgx@magick@set}{#3}{}%
+ "#1.#2"\space%
+ \svgx@useformatkey{svgx@magick@opr}{#3}{}%
+ "#1.#3"%
+}
+\ifx\svgx@gs@exe\@empty
+ \ifwindows
+ \renewcommand*\svgx@gs@exe{gswin64c}
+ \else
+ \renewcommand*\svgx@gs@exe{gs}
+ \fi
+\fi
+\newcommand*\svgx@gs@cmd[3]{%
+ \svgx@gs@exe\space-dSAFER -dBATCH -dNOPAUSE\space%
+ \svgx@useformatkey{svgx@gs@device}{#3}{-sDEVICE=}%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-r}%
+ \svgx@useformatkey{svgx@gs@opt}{#3}{}%
+ -sOutputFile="#1.#3"\space"#1.#2"%
+}
+\newcommand*\svgx@move[3]{%
+ \begingroup%
+ \IfFileExists{"#1".#2}{%
+ \svg@shell@move{#1.#2}{#3#1.#2}%
+ }{%
+ \edef\svg@tempa{#2}%
+ \@svg@tempswafalse%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svgx@cnv@format}{%
+ \@svg@tempswatrue%
+ \def\svg@tempb{conversion}%
+ }{%
+ \expandafter\svgx@ifinlist\expandafter{\svg@tempa}{pdf,ps,eps}{%
+ \@svg@tempswatrue%
+ \def\svg@tempb{extraction}%
+ }{}%
+ }%
+ \if@svg@tempswa%
+ \edef\svg@tempb{%
+ The graphic file \svg@tempb\space failed\MessageBreak%
+ for `#1.#2'\MessageBreak%
+ Troubleshooting: Please check the log file how the\MessageBreak%
+ invocation of the extraction took place and try\MessageBreak%
+ to execute it yourself in the terminal%
+ }%
+ \else%
+ \def\svg@tempb{%
+ The extraction to format `#2' failed\MessageBreak%
+ for `#1.#2'\MessageBreak%
+ Only file types `pdf,ps,eps' are supported for\MessageBreak%
+ key `exportformat'%
+ }%
+ \fi%
+ \PackageWarning{svg-extract}{\svg@tempb}%
+ }%
+ \endgroup%
+}
+\endinput
+%%
+%% End of file `svg-extract.sty'.
diff --git a/Master/texmf-dist/tex/latex/svg/svg.sty b/Master/texmf-dist/tex/latex/svg/svg.sty
index a40b54daaf6..f0689b8e64f 100644
--- a/Master/texmf-dist/tex/latex/svg/svg.sty
+++ b/Master/texmf-dist/tex/latex/svg/svg.sty
@@ -4,201 +4,1070 @@
%%
%% The original source files were:
%%
-%% svg.dtx (with options: `svg')
+%% svg.dtx (with options: `package,option,base')
+%% svg.dtx (with options: `package,body,base')
%%
-%% -------------------------------------------------------
-%% Copyright (C) 2012 by Philip Ilten <philten@cern.ch>
-%% -------------------------------------------------------
-%%
-%% This file may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in:
-%%
+%% svg -- Include SVG pictures in LaTeX documents using Inkscape
+%%
+%% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+%% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+%%
+%% This file was generated from file svg.dtx.
+%% ----------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, version 1.3c of the license.
+%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Philip Ilten.
-%%
-%% This work consists of the files README, svg.dtx (with derived files
-%% svg.sty, svg.pdf, Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png),
-%% preamble.tex, example.svg (with derived files example.pdf and
-%% example.pdf_tex), and root.C (with derived files root.svg,
-%% root.pdf, and root.pdf_tex).
-%%
-%% The following files constitute the svg package and should be
-%% distributed as a whole: README, svg.dtx, svg.sty, svg.pdf,
-%% Fig.1a.pdf, Fig.1b.eps, Fig.2.pdf, Fig.2.png, preamble.tex
-%% example.svg, example.pdf, example.pdf_tex, root.C, root.svg,
-%% root.pdf, and root.pdf_tex.
-\ProvidesPackage{svg}[2012/09/05 v1.0 SVG inclusion and extraction]%
-\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}%
-\@ifpackageloaded{subfig}{}{\RequirePackage{subfig}}%
-\@ifpackageloaded{import}{}{\RequirePackage{import}}%
-\@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}%
-\@ifpackageloaded{transparent}{}{\RequirePackage{transparent}}%
-\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}%
-\def\SVG@in@preamble{\jobname.tex}%
-\define@key[SVG]{svg.sty}{preamble}{\def\SVG@in@preamble{#1}}%
-\def\SVG@in@path{./}%
-\define@key[SVG]{svg.sty}{svgpath}{\def\SVG@in@path{#1}}%
-\def\SVG@in@end{\begin{document}}%
-\define@key[SVG]{svg.sty}{end}{\def\SVG@in@end{#1}}%
-\define@boolkey[SVG]{svg.sty}[SVG@in@]{exclude}[true]{}%
-\newlength\SVG@out@width%
-\newif\ifSVG@out@usewidth%
-\define@key[SVG]{svg.sty}{width}%
-{\setlength{\SVG@out@width}{#1}\SVG@out@usewidthtrue}%
-\newlength\SVG@out@height%
-\newif\ifSVG@out@useheight%
-\define@key[SVG]{svg.sty}{height}%
-{\setlength{\SVG@out@height}{#1}\SVG@out@useheighttrue}%
-\define@boolkey[SVG]{svg.sty}[SVG@out@]{pdf}[true]{}%
-\define@boolkey[SVG]{svg.sty}[SVG@out@]{eps}[true]{}%
-\define@boolkey[SVG]{svg.sty}[SVG@out@]{png}[true]{}%
-\newif\ifSVG@out@extract
-\def\SVG@out@path{./}%
-\define@key[SVG]{svg.sty}{path}{\def\SVG@out@path{#1}}%
-\def\SVG@out@name{Fig.\arabic{svgfigure}\alph{subfigure}}%
-\define@key[SVG]{svg.sty}{name}{\def\SVG@out@name{#1}}%
-\define@boolkey[SVG]{svg.sty}[SVG@out@]{clean}[true]{}%
-\def\SVG@out@pretex{}%
-\define@key[SVG]{svg.sty}{pretex}{\def\SVG@out@pretex{#1}}%
-\def\SVG@out@postex{}%
-\define@key[SVG]{svg.sty}{postex}{\def\SVG@out@postex{#1}}%
-\def\SVG@cmd@inkscape{inkscape -z -C}%
-\define@key[SVG]{svg.sty}{inkscape}{\def\SVG@cmd@inkscape{#1}}%
-\def\SVG@cmd@pdflatex{pdflatex}%
-\define@key[SVG]{svg.sty}{pdflatex}{\def\SVG@cmd@pdflatex{#1}}%
-\def\SVG@cmd@pdftops{pdftops -eps}%
-\define@key[SVG]{svg.sty}{pdftops}{\def\SVG@cmd@pdftops{#1}}%
-\def\SVG@cmd@convert{convert -density 300}%
-\define@key[SVG]{svg.sty}{convert}{\def\SVG@cmd@convert{#1}}%
-\ProcessOptionsX[SVG]%
-\newcounter{svgfigure}[figure]%
-\def\setsvg#1{\setkeys[SVG]{svg.sty}{#1}}%
-\def\includesvg{\@ifnextchar[\@includesvg{\@includesvg[]}}%
-\def\@includesvg[#1]#2{%
- \setkeys[SVG]{svg.sty}{#1}%
- \SVG@out@extractfalse%
- \ifSVG@out@pdf \SVG@out@extracttrue \fi%
- \ifSVG@out@eps \SVG@out@extracttrue \fi%
- \ifSVG@out@png \SVG@out@extracttrue \fi%
-\ifnum\pdfstrcmp%
-{\pdffilemoddate{\SVG@in@path#2.svg}}%
-{\pdffilemoddate{\SVG@in@path#2.pdf}}>0%
-\immediate\write18{\SVG@cmd@inkscape \space -f\SVG@in@path#2.svg%
- \space-A\SVG@in@path#2.pdf --export-latex}%
-\fi%
-\ifSVG@out@usewidth%
-\settoheight\SVG@out@height%
-{\includegraphics[width=\SVG@out@width]{\SVG@in@path#2}}%
-\else\ifSVG@out@useheight%
-\settowidth\SVG@out@width%
-{\includegraphics[height=\SVG@out@height]{\SVG@in@path#2}}%
-\else%
-\settoheight\SVG@out@height{\includegraphics{\SVG@in@path#2}}%
-\settowidth\SVG@out@width{\includegraphics{\SVG@in@path#2}}%
-\fi%
-\fi%
-\ifSVG@out@extract%
-\newwrite\SVG@out@file%
-\setcounter{svgfigure}{\value{figure}}%
-\stepcounter{svgfigure}%
-\def\SVG@out@filename{\SVG@out@name}%
-\immediate\openout\SVG@out@file=\SVG@out@path\SVG@out@filename.tex%
-\fi%
-\ifSVG@out@extract%
-\def\SVG@in@line{}%
-\newread\SVG@in@file%
-\immediate\openin\SVG@in@file=\SVG@in@preamble%
-\fi%
-\newif\ifSVG@in@read%
-\ifSVG@out@extract \SVG@in@readtrue \fi%
-\@whilesw\ifSVG@in@read\fi{%
- \catcode`\#=12\relax\endlinechar=-1%
- \immediate\read\SVG@in@file to \SVG@in@line%
- \ifx\SVG@in@end\SVG@in@line%
- \SVG@in@readfalse%
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX 2005/12/01 or later and of this work.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% The current maintainer and author of this work is Falk Hanisch.
+%%
+%% This work consists of the main source file README.md, LICENSE.md, svg.dtx and
+%% the derived documentation svg.pdf as well as the example files svg-example.svg,
+%% svg-preamble.tex and root.C (with derived file root.svg).
+%%
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{svg}[%
+ 2017/03/27 v2.00\space%
+ (include SVG pictures)%
+]
+\RequirePackage{scrbase}[2016/06/14]
+\RequirePackage{ifxetex}[2010/09/12]
+\RequirePackage{ifluatex}[2016/05/16]
+\RequirePackage{ifpdf}[2016/05/14]
+\RequirePackage{pdftexcmds}[2016/05/21]
+\RequirePackage{shellesc}[2016/06/07]
+\RequirePackage{graphicx}[1999/02/16]
+\DefineFamily{SVG}
+\DefineFamilyMember{SVG}
+\newcommand*\svg@deprecated@key[3][svg]{%
+ \PackageWarning{#1}{%
+ The option key `#2' is deprecated.\MessageBreak%
+ It's recommended to use `#3'\MessageBreak%
+ instead%
+ }%
+ \FamilyOptions{SVG}{#3}%
+}
+\newcommand*\svg@tempa{}
+\newcommand*\svg@tempb{}
+\newif\if@svg@tempswa
+\newcount\svg@tempcnt
+\newif\if@svg@use@xcolor
+\FamilyBoolKey{SVG}{usexcolor}{@svg@use@xcolor}
+\DeclareOption{noxcolor}{\FamilyOptions{SVG}{usexcolor=false}}
+\newif\if@svg@use@transparent
+\FamilyBoolKey{SVG}{usetransparent}{@svg@use@transparent}
+\DeclareOption{notransparent}{\FamilyOptions{SVG}{usetransparent=false}}
+\AtEndOfPackage{%
+ \RelaxFamilyKey{SVG}{usexcolor}%
+ \RelaxFamilyKey{SVG}{usetransparent}%
+ \if@svg@use@xcolor%
+ \RequirePackage{xcolor}[2016/05/11]%
\else%
- \immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@in@line}}%
- \fi%
- \ifeof\SVG@in@file\SVG@in@readfalse\fi%
- \endlinechar=13\catcode`\#=6\relax}%
-\ifSVG@out@extract \immediate\closein\SVG@in@file \fi%
-\ifSVG@out@extract%
-\def\SVG@out@defpack{\makeatletter%
- \@ifpackageloaded{import}{}{\RequirePackage{import}}%
- \@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}%
- \@ifpackageloaded{transparent}{}{\RequirePackage{transparent}}%
- \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}\makeatother}%
-\def\SVG@out@defwidth{\def\svgwidth{0.99\textwidth}}%
-\def\SVG@out@definput{\import{\SVG@in@path}{#2.pdf_tex}}%
-\immediate\write\SVG@out@file{\unexpanded\expandafter{\SVG@out@defpack}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\pdfpagewidth}{\the\SVG@out@width}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\pdfpageheight}{\the\SVG@out@height}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\paperheight}{\pdfpageheight}}%
-\immediate\write\SVG@out@file%
-{\noexpand\setlength{\paperwidth}{\pdfpagewidth}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textheight}{\paperheight}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textwidth}{\paperwidth}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\textheight}{\paperheight}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\oddsidemargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\evensidemargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\topmargin}{-1in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\headheight}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\headsep}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\topskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\footskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parindent}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parsep}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\setlength{\parskip}{0in}}%
-\immediate\write\SVG@out@file{\noexpand\begin{document}}%
- \immediate\write\SVG@out@file{%
- \noexpand\pagestyle{empty}%
- \noexpand\begin{center}%
- \unexpanded\expandafter{\SVG@out@defwidth}%
- \unexpanded\expandafter{\SVG@out@pretex}%
- \expandafter\noexpand\SVG@out@definput%
- \unexpanded\expandafter{\SVG@out@postex}%
- \noexpand\end{center}}%
- \immediate\write\SVG@out@file{\noexpand\end{document}}%
-\immediate\closeout\SVG@out@file%
-\fi%
-\ifSVG@out@extract%
-\immediate\write18{\SVG@cmd@pdflatex\space\SVG@out@path\SVG@out@filename.tex}%
-\fi%
-\ifSVG@out@eps%
-\immediate\write18{\SVG@cmd@pdftops\space\SVG@out@filename.pdf}%
-\immediate\write18{mv \SVG@out@filename.eps%
- \space\SVG@out@path\SVG@out@filename.eps}%
-\fi%
-\ifSVG@out@png%
-\immediate\write18{\SVG@cmd@convert\space\SVG@out@filename.pdf%
- \space\SVG@out@filename.png}%
-\immediate\write18{mv \SVG@out@filename.png%
- \space\SVG@out@path\SVG@out@filename.png}%
-\fi%
-\ifSVG@out@extract%
-\ifSVG@out@pdf%
-\immediate\write18{mv \SVG@out@filename.pdf%
- \space\SVG@out@path\SVG@out@filename.pdf}%
-\else \ifSVG@out@clean \immediate\write18{rm \SVG@out@filename.pdf} \fi%
-\fi%
-\ifSVG@out@clean%
-\immediate\write18{rm \SVG@out@path\SVG@out@filename.tex%
- \space\SVG@out@filename.aux \SVG@out@filename.log \SVG@out@filename.out}%
-\fi\fi%
-\ifSVG@in@exclude \else {\def\svgwidth{\the\SVG@out@width}%
-\SVG@out@pretex\import{\SVG@in@path}{#2.pdf_tex}\SVG@out@postex} \fi%
-}%
+ \AfterPackage*{xcolor}{%
+ \PackageWarning{svg}{Package `xcolor' was loaded anyway}%
+ }%
+ \fi%
+ \if@svg@use@transparent%
+ \RequirePackage{transparent}[2016/05/16]%
+ \else%
+ \AfterPackage*{transparent}{%
+ \PackageWarning{svg}{Package `transparent' was loaded anyway}%
+ }%
+ \fi%
+}
+\newcommand*\svg@ink@mode{}
+\DefineFamilyKey{SVG}{inkscape}[true]{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{inkscape}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
+ {force}{2},{forced}{2},{overwrite}{2},%
+ {pdf}{3},{eps}{4},{ps}{5},{png}{6},%
+ {drawing}{7},{crop}{7},%
+ {page}{8},{nocrop}{8},%
+ {tex}{9},{latex}{9},{exportlatex}{9},{latexexport}{9},%
+ {notex}{10},{nolatex}{10},{noexportlatex}{10},{nolatexexport}{10},%
+ {latexnoexport}{10},{raw}{10},{plain}{10},{simple}{10}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifnum\svg@tempa<\thr@@\relax%
+ \let\svg@ink@mode\svg@tempa%
+ \else%
+ \ifcase\svg@tempa\relax\or\or\or% pdf
+ \FamilyOptions{SVG}{inkscapeformat=pdf}%
+ \or% eps
+ \FamilyOptions{SVG}{inkscapeformat=eps}%
+ \or% ps
+ \FamilyOptions{SVG}{inkscapeformat=ps}%
+ \or% png
+ \FamilyOptions{SVG}{inkscapeformat=png}%
+ \or% drawing
+ \FamilyOptions{SVG}{inkscapearea=drawing}%
+ \or% page
+ \FamilyOptions{SVG}{inkscapearea=page}%
+ \or% tex
+ \FamilyOptions{SVG}{inkscapelatex=true}%
+ \or% notex
+ \FamilyOptions{SVG}{inkscapelatex=false}%
+ \fi%
+ \fi%
+ \else% dpi
+ \def\svg@tempa##1dpi##2\@nil{%
+ \ifstr{##2}{dpi}{\FamilyOptions{SVG}{inkscapedpi=##1}}{}%
+ }%
+ \lowercase{\svg@tempa#1dpi\@nil}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed\else%
+ \def\svg@tempa##1-##2\@nil{%
+ \IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
+ \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}%
+ \svg@tempa#1\@nil%
+ }%
+ \def\svg@tempa{##1}%
+ }%
+ \svg@tempa#1-\@nil%
+ \PackageWarning{svg}{%
+ Setting the executable%
+ \ifx\svg@tempb\@empty\else%
+ \space and associated options%
+ \fi%
+ \MessageBreak%
+ for Inkscape should be done with options\MessageBreak%
+ `inkscapeexe=\svg@tempa'%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak and `inkscapeopt=\svg@tempb'%
+ \fi.\MessageBreak%
+ Nevertheless, this was done by now anyway%
+ }%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{inkscapeexe=\svg@tempa}%
+ \ifx\svg@tempb\@empty\else%
+ \noexpand\FamilyOptions{SVG}{inkscapeopt=\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ \fi%
+ \fi%
+}
+\DeclareOption{on}{\FamilyOptions{SVG}{inkscape=true}}
+\DeclareOption{off}{\FamilyOptions{SVG}{inkscape=false}}
+\newcommand*\svg@ink@format{pdf}
+\ifxetex\else\ifpdf\else
+ \renewcommand*\svg@ink@format{eps}
+\fi\fi
+\DefineFamilyKey{SVG}{inkscapeformat}{%
+ \lowercase{\def\svg@tempa{#1}}%
+ \FamilySetNumerical{SVG}{inkscapeformat}{svg@tempa}{%
+ {pdf}{0},{eps}{1},{ps}{2},{png}{3}%
+ }{\svg@tempa}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% latex
+ \renewcommand*\svg@ink@format{pdf}%
+ \or% eps
+ \renewcommand*\svg@ink@format{eps}%
+ \or% ps
+ \renewcommand*\svg@ink@format{ps}%
+ \or% png
+ \renewcommand*\svg@ink@format{png}%
+ \fi%
+ \fi%
+}
+\newif\if@svg@ink@latex
+\FamilyBoolKey{SVG}{inkscapelatex}{@svg@ink@latex}
+\newcommand*\svg@ink@area{}
+\DefineFamilyKey{SVG}{inkscapearea}{%
+ \FamilySetNumerical{SVG}{inkscapearea}{svg@tempa}{%
+ {drawing}{0},{crop}{0},%
+ {page}{1},{nocrop}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% drawing
+ \renewcommand*\svg@ink@area{-D}%
+ \else% page
+ \renewcommand*\svg@ink@area{-C}%
+ \fi%
+ \fi%
+}
+\newcommand*\svg@ink@dpi{}
+\let\svg@ink@dpi\relax
+\DefineFamilyKey{SVG}{inkscapedpi}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@ink@dpi\relax%
+ \FamilyKeyStateProcessed%
+ }{%
+ \def\svg@tempa##1dpi##2\@nil{\def\svg@tempa{##1}}%
+ \lowercase{\svg@tempa#1dpi\@nil}%
+ \ifnumber{\svg@tempa}{%
+ \edef\svg@ink@dpi{\svg@tempa}%
+ \FamilyKeyStateProcessed%
+ }{}%
+ }%
+}
+\DefineFamilyKey{SVG}{inkscapedensity}{\FamilyOptions{SVG}{inkscapedpi=#1}}
+\newcommand*\svg@ink@exe{inkscape}
+\DefineFamilyKey{SVG}{inkscapeexe}{%
+ \renewcommand*\svg@ink@exe{#1}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@ink@opt{}
+\DefineFamilyKey{SVG}{inkscapeopt}{%
+ \renewcommand*\svg@ink@opt{#1}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{svgpath}{%
+ \PackageWarning{svg}{%
+ The key `svgpath' is deprecated. It's recommended\MessageBreak%
+ to use `\string\svgpath' instead%
+ }%
+ \ifx\svgpath\@undefined%
+ \AtEndOfPackage{\svgpath{{#1}}}%
+ \else%
+ \svgpath{{#1}}%
+ \fi%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@out@path{}
+\newcommand*\svg@out@name{\svg@file@name\svg@file@suffix}
+\newcommand*\svg@out@base{\svg@out@path\svg@out@name.\svg@ink@format}
+\DefineFamilyKey{SVG}{inkscapepath}{%
+ \FamilySetNumerical{SVG}{inkscapepath}{svg@tempa}{%
+ {svgpath}{0},{svgdir}{0},%
+ {svgsubpath}{1},{svgsubdir}{1},%
+ {basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
+ {basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% svgpath
+ \renewcommand*\svg@out@path{\svg@file@path}%
+ \or% svgsubpath
+ \renewcommand*\svg@out@path{\svg@file@path svg-inkscape/}%
+ \or% basepath
+ \renewcommand*\svg@out@path{./}%
+ \or% basesubpath
+ \renewcommand*\svg@out@path{./svg-inkscape/}%
+ \fi%
+ \else%
+ \renewcommand*\svg@out@path{#1}%
+ \svg@normalize@path{\svg@out@path}%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+\DefineFamilyKey{SVG}{inkscapename}{%
+ \renewcommand*\svg@out@name{#1\svg@file@suffix}%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@param@width{\z@}
+\DefineFamilyKey{SVG}{width}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@width{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{width}{\svg@param@width}{#1}%
+ \ifdim\svg@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+}
+\newcommand*\svg@param@height{\z@}
+\DefineFamilyKey{SVG}{height}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@height{\z@}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetLengthMacro{SVG}{height}{\svg@param@height}{#1}%
+ \ifdim\svg@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
+ }%
+}
+\newcommand*\svg@param@scale{1}
+\DefineFamilyKey{SVG}{scale}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svg@param@scale{1}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \ifdim\dimexpr#1\p@\relax>\z@\relax%
+ \renewcommand*\svg@param@scale{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ }%
+}
+\newcommand*\svg@param@pretex{}
+\let\svg@param@pretex\relax
+\DefineFamilyKey{SVG}{pretex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@param@pretex\relax%
+ }{%
+ \def\svg@param@pretex{#1}%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\newcommand*\svg@param@apptex{}
+\let\svg@param@apptex\relax
+\DefineFamilyKey{SVG}{apptex}{%
+ \svg@ifvalueisrelax{#1}{%
+ \let\svg@param@apptex\relax%
+ }{%
+ \def\svg@param@apptex{#1}%
+ }%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{SVG}{postex}{%
+ \svg@deprecated@key{postex=#1}{apptex=#1}%
+}
+\newcounter{svg@param@lastpage}
+\DefineFamilyKey{SVG}{lastpage}{%
+ \FamilySetNumerical{SVG}{lastpage}{svg@tempa}{%
+ {false}{0},{off}{0},{no}{0},{ignore}{0},%
+ {true}{1},{on}{1},{yes}{1},{auto}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\svg@tempa\relax% false
+ \FamilySetCounter{SVG}{lastpage}{svg@param@lastpage}{\m@ne}%
+ \or% true
+ \FamilySetCounter{SVG}{lastpage}{svg@param@lastpage}{\z@}%
+ \fi%
+ \fi%
+}
+\newif\if@svg@draft
+\FamilyBoolKey{SVG}{draft}{@svg@draft}
+\AtBeginDocument{\if@svg@draft\else\ifGin@draft\@svg@drafttrue\fi\fi}
+\newcommand*\svg@quotes@remove[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \expandafter\svg@quotes@@remove\svg@tempa""\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@quotes@@remove{}
+\def\svg@quotes@@remove#1"#2"#3\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \edef\svg@tempa{#1}%
+ }{%
+ \svg@quotes@@remove#1#2#3""\@nil%
+ }%
+}
+\newif\if@svg@quotes@found
+\newcommand*\svg@quotes@check[1]{%
+ \expandafter\svg@quotes@@check#1"\@nil%
+}
+\newcommand*\svg@quotes@@check{}
+\def\svg@quotes@@check#1"#2\@nil{%
+ \IfArgIsEmpty{#2}{\@svg@quotes@foundfalse}{\@svg@quotes@foundtrue}%
+}
+\newcommand*\svg@normalize@path[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@check{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempa}%
+ \ifx\svg@tempa\@empty\relax%
+ \def\svg@tempa{./}%
+ \fi%
+ \expandafter\svg@normalize@@path\svg@tempa//\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \if@svg@quotes@found%
+ \noexpand\def\noexpand#1{"\unexpanded\expandafter{\svg@tempa}"}%
+ \else%
+ \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@normalize@@path{}
+\def\svg@normalize@@path#1/#2/\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \IfArgIsEmpty{#1}{\def\svg@tempa{}}{\def\svg@tempa{#1/}}%
+ }{%
+ \svg@normalize@@path#2/\@nil%
+ \edef\svg@tempa{#1/\unexpanded\expandafter{\svg@tempa}}%
+ }%
+}
+\newcommand*\svg@ifvalueisrelax[1]{%
+ \begingroup%
+ \def\svg@tempa{#1}%
+ \def\svg@tempb{\relax}%
+ \ifx\svg@tempa\svg@tempb\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+\DefineFamilyMember[.dummy]{SVG}
+\newcommand*\svg@dummy@key[2][]{%
+ \IfArgIsEmpty{#1}{%
+ \DefineFamilyKey[.dummy]{SVG}{#2}{%
+ \PackageWarning{svg}{%
+ The option key `#2' can only\MessageBreak%
+ be used with package `svg-extract', but\MessageBreak%
+ you didn't load it%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ }{%
+ \DefineFamilyKey[.dummy]{SVG}{#2}[{#1}]{%
+ \PackageWarning{svg}{%
+ The option key `#2' can only\MessageBreak%
+ be used with package `svg-extract', but\MessageBreak%
+ you didn't load it%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ }%
+ \BeforePackage{svg-extract}{\RelaxFamilyKey[.dummy]{SVG}{#2}}%
+}
+\svg@dummy@key[true]{extract}
+\svg@dummy@key{extractformat}
+\svg@dummy@key[true]{pdf}
+\svg@dummy@key[true]{eps}
+\svg@dummy@key{extractpreamble}
+\svg@dummy@key{preamble}
+\svg@dummy@key{extractpreambleend}
+\svg@dummy@key{end}
+\svg@dummy@key{extractruns}
+\svg@dummy@key{latexexe}
+\svg@dummy@key{pdflatex}
+\svg@dummy@key{latexext}
+\svg@dummy@key{latexopt}
+\svg@dummy@key{dvipsopt}
+\svg@dummy@key{pstoepsopt}
+\svg@dummy@key{pstopdfopt}
+\svg@dummy@key{pdftoepsopt}
+\svg@dummy@key{pdftopsopt}
+\svg@dummy@key{pdftops}
+\svg@dummy@key[true]{convert}
+\svg@dummy@key{convertformat}
+\svg@dummy@key[true]{png}
+\svg@dummy@key{convertdpi}
+\svg@dummy@key{convertdensity}
+\svg@dummy@key{magickexe}
+\svg@dummy@key{magicksetting}
+\svg@dummy@key{magickoperator}
+\svg@dummy@key{gsexe}
+\svg@dummy@key{gsopt}
+\svg@dummy@key{gsdevice}
+\svg@dummy@key{extractpath}
+\svg@dummy@key{path}
+\svg@dummy@key{extractname}
+\svg@dummy@key{name}
+\svg@dummy@key{extractwidth}
+\svg@dummy@key{extractheight}
+\svg@dummy@key{extractscale}
+\svg@dummy@key{extractpretex}
+\svg@dummy@key{extractapptex}
+\svg@dummy@key{extractpostex}
+\svg@dummy@key[true]{clean}
+\svg@dummy@key[true]{clear}
+\svg@dummy@key[true]{exclude}
+\FamilyExecuteOptions{SVG}{%
+ inkscape=true,inkscapepath=basesubdir,inkscapelatex=true,%
+ inkscapearea=drawing,usexcolor=true,usetransparent=true%
+}
+\FamilyProcessOptions{SVG}
+\newif\if@svg@file@found
+\newcommand*\svg@file@path{}
+\newcommand*\svg@file@name{}
+\newcommand*\svg@file@base{}
+\newcommand*\svg@file@suffix{}
+\newcommand*\svg@get@path[3][svg]{%
+ \begingroup%
+ \edef\svg@tempa{#2}%
+ \svg@quotes@check{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempa}%
+ \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
+ \IfArgIsEmpty{#1}{%
+ \edef\svg@tempa{\filename@area\filename@base.\filename@ext}%
+ }{%
+ \edef\svg@tempa{\filename@area\filename@base.#1}%
+ }%
+ \if@svg@quotes@found%
+ \edef\svg@tempa{"\svg@tempa"}%
+ \fi%
+ \@svg@file@foundfalse%
+ \let\input@path\svg@path%
+ \svg@get@@path{\svg@tempa}%
+ \if@svg@file@found\else%
+ \ifx\Ginput@path\@undefined\else%
+ \let\input@path\Ginput@path%
+ \svg@get@@path{\svg@tempa}%
+ \fi%
+ \fi%
+ \IfArgIsEmpty{#3}{}{%
+ \if@svg@file@found\else%
+ \ifx#3\@undefined\else%
+ \edef\svg@tempb{{#3}}%
+ \let\input@path\svg@tempb%
+ \svg@get@@path{\svg@tempa}%
+ \fi%
+ \fi%
+ }%
+ \edef\svg@tempa{%
+ \endgroup%
+ \if@svg@file@found%
+ \noexpand\@svg@file@foundtrue%
+ \noexpand\def\noexpand\svg@file@path{\filename@area}%
+ \noexpand\def\noexpand\svg@file@name{\filename@base}%
+ \noexpand\def\noexpand\svg@file@base{\filename@area\filename@base}%
+ \else%
+ \noexpand\@svg@file@foundfalse%
+ \noexpand\def\noexpand\svg@file@path{}%
+ \noexpand\def\noexpand\svg@file@name{#2}%
+ \noexpand\def\noexpand\svg@file@base{#2}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+\newcommand*\svg@get@@path[1]{%
+ \expandafter\IfFileExists\expandafter{#1}{%
+ \@svg@file@foundtrue%
+ \expandafter\svg@filename@parse\expandafter{\@filef@und}%
+ }{}%
+}
+\newcommand*\svg@filename@parse[1]{%
+ \begingroup%
+ \def\svg@tempa##1{%
+ \def\svg@tempb####1####2\@nil{%
+ \ifstr{####1}{"}{\def\svg@tempb{####2}}{\def\svg@tempb{####1####2}}%
+ }%
+ \expandafter\svg@tempb##1\@nil%
+ \edef##1{\svg@tempb}%
+ }%
+ \filename@parse{#1}%
+ \ifx\filename@ext\relax\else%
+ \edef\filename@base{\filename@base.\filename@ext}%
+ \fi%
+ \svg@quotes@check{\filename@area}%
+ \if@svg@quotes@found%
+ \svg@quotes@remove{\filename@area}%
+ \edef\filename@area{"\filename@area"}%
+ \svg@tempa{\filename@base}%
+ \fi%
+ \svg@quotes@check{\filename@base}%
+ \if@svg@quotes@found%
+ \svg@quotes@remove{\filename@base}%
+ \fi%
+ \let\svg@tempa\filename@area%
+ \expandafter\filename@parse\expandafter{\filename@base}%
+ \let\filename@area\svg@tempa%
+ \if@svg@quotes@found%
+ \edef\filename@base{"\filename@base"}%
+ \fi%
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\def\noexpand\filename@area{\filename@area}%
+ \noexpand\def\noexpand\filename@base{\filename@base}%
+ \ifx\filename@ext\relax%
+ \noexpand\let\noexpand\filename@ext\noexpand\relax%
+ \else%
+ \noexpand\def\noexpand\filename@ext{\filename@ext}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+\newcommand*\svg@file@missing[3][]{%
+ \begingroup%
+ \edef\svg@tempa{#2}%
+ \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
+ \svg@quotes@remove{\filename@area}%
+ \svg@quotes@remove{\filename@base}%
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \fi%
+ \IfArgIsEmpty{#1}{%
+ \def\svg@tempa{%
+ Did you run the export with Inkscape? There's no file\MessageBreak%
+ `\filename@area\filename@base.\filename@ext'%
+ }%
+ }{%
+ \edef\filename@ext{#1}%
+ \edef\svg@tempb{#3}%
+ \ifstr{\svg@tempb}{./}{\let\svg@tempb\@empty}{}%
+ \ifstr{\filename@area}{./}{\let\filename@area\@empty}{}%
+ \def\svg@tempa{%
+ There's no file `\filename@base.\filename@ext'\MessageBreak%
+ \ifx\filename@area\@empty%
+ neither in the current directory nor\MessageBreak%
+ any other searched path given by\MessageBreak%
+ \string\svgpath%
+ \ifx\svg@path\@undefined\space\else%
+ \space(\svg@path)\MessageBreak%
+ \fi%
+ or \string\graphicspath%
+ \ifx\Ginput@path\@undefined\else%
+ \space(\Ginput@path)%
+ \fi%
+ \ifx\svg@tempb\@empty\else%
+ \MessageBreak or even `inkscapepath' (`\svg@tempb')%
+ \fi.%
+ \else%
+ in folder `\filename@area'.%
+ \fi%
+ }%
+ }%
+ \PackageError{svg}{%
+ File `\filename@base.\filename@ext' is missing%
+ }{\svg@tempa}%
+ \endgroup%
+}
+\ifx\pdf@filemoddate\@undefined
+ \newcommand*\svg@iffilenewer[2]{\@gobbletwo}
+\else
+ \newcommand*\svg@iffilenewer[2]{%
+ \begingroup%
+ \edef\svg@tempa{\pdf@filemoddate{#1}}%
+ \edef\svg@tempb{\pdf@filemoddate{#2}}%
+ \ifnum\pdf@strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+ }
+\fi
+\newcommand*\svg@local@param@set[1]{%
+ \svg@local@param@use%
+ \FamilyOptions{SVG}{#1}%
+ \ifstr{\svg@ink@format}{png}{\FamilyOptions{SVG}{inkscapelatex=false}}{}%
+}
+\newcommand*\svg@local@param@use{}
+\newcommand*\svg@local@param@def[1]{%
+ \edef\svg@local@param@use{%
+ \unexpanded\expandafter{\svg@local@param@use}\unexpanded{#1}%
+ }%
+}
+\DefineFamilyMember[.param]{SVG}
+\newcommand*\svgsetup{\FamilyOptions{SVG}}
+\newcommand*\setsvg{\FamilyOptions{SVG}}
+\newcommand*\svg@path{}
+\let\svg@path\input@path
+\newcommand*\svgpath[1]{%
+ \def\svg@tempb{}%
+ \@tfor\svg@tempa:=#1\do{%
+ \ifx\svg@tempa\@empty\else%
+ \svg@normalize@path{\svg@tempa}%
+ \edef\svg@tempb{\svg@tempb{\svg@tempa}}%
+ \fi%
+ }%
+ \ifx\svg@tempb\@empty\else%
+ \let\svg@path\svg@tempb%
+ \fi%
+}
+\newcommand*{\includesvg}[2][]{%
+ \begingroup%
+ \svg@deprecated@param%
+ \svg@local@param@set{#1}%
+ \if@svg@ink@latex%
+ \def\svg@file@suffix{_svg-tex}%
+ \else%
+ \def\svg@file@suffix{_svg-raw}%
+ \fi%
+ \@onelevel@sanitize\svg@file@suffix%
+ \svg@get@path{#2}{}%
+ \if@svg@file@found%
+ \svg@ink@run%
+ \IfFileExists{\svg@out@base}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base}{}%
+ }%
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base_tex}{}%
+ }%
+ \fi%
+ \if@svg@file@found%
+ \svg@input{\svg@out@base}%
+ \svg@extract{\svg@out@base}%
+ \fi%
+ \else%
+ \svg@file@missing[svg]{\svg@file@base}{}%
+ \fi%
+ \endgroup%
+}
+\svg@local@param@def{%
+ \FamilyCounterKey[.param]{SVG}{lastpage}{svg@param@lastpage}%
+}
+\newcommand*\svg@param@angle{0}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{angle}{%
+ \renewcommand*\svg@param@angle{#1}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+\newcommand*\svg@param@origin{c}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{origin}[c]{%
+ \renewcommand*\svg@param@origin{#1}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+\newcommand*{\includeinkscape}[2][]{%
+ \begingroup%
+ \svg@deprecated@param%
+ \filename@parse{#2}%
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \expandafter\lowercase\expandafter{%
+ \expandafter\def\expandafter\filename@ext\expandafter{\filename@ext}%
+ }%
+ \let\svg@tempb\filename@ext%
+ \def\svg@tempa##1_tex##2\@nil{\def\svg@tempb{##1}}%
+ \expandafter\svg@tempa\svg@tempb_tex\@nil%
+ \@for\svg@tempa:={pdf,eps,ps,png}\do{%
+ \ifstr{\svg@tempb}{\svg@tempa}{%
+ \edef\svg@tempa{%
+ \noexpand\FamilyOptions{SVG}{inkscapeformat=\svg@tempb}%
+ }%
+ \svg@tempa%
+ }{}%
+ }%
+ \ifstr{\filename@ext}{\svg@ink@format_tex}{%
+ \FamilyOptions{SVG}{inkscapelatex=true}%
+ }{}%
+ \fi%
+ \svg@local@param@set{#1}%
+ \expandafter\svg@get@path\expandafter[\svg@ink@format]{#2}{\svg@out@path}%
+ \if@svg@file@found%
+ \edef\svg@out@name{\svg@file@name}%
+ \edef\svg@out@base{\svg@file@path\svg@file@name.\svg@ink@format}%
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{}{%
+ \@svg@file@foundfalse%
+ \svg@file@missing{\svg@out@base_tex}{}%
+ }%
+ \fi%
+ \if@svg@file@found%
+ \svg@input{\svg@out@base}%
+ \svg@extract{\svg@out@base}%
+ \fi%
+ \else%
+ \svg@file@missing[\svg@ink@format]{\svg@file@base}{\svg@out@path}%
+ \fi%
+ \endgroup%
+}
+\newcommand*\svg@deprecated@param{%
+ \@svg@tempswafalse%
+ \ifx\svgwidth\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{width=\svgwidth}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \ifx\svgscale\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{scale=\svgscale}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \if@svg@tempswa%
+ \PackageWarning{svg}{%
+ You should specify the image size with parameters\MessageBreak%
+ `width' and `height' or `scale' instead of using\MessageBreak%
+ `\string\svgscale' or `\string\svgwidth'%
+ }%
+ \let\svgwidth\@undefined%
+ \let\svgscale\@undefined%
+ \fi%
+}
+\newif\if@svg@ink@run
+\newcommand*\svg@ink@run{%
+ \ifnum\svg@ink@mode>\z@\relax%
+ \begingroup%
+ \@svg@ink@runtrue%
+ \ifnum\svg@ink@mode=\tw@\relax\else%
+ \svg@iffilenewer{\svg@file@base.svg}{\svg@out@base}{}{%
+ \@svg@ink@runfalse%
+ }%
+ \if@svg@ink@latex%
+ \IfFileExists{\svg@out@base_tex}{%
+ \ifnum\pdf@shellescape=\@ne\relax\if@svg@ink@run%
+ \svg@iffilenewer{\svg@out@base_tex}{\svg@out@base}{%
+ \@svg@ink@runfalse%
+ \edef\svg@tempa{\svg@out@base}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg}{%
+ Since the encountered filedate of file\MessageBreak%
+ `\svg@tempa_tex' is newer than \MessageBreak%
+ `\svg@tempa' it's supposed that\MessageBreak%
+ you customized this file. To avoid an accidental\MessageBreak%
+ overwriting of this file, the Inkscape export\MessageBreak%
+ won't be done. If you want to overwrite the\MessageBreak%
+ existing file please choose the parameter\MessageBreak%
+ `inkscape=force'%
+ }%
+ }{}%
+ \fi\fi%
+ }{\@svg@ink@runtrue}%
+ \fi%
+ \fi%
+ \if@svg@ink@run%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \ifx\svg@ink@dpi\relax%
+ \ifstr{\svg@ink@format}{png}{%
+ \FamilyOptions{SVG}{inkscapedpi=300}%
+ }{}%
+ \fi%
+ \PackageInfo{svg}{%
+ Calling Inkscape%
+ \ifx\svg@ink@opt\@empty\else%
+ \space with added options `\svg@ink@opt'%
+ \fi%
+ }%
+ \edef\svg@tempa{\svg@file@base}%
+ \edef\svg@tempb{\svg@out@name}%
+ \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove{\svg@tempb}%
+ \ShellEscape{\svg@ink@cmd{\svg@tempa}{\svg@tempb}}%
+ \IfFileExists{\svg@out@name.\svg@ink@format}{%
+ \edef\svg@tempb{\svg@tempb.\svg@ink@format}%
+ \svg@quotes@remove{\svg@out@base}%
+ \svg@shell@mkdir{\svg@out@path}%
+ \svg@shell@move{\svg@tempb}{\svg@out@base}%
+ \if@svg@ink@latex%
+ \svg@shell@move{\svg@tempb_tex}{\svg@out@base_tex}%
+ \fi%
+ }{%
+ \PackageWarning{svg}{%
+ The export with Inkscape failed for file\MessageBreak%
+ `\svg@tempa.svg'\MessageBreak%
+ Troubleshooting: Please check in the log file how\MessageBreak%
+ the invocation of Inkscape took place and try to\MessageBreak%
+ execute it yourself in the terminal%
+ }%
+ }%
+ \else%
+ \edef\svg@tempa{\svg@file@base}%
+ \svg@quotes@remove{\svg@tempa}%
+ \PackageWarning{svg}{%
+ You didn't enable `shell escape' (or `write18')\MessageBreak%
+ so it wasn't possible to launch the Inkscape export\MessageBreak%
+ for `\svg@tempa.svg'%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+ \fi%
+}
+\newcommand*\svg@ink@cmd[2]{%
+ \svg@ink@exe\space-z\space\svg@ink@area\space%
+ \ifx\svg@ink@dpi\relax\else--export-dpi=\svg@ink@dpi\space\fi%
+ \if@svg@ink@latex--export-latex\space\fi%
+ \svg@ink@opt\space%
+ --file="#1.svg"\space%
+ --export-\svg@ink@format="#2.\svg@ink@format"\space%
+}
+\newcommand*\svg@get@lastpage[1]{%
+ \ifstr{\svg@ink@format}{pdf}{%
+ \begingroup%
+ \svg@tempcnt=\m@ne\relax%
+ \ifx\XeTeXpdfpagecount\@undefined%
+ \ifpdf%
+ \ifx\pdfximage\@undefined%
+ \ifx\saveimageresource\@undefined\else%
+ \saveimageresource{#1}%
+ \svg@tempcnt=\lastsavedimageresourcepages\relax%
+ \fi%
+ \else%
+ \pdfximage{#1}%
+ \svg@tempcnt=\pdflastximagepages\relax%
+ \fi%
+ \fi%
+ \else%
+ \svg@tempcnt=\XeTeXpdfpagecount#1\relax%
+ \fi%
+ \ifnum\svg@tempcnt=\m@ne\relax%
+ \PackageWarning{svg}{%
+ It wasn't possible to detect the last page\MessageBreak%
+ of `#1'%
+ }%
+ \else%
+ \PackageInfo{svg}{Last page of `#1' is \the\svg@tempcnt}%
+ \fi%
+ \edef\svg@tempa{%
+ \noexpand\endgroup%
+ \noexpand\FamilyOptions{SVG}{lastpage=\the\svg@tempcnt}%
+ }%
+ \svg@tempa%
+ }{}%
+}
+\newcommand*\svg@wrn@scale{%
+ \ifdim\dimexpr\svg@param@scale\p@\relax=\p@\relax\else%
+ \@svg@tempswafalse%
+ \ifdim\svg@param@width>\z@\relax%
+ \@svg@tempswatrue%
+ \fi%
+ \ifdim\svg@param@height>\z@\relax%
+ \@svg@tempswatrue%
+ \fi%
+ \if@svg@tempswa%
+ \PackageWarning{svg}{%
+ The parameter `scale' is only considered if neither\MessageBreak%
+ `width' nor `height' are specified%
+ }%
+ \fi%
+ \fi%
+}
+\newcommand*\svg@input{\svg@@input}
+\newcommand*\svg@@input[2][]{%
+ \IfArgIsEmpty{#1}{}{\svg@local@param@set{#1}}%
+ \if@svg@draft%
+ \@svg@ink@latexfalse%
+ \fi%
+ \edef\svg@tempa{#2}%
+ \if@svg@ink@latex%
+ \svg@patches{\svg@tempa}%
+ \ifnum\value{svg@param@lastpage}=\z@\relax%
+ \expandafter\svg@get@lastpage\expandafter{\svg@tempa}%
+ \fi%
+ \edef\svg@tempa{%
+ \ifx\svg@param@pretex\relax\else%
+ \noexpand\svg@param@pretex%
+ \fi%
+ \noexpand\input{\svg@tempa_tex}%
+ \ifx\svg@param@apptex\relax\else%
+ \noexpand\svg@param@apptex%
+ \fi%
+ }%
+ \ifdim\dimexpr\svg@param@angle\p@\relax=\z@\relax%
+ \svg@tempa%
+ \else%
+ \edef\svg@tempb{origin=\svg@param@origin}%
+ \expandafter\rotatebox\expandafter[\svg@tempb]{\svg@param@angle}{%
+ \svg@tempa%
+ }%
+ \fi%
+ \else%
+ \svg@wrn@scale%
+ \edef\svg@tempb{keepaspectratio,scale=\svg@param@scale}%
+ \ifdim\svg@param@height>\z@\relax%
+ \edef\svg@tempb{\svg@tempb,height=\svg@param@height}%
+ \fi%
+ \ifdim\svg@param@width>\z@\relax%
+ \edef\svg@tempb{\svg@tempb,width=\svg@param@width}%
+ \fi%
+ \ifdim\dimexpr\svg@param@angle\p@\relax=\z@\relax\else%
+ \edef\svg@tempb{%
+ \svg@tempb,origin=\svg@param@origin,angle=\svg@param@angle%
+ }%
+ \fi%
+ \if@svg@draft%
+ \edef\svg@tempb{\svg@tempb,draft}%
+ \else%
+ \edef\svg@tempb{\svg@tempb,draft=false}%
+ \fi%
+ \expandafter\includegraphics\expandafter[\svg@tempb]{\svg@tempa}%
+ \fi%
+}
+\newcommand*\svg@patches[1]{%
+ \let\svg@picture@saved\picture%
+ \let\picture\svg@picture@patched%
+ \let\svg@includegraphics@saved\includegraphics%
+ \let\includegraphics\svg@includegraphics@patched%
+ \edef\svg@includegraphics@file{#1}%
+}
+\newcommand*\svg@picture@saved{}
+\newcommand*\svg@picture@patched{}
+\newcommand*\svg@pictur@patched{}
+\long\def\svg@picture@patched#1{\svg@pictur@patched@#1}
+\def\svg@pictur@patched@(#1,#2){%
+ \svg@wrn@scale%
+ \ifdim\svg@param@height>\z@\relax%
+ \Gscale@div\svg@tempa{#1\p@}{#2\p@}%
+ \setlength\unitlength{\svg@param@height}%
+ \setlength\unitlength{\svg@tempa\unitlength}%
+ \ifdim\svg@param@width>\z@\relax%
+ \ifdim\unitlength>\svg@param@width\relax%
+ \setlength\unitlength{\svg@param@width}%
+ \fi%
+ \fi%
+ \else%
+ \ifdim\svg@param@width>\z@\relax%
+ \setlength\unitlength{\svg@param@width}%
+ \else%
+ \setlength\unitlength{\svg@param@scale\unitlength}%
+ \fi%
+ \fi%
+ \svg@picture@saved(#1,#2)%
+}
+\DefineFamily{SVGpatch}
+\DefineFamilyMember{SVGpatch}
+\newcounter{svg@param@currpage}
+\setcounter{svg@param@currpage}{\m@ne}
+\FamilyCounterKey{SVGpatch}{page}{svg@param@currpage}
+\DefineFamilyKey{SVGpatch}{width}{\FamilyKeyStateProcessed}
+\newcommand*\svg@includegraphics@file{}
+\newcommand*\svg@includegraphics@saved{}
+\newcommand*\svg@includegraphics@patched[2][]{%
+ \FamilyOptions{SVGpatch}{#1}%
+ \ifnum\value{svg@param@lastpage}<\z@\relax%
+ \FamilySetCounter{SVGpatch}{page}{svg@param@currpage}{%
+ \the\value{svg@param@lastpage}%
+ }%
+ \fi%
+ \ifnum\value{svg@param@currpage}>\value{svg@param@lastpage}\relax\else%
+ \svg@includegraphics@saved[{#1}]{\svg@includegraphics@file}%
+ \fi%
+}
+\newcommand*\svghidepreamblestart{%
+ \PackageWarning{svg}{%
+ The macro `\string\svghidepreamblestart' is only meant\MessageBreak%
+ to be used together with package `svg-extract'.\MessageBreak%
+ Nevertheless, nothing will happen%
+ }%
+}
+\newcommand*\svghidepreambleend{%
+ \PackageWarning{svg}{%
+ The macro `\string\svghidepreambleend' is only meant\MessageBreak%
+ to be used together with package `svg-extract'.\MessageBreak%
+ Nevertheless, nothing will happen%
+ }%
+}
+\newcommand*\svg@extract[1]{}
+\ifnum\pdf@shellescape=\@ne\relax\else%
+ \expandafter\endinput%
+\fi
+\RequirePackage{ifplatform}[2010/10/22]
+\ifwindows
+ \newcommand*\svg@shell@@mkdir[1]{if not exist "#1" mkdir "#1"}
+ \newcommand*\svg@shell@@mv{move}
+ \newcommand*\svg@shell@@rm{del}
+\else
+ \newcommand*\svg@shell@@mkdir[1]{mkdir -p "#1"}
+ \newcommand*\svg@shell@@mv{mv}
+ \newcommand*\svg@shell@@rm{rm}
+\fi
+\newcommand*\svg@shell@mkdir[1]{%
+ \begingroup%
+ \edef\svg@tempa{#1}%
+ \svg@quotes@remove{\svg@tempa}%
+ \@svg@tempswatrue%
+ \ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
+ \ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
+ }}%
+ \if@svg@tempswa%
+ \ShellEscape{\svg@shell@@mkdir{\svg@tempa}}%
+ \fi%
+ \endgroup%
+}
+\newcommand*\svg@shell@move[2]{%
+ \ShellEscape{\svg@shell@@mv\space"#1"\space"#2"}%
+}
+\newcommand*\svg@shell@rm[1]{%
+ \ShellEscape{\svg@shell@@rm\space"#1"}%
+}
\endinput
%%
%% End of file `svg.sty'.
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index e835ea596dd..8747151f231 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -2465,6 +2465,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex";
'silence' => 'latex -translate-file=empty.tcx', # no 8-bit
'skdoc' => 'tex',
'skrapport' => 'pdflatex', # as with download
+ 'svg' => 'etex -interaction=nonstopmode',
'svn-multi' => 'latex', # interaction for .pl
'teubner' => 'latex', # interaction
'termlist' => 'tex', # interaction for .pl