summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/svg/svg-extract.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-09-08 21:41:57 +0000
committerKarl Berry <karl@freefriends.org>2018-09-08 21:41:57 +0000
commit6a8d502f6063d1e03f46b7852876aacbdbc9658b (patch)
tree1a53b42cea7894a427d7926394740a38d4e25d67 /Master/texmf-dist/tex/latex/svg/svg-extract.sty
parent80b28c052dd903d1c5c60a1faafd530bec8f5e45 (diff)
svg (8sep18)
git-svn-id: svn://tug.org/texlive/trunk@48626 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/svg/svg-extract.sty')
-rw-r--r--Master/texmf-dist/tex/latex/svg/svg-extract.sty153
1 files changed, 108 insertions, 45 deletions
diff --git a/Master/texmf-dist/tex/latex/svg/svg-extract.sty b/Master/texmf-dist/tex/latex/svg/svg-extract.sty
index f7472d3a063..e4be74acca3 100644
--- a/Master/texmf-dist/tex/latex/svg/svg-extract.sty
+++ b/Master/texmf-dist/tex/latex/svg/svg-extract.sty
@@ -33,7 +33,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{svg-extract}[%
- 2017/11/29 v2.01\space%
+ 2018/09/08 v2.02\space%
(extract independent graphics from SVG pictures)%
]
\RequirePackage{svg}[2017/03/27]
@@ -81,7 +81,7 @@
}%
\svg@deprecated@key{pdf}{extractformat={\svgx@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -94,7 +94,7 @@
}%
\svg@deprecated@key{eps}{extractformat={\svgx@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -196,7 +196,7 @@
`pdftopsopt' instead. See the manual for\MessageBreak%
more. Nothing was done%
}%
- \FamilyKeyStateProcessed
+ \FamilyKeyStateProcessed%
}
\newif\if@svgx@cnv@run
\newcommand*\svgx@cnv@cmd{}
@@ -286,7 +286,7 @@
}%
\svg@deprecated@key{png}{convertformat={\svgx@cnv@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -341,12 +341,13 @@
}
\newcommand*\svgx@out@path{}
\DefineFamilyKey{SVG}{extractpath}{%
+ \svg@sanitize@dq\svg@tempb{#1}%
\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}%
+ }{\svg@tempb}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% svgpath
\renewcommand*\svgx@out@path{\svg@file@path}%
@@ -358,7 +359,7 @@
\renewcommand*\svgx@out@path{./svg-extract/}%
\fi%
\else%
- \renewcommand*\svgx@out@path{#1}%
+ \edef\svgx@out@path{\svg@tempb}%
\svg@normalize@path{\svgx@out@path}%
\FamilyKeyStateProcessed%
\fi%
@@ -370,12 +371,13 @@
\newcommand*\svgx@out@name{}
\newif\if@svgx@out@sec
\DefineFamilyKey{SVG}{extractname}{%
+ \svg@quotes@remove[{#1}]{\svg@tempb}%
\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}%
+ }{\svg@tempb}%
\@svgx@out@secfalse%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% filename
@@ -387,10 +389,11 @@
\@svgx@out@sectrue%
\fi%
\else%
- \def\svg@tempa##1.##2\@nil{%
- \IfArgIsEmpty{##1}{}{\renewcommand*\svgx@out@name{##1}}%
- }%
- \svg@tempa#1.\@nil%
+ \if@svg@quotes@found%
+ \edef\svgx@out@name{"\svg@tempb"}%
+ \else%
+ \edef\svgx@out@name{\svg@tempb}%
+ \fi%
\FamilyKeyStateProcessed%
\fi%
}
@@ -409,8 +412,10 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{extractwidth}{\svgx@param@width}{#1}%
- \ifdim\svgx@param@width<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svgx@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}%
@@ -427,12 +432,41 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{extractheight}{\svgx@param@height}{#1}%
- \ifdim\svgx@param@height<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svgx@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}%
}
+\newif\if@svgx@param@distort
+\DefineFamilyKey{SVG}{extractdistort}[true]{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \@svgx@param@distortfalse%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\if@svgx@param@distort{\if@svg@param@distort}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetBool{SVG}{extractdistort}{@svgx@param@distort}{#1}%
+ }%
+ }%
+}
+\DefineFamilyKey{SVG}{extractkeepaspectratio}[true]{%
+ \FamilySetBool{SVG}{extractkeepaspectratio}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \FamilyOptions{SVG}{extractdistort=false}%
+ \else
+ \FamilyOptions{SVG}{extractdistort=true}%
+ \fi%
+ \else%
+ \FamilyOptions{SVG}{extractdistort=#1}%
+ \fi%
+}
\newcommand*\svgx@param@scale{\svg@param@scale}
\DefineFamilyKey{SVG}{extractscale}{%
\FamilyKeyStateUnknownValue%
@@ -459,9 +493,9 @@
\let\svgx@param@pretex\relax%
}{%
\ifstr{#1}{inherit}{%
- \def\svgx@param@pretex{\svg@param@pretex}%
+ \renewcommand*\svgx@param@pretex{\svg@param@pretex}%
}{%
- \def\svgx@param@pretex{#1}%
+ \renewcommand*\svgx@param@pretex{#1}%
}%
}%
\FamilyKeyStateProcessed%
@@ -472,9 +506,9 @@
\let\svgx@param@apptex\relax%
}{%
\ifstr{#1}{inherit}{%
- \def\svgx@param@apptex{\svg@param@apptex}%
+ \renewcommand*\svgx@param@apptex{\svg@param@apptex}%
}{%
- \def\svgx@param@apptex{#1}%
+ \renewcommand*\svgx@param@apptex{#1}%
}%
}%
\FamilyKeyStateProcessed%
@@ -569,11 +603,11 @@
\fi%
}%
\edef\svg@tempb{%
- \noexpand\endgroup%
+ \endgroup%
\ifx\svg@tempa\relax%
- \noexpand\let\noexpand\svg@tempa\noexpand\relax%
+ \let\noexpand\svg@tempa\noexpand\relax%
\else%
- \noexpand\def\noexpand\svg@tempa{\svg@tempa}%
+ \def\noexpand\svg@tempa{\svg@tempa}%
\fi%
}%
\svg@tempb%
@@ -611,21 +645,23 @@
\fi%
}%
}
-\newcommand*\svgxdelayed[1]{
+\newif\if@svgx@standalone
+\newcommand*\svgxsetbox[2][]{%
+ \@svgx@standalonetrue%
+ \svgx@setbox{#1}{#2}%
\scr@ifundefinedorrelax{AtEndPreamble}{%
- \AtBeginDocument{#1}%
+ \let\svg@tempa\@firstofone%
}{%
- \AtEndPreamble{\AtBeginDocument{#1}}%
+ \def\svg@tempa{\AtEndPreamble}%
}%
+ \svg@tempa{\AtBeginDocument{\svgx@setbox{#1}{#2}}}%
}
-\newbox\svgx@box
-\newcommand*\svgxsetbox[2][]{%
- \csname @tud@x@standalone@croptrue\endcsname%
- \sbox\svgx@box{\svg@@input[{#1},draft=false]{#2}}%
+\newcommand*\svgx@setbox[2]{%
+ \sbox\svg@box{\svg@@input[{#1},draft=false]{#2}}%
\svgxsetpapersize%
}
\newcommand*\svgxsetpapersize{%
- \setlength\paperwidth{\the\wd\svgx@box}%
+ \setlength\paperwidth{\the\wd\svg@box}%
\scr@ifundefinedorrelax{stockwidth}{}{%
\setlength\stockwidth{\paperwidth}%
}%
@@ -633,7 +669,7 @@
\setlength\mediawidth{\paperwidth}%
}%
\setlength\textwidth{\paperwidth}%
- \setlength\paperheight{\the\dimexpr\ht\svgx@box+\dp\svgx@box\relax}%
+ \setlength\paperheight{\the\dimexpr\ht\svg@box+\dp\svg@box\relax}%
\scr@ifundefinedorrelax{stockheight}{}{%
\setlength\stockheight{\paperheight}%
}%
@@ -665,22 +701,44 @@
\if@svgx@beamer%
\setbeamertemplate{navigation symbols}{}%
\begin{frame}[plain]%
- \usebox\svgx@box%
+ \usebox\svg@box%
\end{frame}%
\else%
- \usebox\svgx@box%
+ \usebox\svg@box%
\fi%
\endgraf%
\endgroup%
}
\FamilyExecuteOptions{SVG}{%
- extract=true,extractpath=basesubdir,extractruns=2,extractname=namenumbered,%
+ extract=true,extractpath=basesubdir,%
+ extractruns=2,extractname=namenumbered,extractdistort=false,%
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}
+\DefineFamilyMember[.param]{SVG}
+\newcommand*\svgx@param@angle{0}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{extractangle}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@angle{0}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@angle{\svg@param@angle}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \renewcommand*\svgx@param@angle{#1}%
+ \FamilyKeyStateProcessed%
+ }{}%
+ }%
+ }%
+ }%
+}
\let\svghidepreamblestart\relax
\let\svghidepreambleend\relax
\ifnum\pdf@shellescape=\@ne\relax\else%
@@ -692,7 +750,7 @@
\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'%
+ file `\svg@tempa'\MessageBreak%
}%
\endgroup%
\fi%
@@ -833,6 +891,9 @@
\ifdim\svgx@param@height>\z@\relax%
\svg@tempa{height=\svgx@param@height}%
\fi%
+ \if@svgx@param@distort%
+ \svg@tempa{distort=true}%
+ \fi%
\ifdim\dimexpr\svgx@param@scale\p@\relax=\p@\relax\else%
\svg@tempa{scale=\svgx@param@scale}%
\fi%
@@ -864,6 +925,11 @@
\fi%
}{}%
\fi%
+ \ifdim\dimexpr\svgx@param@angle\p@\relax=\z@\relax\else%
+ \edef\svg@tempa{%
+ angle=\svgx@param@angle\ifx\svg@tempa\@empty\else,\svg@tempa\fi%
+ }%
+ \fi%
\ifx\svg@tempa\@empty%
\def\svg@tempa{\string\svgxsetbox{#1}}%
\else%
@@ -879,9 +945,6 @@
}{}%
\fi%
\immediate\write\svgx@stream@out{%
- \string\svgxdelayed{\@percentchar^^J%
- \space\space\svg@tempa\@percentchar^^J%
- }^^J^^J%
\string\begin{document}^^J%
\string\pagestyle{empty}^^J%
\string\svgxoutputbox\@percentchar^^J%
@@ -954,7 +1017,7 @@
\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
+ `extractformat' (\svgx@format) as well as for \MessageBreak%
option `convertformat' (\svgx@cnv@format) so the\MessageBreak%
conversion won't be done%
}%
@@ -1073,8 +1136,8 @@
}%
\svg@tempa#1,\@nil%
\edef\svg@tempa{%
- \noexpand\endgroup%
- \noexpand\def\noexpand\svgx@cnv@informat{\svg@tempa}%
+ \endgroup%
+ \def\noexpand\svgx@cnv@informat{\svg@tempa}%
}%
\svg@tempa%
\ifx\svgx@cnv@informat\@empty%
@@ -1133,9 +1196,9 @@
\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%
+ Troubleshooting: Please check the log file how\MessageBreak%
+ the invocation of the extraction took place and\MessageBreak%
+ try to execute it yourself in the terminal%
}%
\else%
\def\svg@tempb{%