diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/svg/svg-extract.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/svg/svg-extract.sty | 350 |
1 files changed, 188 insertions, 162 deletions
diff --git a/Master/texmf-dist/tex/latex/svg/svg-extract.sty b/Master/texmf-dist/tex/latex/svg/svg-extract.sty index cb1c1fa12b3..f42fc92287d 100644 --- a/Master/texmf-dist/tex/latex/svg/svg-extract.sty +++ b/Master/texmf-dist/tex/latex/svg/svg-extract.sty @@ -4,39 +4,89 @@ %% %% The original source files were: %% +%% svg.dtx (with options: `package,identify,extract') +%% svg.dtx (with options: `package,base,extract') %% svg.dtx (with options: `package,option,extract') +%% svg.dtx (with options: `package,standalone,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. +%% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-2020 +%% %% ---------------------------------------------------------------------------- -%% +%% %% 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}[2020-02-02] -\ProvidesPackage{svg-extract}[% - 2020/05/07 v2.02f\space% - (extract independent graphics from SVG pictures)% -] -\RequirePackage{svg}[2020/05/07] +\begingroup + \catcode`\@11\relax% + \def\svg@Provides#1#2[#3]{% + \def\@tempa{\def\svg@version{#3}}% + \ifx\svg@version\@undefined\else% + \def\@tempb{#3}% + \ifx\svg@version\@tempb\else% + \def\@tempa{% + \@latex@warning@no@line{% + The version of package `#1' is `#3',\MessageBreak% + but `\svg@version' was expected!\MessageBreak% + You should update the svg bundle% + }% + }% + \fi% + \fi% + \edef\@tempb{% + \endgroup% + \noexpand\ProvidesPackage% + {#1}[#3\space(#2)]% + \noexpand\RequirePackage{svg}[#3]% + \unexpanded\expandafter{\@tempa}% + }% + }% + \svg@Provides% + {svg-extract}{extract graphics from SVG pictures}% + [2020/06/12 v2.02g]% +\@tempb +\edef\svg@catcodecodes@restore{% + \catcode`\noexpand\"\the\catcode`\"\relax% +} +\@makeother\"% +\AtEndOfPackage{\svg@catcodecodes@restore} +\newcommand*\svgx@@ifkeyandval{} +\newcommand*\svgx@ifkeyandval[3]{% + \def\svgx@@ifkeyandval##1=##2=##3\@nil{\IfArgIsEmpty{##3}{#3}{#2}}% + \svgx@@ifkeyandval#1==\@nil% +} +\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% +} \DefineFamily{SVG} \DefineFamilyMember{SVG} \newif\if@svgx@run @@ -190,8 +240,8 @@ \FamilyKeyStateProcessed% } \DefineFamilyKey{SVG}{pdftops}{% - \PackageWarning{#1}{% - The option key `pdftops' is deprecated.\MessageBreak% + \PackageWarning{svg-extract}{% + 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% @@ -224,17 +274,17 @@ \or% gs64 \@svgx@cnv@runtrue% \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}% - \svgx@onlywindows{% + \svg@ifwindowsdetected{% \renewcommand*\svgx@gs@exe{gswin64c}% - }% + }{}% \or% gs32 \@svgx@cnv@runtrue% \renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}% - \svgx@onlywindows{% + \svg@ifwindowsdetected{% \renewcommand*\svgx@gs@exe{gswin32c}% - }% + }{}% \fi% - \else% + \else% legacy option \def\svg@tempa##1-##2\@nil{% \IfArgIsEmpty{##2}{\def\svg@tempb{}}{% \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}% @@ -309,7 +359,90 @@ }% } \DefineFamilyKey{SVG}{convertdensity}{\FamilyOptions{SVG}{convertdpi=#1}} -\newcommand*\svgx@magick@exe{} +\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{% + \endgroup% + \ifx\svg@tempa\relax% + \let\noexpand\svg@tempa\noexpand\relax% + \else% + \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% + }% +} +\svg@ifwindowsdetected{% + \newcommand*\svgx@magick@exe{magick}% +}{% + \newcommand*\svgx@magick@exe{convert}% +} \DefineFamilyKey{SVG}{magickexe}{% \renewcommand*\svgx@magick@exe{#1}% \FamilyKeyStateProcessed% @@ -324,7 +457,19 @@ \svgx@setformatkey{#1}{svgx@magick@opr}% \FamilyKeyStateProcessed% } -\newcommand*\svgx@gs@exe{} +\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"% +} +\svg@ifwindowsdetected{% + \newcommand*\svgx@gs@exe{gswin64c}% +}{% + \newcommand*\svgx@gs@exe{gs}% +} \DefineFamilyKey{SVG}{gsexe}{% \renewcommand*\svgx@gs@exe{#1}% \FamilyKeyStateProcessed% @@ -339,6 +484,13 @@ \svgx@setformatkey{#1}{svgx@gs@device}% \FamilyKeyStateProcessed% } +\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@out@path{} \DefineFamilyKey{SVG}{extractpath}{% \svg@sanitize@dq\svg@tempb{#1}% @@ -367,9 +519,10 @@ \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 +\newcounter{svgx@out@count} +\newcommand*\svgx@out@sec{unknown} \DefineFamilyKey{SVG}{extractname}{% \svg@quotes@remove[{#1}]{\svg@tempb}% \FamilySetNumerical{SVG}{extractname}{svg@tempa}{% @@ -460,7 +613,7 @@ \ifx\FamilyKeyState\FamilyKeyStateProcessed% \if@svg@tempswa% \FamilyOptions{SVG}{extractdistort=false}% - \else + \else% \FamilyOptions{SVG}{extractdistort=true}% \fi% \else% @@ -530,7 +683,7 @@ \FamilyKeyStateProcessed% \fi% } -\DefineFamilyKey{SVG}{clear}{\FamilyOptions{SVG}{clean=#1}} +\DefineFamilyKey{SVG}{clear}[true]{\FamilyOptions{SVG}{clean=#1}} \DefineFamilyKey{SVG}{exclude}[true]{% \FamilySetBool{SVG}{exclude}{@svg@tempswa}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% @@ -548,103 +701,15 @@ \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{% - \endgroup% - \ifx\svg@tempa\relax% - \let\noexpand\svg@tempa\noexpand\relax% - \else% - \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% - }% +\FamilyExecuteOptions{SVG}{% + 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} \newif\if@svgx@standalone \newcommand*\svgxsetbox[2][]{% \@svgx@standalonetrue% @@ -709,15 +774,6 @@ \endgraf% \endgroup% } -\FamilyExecuteOptions{SVG}{% - 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{% @@ -1063,7 +1119,6 @@ }% \fi% } -\newcommand*\svgx@out@sec{unknown} \newcommand*\svgx@get@out@sec{% \begingroup% \def\svg@tempa{}% @@ -1147,39 +1202,10 @@ \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}% + \svg@shell@mv{#1.#2}{#3#1.#2}% }{% \edef\svg@tempa{#2}% \@svg@tempswafalse% |