diff options
author | Karl Berry <karl@freefriends.org> | 2011-12-21 23:41:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-12-21 23:41:34 +0000 |
commit | 34adb1fdc882b4cbadf33ef1f919c673c42aae30 (patch) | |
tree | e962d7d9394ebedfd28cda6e0a5127097efcf2b4 /Master/texmf-dist/tex | |
parent | caa391301c323d8e1ac20ad46d581f1223a09291 (diff) |
standalone (21dec11)
git-svn-id: svn://tug.org/texlive/trunk@24894 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
5 files changed, 1410 insertions, 209 deletions
diff --git a/Master/texmf-dist/tex/latex/standalone/standalone.cfg b/Master/texmf-dist/tex/latex/standalone/standalone.cfg index e96a300647e..b3a92272e58 100644 --- a/Master/texmf-dist/tex/latex/standalone/standalone.cfg +++ b/Master/texmf-dist/tex/latex/standalone/standalone.cfg @@ -1,8 +1,34 @@ -% $Id: standalone.dtx 2451 2011-04-07 11:40:38Z martin $ -\ProvidesFile{standalone.cfg}[2011/04/07 v0.4a Default configuration file for 'standalone' class]% +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{standalone.cfg}[% + 2011/12/21 + v1.0 + Default configuration file for 'standalone' class]% +%% Enabled the "varwidth" option if the "varwidth" package is available: +%%\IfFileExists{varwidth.sty}{% +%% \standaloneconfig{varwidth}% +%%}{}% + +%% Default options: +\standaloneconfig{crop} + +%% Option which 'preview' should be loaded with \PassOptionsToPackage{active,tightpage}{preview}% +%% Enable 'preview' option by default: +%%\standaloneconfig{preview} + +%% Remove the border: +\standaloneconfig{border=0pt} + +%% Default preview border (used by standalone v0.x): +%%\standaloneconfig{border=0.50001bp} + +%% Disable navigation symbols in beamer. +%% This must be done AtEndOfClass because the options are not processed yet, +%% so "beamer" mode is not enabled yet. +\AtEndOfClass{% \ifstandalonebeamer \setbeamertemplate{navigation symbols}{}% \fi -% vim: ft=tex +} +%% vim: ft=tex diff --git a/Master/texmf-dist/tex/latex/standalone/standalone.cls b/Master/texmf-dist/tex/latex/standalone/standalone.cls index 363cd18ce0e..0fd148c0079 100644 --- a/Master/texmf-dist/tex/latex/standalone/standalone.cls +++ b/Master/texmf-dist/tex/latex/standalone/standalone.cls @@ -1,87 +1,642 @@ -%% -%% This is file `standalone.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% standalone.dtx (with options: `cls') -%% -%% Copyright (c) 2010 by Martin Scharrer <martin@scharrer-online.de> -%% +%% Copyright (C) 2011 by Martin Scharrer <martin@scharrer-online.de> +%% --------------------------------------------------------------------------- %% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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.3c or later is part of all distributions of LaTeX -%% version 2008/05/04 or later. -%% +%% 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 Martin Scharrer. -%% -%% This work consists of the files standalone.dtx, standalone.ins -%% and the derived file standalone.sty. -%% -% $Id: standalone.dtx 2451 2011-04-07 11:40:38Z martin $ +%% +%% This work consists of the files <+name+>.dtx and <+name+>.ins +%% and the derived filebase <+name+>.sty. +%% \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{standalone} [2011/04/07 v0.4a Class to compile TeX sub-files standalone] +\ProvidesClass{standalone}[% + 2011/12/21 + v1.0 + Class to compile TeX sub-files standalone] \newif\ifstandalone \standalonetrue \newif\ifstandalonebeamer \standalonebeamerfalse \let\onlyifstandalone\@firstofone -\RequirePackage{kvoptions} -\SetupKeyvalOptions{prefix=sa@} -\DeclareBoolOption[true]{preview} -\DeclareStringOption{border} -\let\sa@border\relax -\DeclareVoidOption{beamer}{% - \def\sa@class{beamer}% - \sa@previewfalse - \standalonebeamertrue -} -\DeclareStringOption[article]{class} -\def\sa@classoptionslist{} -\DeclareDefaultOption{% - \xdef\sa@classoptionslist{\sa@classoptionslist,\CurrentOption}% -} -\ProcessKeyvalOptions*\relax -\let\@classoptionslist\sa@classoptionslist +\let\IfStandalone\@firstoftwo +\def\sa@border@left{0.50001bp} +\let\sa@border@right\sa@border@left +\let\sa@border@top\sa@border@left +\let\sa@border@bottom\sa@border@left +\def\rem@bp#1bp\relax#2\@nnil{#1}% +\def\default@bp#1#2{% + \begingroup + \afterassignment\remove@to@nnil + \dimen@ #2bp\relax\@nnil + \expandafter + \endgroup + \expandafter + \def\expandafter#1\expandafter{\the\dimen@}% +} +\def\sa@readborder#1 #2 #3 #4 #5\@nnil{% + \ifx\\#2#3#4\\% + \default@bp\sa@border@left{#1}% + \let\sa@border@right\sa@border@left + \let\sa@border@top\sa@border@left + \let\sa@border@bottom\sa@border@left + \else + \ifx\\#4\\% + \default@bp\sa@border@left{#1}% + \let\sa@border@right\sa@border@left + \default@bp\sa@border@top{#2}% + \let\sa@border@bottom\sa@border@top + \else + \default@bp\sa@border@left{#1}% + \default@bp\sa@border@bottom{#2}% + \default@bp\sa@border@right{#3}% + \default@bp\sa@border@top{#4}% + \fi\fi +}% +\expandafter\ifx\csname ifluatex\endcsname\relax + \IfFileExists{ifluatex.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifluatex} + }{ + \begingroup + \expandafter\ifx\csname directlua\endcsname\relax + \endgroup + \expandafter\let\csname ifluatex\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \expandafter\let\csname ifluatex\expandafter\endcsname\csname iftrue\endcsname + \fi + } +\fi +\expandafter\ifx\csname ifpdf\endcsname\relax + \IfFileExists{ifpdf.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifpdf} + }{ + \begingroup + \expandafter\ifx\csname pdfoutput\endcsname\relax + \endgroup + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \ifnum\pdfoutput<1 + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iffalse\endcsname + \else + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iftrue\endcsname + \fi + \fi + } +\fi +\expandafter\ifx\csname ifxetex\endcsname\relax + \IfFileExists{ifxetex.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifxetex} + }{ + \begingroup + \expandafter\ifx\csname XeTeXrevision\endcsname\relax + \endgroup + \expandafter\let\csname ifxetex\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \expandafter\let\csname ifxetex\expandafter\endcsname\csname iftrue\endcsname + \fi + } +\fi +\let\sa@classoptionslist\@classoptionslist +\RequirePackage{xkeyval} +\newif\ifsa@preview +\newif\ifsa@crop +\newif\ifsa@multi +\newif\ifsa@varwidth +\newif\ifsa@ignorerest +\newif\ifsa@tikz +\newif\ifsa@pstricks +\newif\ifsa@convert +\newif\ifsa@float +\let\sa@beamertrue\standalonebeamertrue +\let\sa@beamerfalse\standalonebeamerfalse +\def\sa@clsoption{% + \define@key{standalone.cls}% +} +\sa@clsoption{border}{% + \sa@readborder#1 {} {} {} {} \@nnil +} +\def\sa@boolean#1#2{% + \sa@boolorvalue{#1}{#2}% + {\ClassError{standalone}{Invalid value '#2' for boolean key '#1'}{}}% +} +\def\sa@boolorvalue#1#2{% + \begingroup + \edef\@tempa{#2}% + \def\@tempb{true}% + \ifx\@tempa\@tempb + \endgroup + \csname sa@#1true\endcsname + \expandafter\@gobble + \else + \def\@tempb{false}% + \ifx\@tempa\@tempb + \endgroup + \csname sa@#1false\endcsname + \expandafter\expandafter + \expandafter\@gobble + \else + \endgroup + \expandafter\expandafter + \expandafter\@firstofone + \fi\fi +} +\sa@clsoption{preview}[true]{% + \sa@boolean{preview}{#1}% + \ifsa@preview + \setkeys{standalone.cls}{crop=false,float=false}% + \fi +} +\sa@previewtrue +\sa@clsoption{crop}[true]{% + \sa@boolean{crop}{#1}% + \ifsa@crop + \setkeys{standalone.cls}{preview=false,float=false}% + \fi +} +\sa@clsoption{ignorerest}[true]{% + \sa@boolean{ignorerest}{#1}% +} +\sa@clsoption{multi}[true]{% + \sa@boolorvalue{multi}{#1}{\sa@multitrue\AtBeginDocument{\standaloneenv{#1}}}% +} +\sa@clsoption{varwidth}[true]{% + \sa@boolorvalue{varwidth}{#1}{\sa@varwidthtrue\def\sa@width{#1}}% + \ifsa@varwidth + \def\sa@varwidth{\varwidth{\sa@width}}% + \def\sa@endvarwidth{\endvarwidth}% + \else + \let\sa@varwidth\@empty + \let\sa@endvarwidth\@empty + \fi +} +\let\sa@varwidth\@empty +\let\sa@endvarwidth\@empty +\sa@clsoption{tikz}[true]{% + \sa@boolean{tikz}{#1}% + \ifsa@tikz + \setkeys{standalone.cls}{multi=tikzpicture,varwidth=false}% + \fi +} +\sa@clsoption{pstricks}[true]{% + \sa@boolean{pstricks}{#1}% + \ifsa@pstricks + \setkeys{standalone.cls}{multi=pspicture,varwidth=false}% + \fi +} +\sa@clsoption{beamer}[true]{% + \sa@boolean{beamer}{#1}% + \ifstandalonebeamer + \def\sa@class{beamer}% + \setkeys{standalone.cls}{preview=false,crop=false,varwidth=false}% + \else + \begingroup + \def\@tempa{beamer}% + \ifx\@tempa\sa@class + \endgroup + \def\sa@class{article}% + \else + \endgroup + \fi + \fi +} +\sa@clsoption{class}{% + \def\sa@class{#1}% +} +\def\sa@class{article} +\sa@clsoption{float}[true]{% + \sa@boolean{float}{#1}% + \ifsa@float + \let\@float\sa@origfloat + \let\end@float\sa@origendfloat + \else + \ifx\@float\sa@nofloat\else + \let\sa@origfloat\@float + \fi + \ifx\end@float\sa@endnofloat\else + \let\sa@origendfloat\end@float + \fi + \let\@float\sa@nofloat + \let\end@float\sa@endnofloat + \fi +} +\def\sa@nofloat#1{% + \def\@captype{#1}% + \trivlist\item[]% + \@ifnextchar[{% + \begingroup + \def\@tempa[####1]{% + \endgroup + }\@tempa + }{}% +} +\def\sa@endnofloat{% + \endtrivlist +} +\sa@clsoption{convert}[true]{% + \setkeys{standalone.cls/convert}{#1}% +} +\sa@clsoption{disable@convert}[]{% + \typeout{Disable conversion} + \sa@convertfalse + \let\sa@converttrue\relax +} +\def\sa@convertoption{% + \define@key{standalone.cls/convert}% +} +\def\sa@convertvar#1#2{% + \define@key{standalone.cls/convert}{#1}{% + \@namedef{sa@convert@#1}{##1}% + }% + \@namedef{sa@convert@#1}{#2}% +} +\sa@convertoption{true}[]{% + \sa@converttrue +} +\sa@convertoption{false}[]{% + \sa@convertfalse +} +\sa@convertoption{png}[]{% + \setkeys{standalone.cls/convert}{true,outext={.png}}% +} +\sa@clsoption{png}[]{% + \setkeys{standalone.cls/convert}{png,#1}% +} +\sa@convertoption{jpg}[]{% + \setkeys{standalone.cls/convert}{true,outext={.jpg}}% +} +\sa@clsoption{jpg}[]{% + \setkeys{standalone.cls/convert}{jpg,#1}% +} +\sa@convertoption{gif}[]{% + \setkeys{standalone.cls/convert}{true,outext={.gif}}% +} +\sa@clsoption{gif}[]{% + \setkeys{standalone.cls/convert}{gif,#1}% +} +\sa@convertoption{onfailure}{% + \begingroup + \edef\@tempa{#1}% + \def\@tempb{error}% + \ifx\@tempa\@tempb + \endgroup + \let\sa@convert@failuremsg\ClassError + \else + \def\@tempb{warning}% + \ifx\@tempa\@tempb + \endgroup + \let\sa@convert@failuremsg\ClassWarning + \else + \def\@tempb{info}% + \ifx\@tempa\@tempb + \endgroup + \let\sa@convert@failuremsg\ClassInfo + \else + \def\@tempb{ignore}% + \ifx\@tempa\@tempb + \endgroup + \def\sa@convert@failuremsg##1##2##3{}% + \let\sa@convert@notfoundmsg\@gobbletwo + \else + \let\on@line\@empty + \ClassError{standalone}{Invalid value '\@tempa' for the 'onfailure' option.\MessageBreak + Valid values: 'error', 'warning', 'info', 'ignore'}{}% + \endgroup + \fi\fi\fi\fi +} +\let\sa@convert@failuremsg\ClassWarning +\let\sa@convert@notfoundmsg\ClassWarning +\sa@convertoption{defgsdevice}{% + \sa@defgsdevice#1\relax\relax +} +\def\sa@defgsdevice#1#2{% + \@namedef{sa@gsdevice@#1}{#2}% +} +\@namedef{sa@gsdevice@.jpg}{jpeg}% +\@namedef{sa@gsdevice@.png}{png16m}% +\sa@convertoption{imagemagick}[]{% + \def\sa@convert@command{\convertexe\space -density \density\space \infile\space \ifx\size\empty\else -resize \size\fi\space -quality 90 \outfile}% +} +\sa@convertoption{ghostscript}[]{% + \def\sa@convert@command{\gsexe\space -dSAFER -dBATCH -dNOPAUSE -sDEVICE=\gsdevice\space -r\density\space -sOutputFile=\outfile\space \infile}% +} +\sa@convertvar{subjobname}{\jobname} +\sa@convertvar{size}{} +\sa@convertvar{inname}{\subjobname} +\sa@convertvar{infile}{\inname\inext} +\sa@convertvar{outext}{.png} +\sa@convertvar{outname}{\inname} +\sa@convertvar{outfile}{\outname\ifsa@multi-\@percentchar d\fi\outext} +\sa@convertvar{density}{300} +\sa@convertvar{gsdevice}{% + \expandafter\ifx\csname sa@gsdevice@\outext\endcsname\relax + \expandafter\@gobble\outext + \else + \csname sa@gsdevice@\outext\endcsname + \fi +} +\ifluatex + \sa@convertvar{latex}{lualatex} + \sa@convertvar{inext}{.pdf} + \sa@convertvar{precommand}{} + \setkeys{standalone.cls/convert}{imagemagick} +\else +\ifpdf + \sa@convertvar{latex}{pdflatex} + \sa@convertvar{inext}{.pdf} + \sa@convertvar{precommand}{} + \setkeys{standalone.cls/convert}{imagemagick} +\else +\ifxetex + \sa@convertvar{latex}{xelatex} + \sa@convertvar{inext}{.pdf} + \sa@convertvar{precommand}{} + \setkeys{standalone.cls/convert}{imagemagick} +\else + \sa@convertvar{latex}{latex} + \sa@convertvar{inext}{.ps} + \sa@convertvar{precommand}{dvips \jobname.dvi} + \setkeys{standalone.cls/convert}{ghostscript} +\fi\fi\fi \begingroup -\xdef\@tempa{[\sa@classoptionslist]{\sa@class}} -\expandafter -\endgroup -\expandafter\LoadClass\@tempa +\ifluatex + \csname @tempswa\directlua{ + if os.type == "windows" then + tex.sprint("true") + else + tex.sprint("false") + end + }\endcsname +\else + \IfFileExists{/dev/null}{\@tempswafalse}{\@tempswatrue}% +\fi +\if@tempswa + \endgroup + \sa@convertvar{convertexe}{imgconvert} + \sa@convertvar{gsexe}{gswin32c} +\else + \endgroup + \sa@convertvar{convertexe}{convert} + \sa@convertvar{gsexe}{gs} +\fi +\newcommand*\standaloneenv[1]{% + \begingroup + \edef\@tempa{\endgroup\noexpand\@for\noexpand\@tempa:=\zap@space#1 \@empty}% + \@tempa\do{\expandafter\@standaloneenv\expandafter{\@tempa}}% + \setkeys{standalone.cls}{multi}% +} +\@onlypreamble\standaloneenv +\newcommand*{\standaloneconfig}{\setkeys{standalone.cls}} +\let\@standaloneenv\@gobble +\newcount\sa@internal \let\standalone\empty \let\endstandalone\relax -\input{standalone.cfg} +\def\sa@width{\linewidth} +\InputIfFileExists{standalone.cfg}{}{} +\begingroup +\def\@tempa{\endgroup\setkeys*{standalone.cls}} +\expandafter\expandafter\expandafter\@tempa +\expandafter\expandafter\expandafter{\csname opt@standalone.cls\endcsname} +\let\@classoptionslist\XKV@rm +\disable@keys{standalone.cls}{crop,preview,class,beamer,ignorerest} +\AtBeginDocument{% + \disable@keys{standalone.cls}{multi}% +} +\expandafter\expandafter\expandafter\LoadClass +\expandafter\expandafter\expandafter[% +\expandafter\@classoptionslist +\expandafter]\expandafter{\sa@class} +\ifsa@varwidth + \RequirePackage{varwidth} +\fi +\ifsa@tikz + \RequirePackage{tikz} +\fi +\ifsa@pstricks + \RequirePackage{pstricks} +\fi \ifsa@preview - \@ifundefined{endstandalone}{% - \renewenvironment{standalone} - {\preview } - {\endpreview} - }{}% - \RequirePackage{preview} - \ifx\sa@border\relax\else - \begingroup - \def\rem@bp#1bp\relax#2\@nnil{#1}% - \def\default@bp#1{\expandafter\rem@bp\the\dimexpr#1 bp\relax bp\relax\@nnil}% - \def\sa@readborder#1 #2 #3 #4 {% - \ifx\\#2#3#4\\% - \@defaultunits\global\PreviewBorder=\dimexpr#1 bp\relax\@nnil% - \else - \ifx\\#4\\% - \xdef\PreviewBbAdjust{-\default@bp{#1} -\default@bp{#2} \default@bp{#1} \default@bp{#2}}% - \else - \xdef\PreviewBbAdjust{-\default@bp{#1} -\default@bp{#2} \default@bp{#3} \default@bp{#4}}% - \fi\fi +\RequirePackage{preview} +\ifsa@multi\else + \@ifundefined{endstandalone}{% + \renewenvironment{standalone} + {\preview\sa@varwidth} + {\sa@endvarwidth\endpreview} + }{}% TODO: Add info message? +\fi +\def\PreviewBbAdjust{-\sa@border@left\space -\sa@border@bottom\space \sa@border@right\space \sa@border@top}% +\def\@standaloneenv#1{% + \expandafter\ifx\csname sa@orig@#1\endcsname\relax + \expandafter\let\csname sa@orig@#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname sa@orig@end#1\expandafter\endcsname\csname end#1\endcsname + \fi + \expandafter\def\csname #1\endcsname{% + \ifnum\sa@internal=0 + \preview + \sa@varwidth + \fi + \advance\sa@internal\@ne + \csname sa@orig@#1\endcsname }% - \@firstofone{\expandafter\sa@readborder\sa@border} {} {} {} {} \relax - \endgroup - \fi + \expandafter\def\csname end#1\endcsname{% + \csname sa@orig@end#1\endcsname + \advance\sa@internal\m@ne + \ifnum\sa@internal=0 + \sa@endvarwidth + \endpreview + \fi + }% +}% +\fi +\ifsa@crop +\newbox\sa@box +\pagestyle{empty} +\hoffset=-72.27pt +\voffset=-72.27pt +\topmargin=0pt +\headheight=0pt +\headsep=0pt +\marginparsep=0pt +\marginparwidth=0pt +\footskip=0pt +\marginparpush=0pt +\oddsidemargin=0pt +\evensidemargin=0pt +\topskip=0pt +\textheight=\maxdimen +\def\sa@boxit{% + \setbox\sa@box\hbox\bgroup\color@setgroup\sa@varwidth +}% +\def\endsa@boxit{% + \sa@endvarwidth\color@endgroup\egroup +}% +\renewenvironment{standalone}{% + \ifsa@multi + \ifsa@ignorerest + \sa@boxit + \fi + \else + \sa@boxit + \fi +}{% + \ifsa@multi + \ifsa@ignorerest + \endsa@boxit + \fi + \else + \endsa@boxit + \sa@handlebox + \fi +} +\ifsa@multi\else + \sa@ignorerestfalse +\fi +\ifsa@ignorerest + \def\@standaloneenv#1{% + \expandafter\ifx\csname sa@orig@#1\endcsname\relax + \expandafter\let\csname sa@orig@#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname sa@orig@end#1\expandafter\endcsname\csname end#1\endcsname + \fi + \expandafter\def\csname #1\endcsname{% + \ifnum\sa@internal=0 + \edef\@tempa{\endgroup + \noexpand\endsa@boxit + \begingroup + \def\noexpand\@currenvir{\@currenvir}% + \def\noexpand\@currenvline{\@currenvline}% + }% + \@tempa + \sa@boxit + \fi + \advance\sa@internal\@ne + \csname sa@orig@#1\endcsname + }% + \expandafter\def\csname end#1\endcsname{% + \csname sa@orig@end#1\endcsname + \advance\sa@internal\m@ne + \ifnum\sa@internal=0 + \endsa@boxit + \sa@handlebox + \aftergroup\sa@boxit + \fi + }% + }% +\else + \def\@standaloneenv#1{% + \expandafter\ifx\csname sa@orig@#1\endcsname\relax + \expandafter\let\csname sa@orig@#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname sa@orig@end#1\expandafter\endcsname\csname end#1\endcsname + \fi + \expandafter\def\csname #1\endcsname{% + \ifnum\sa@internal=0 + \sa@boxit + \fi + \advance\sa@internal\@ne + \csname sa@orig@#1\endcsname + }% + \expandafter\def\csname end#1\endcsname{% + \csname sa@orig@end#1\endcsname + \advance\sa@internal\m@ne + \ifnum\sa@internal=0 + \endsa@boxit + \sa@handlebox + \fi + }% + }% +\fi +\def\sa@handlebox{% + \sbox\sa@box{% + \hskip\sa@border@left + \@tempdima=\ht\sa@box + \advance\@tempdima\sa@border@top\relax + \ht\sa@box=\@tempdima + \@tempdima=\dp\sa@box + \advance\@tempdima\sa@border@bottom\relax + \dp\sa@box=\@tempdima + \raise\dp\sa@box + \box\sa@box + \hskip\sa@border@right + }% + \sa@placebox +} +\ifcase0% + \ifpdf\else\ifluatex\else\ifxetex\else 1\fi\fi\fi + \relax + \def\sa@placebox{% + \newpage + \global\pdfpagewidth=\wd\sa@box + \global\pdfpageheight=\ht\sa@box + \global\paperwidth=\wd\sa@box + \global\paperheight=\ht\sa@box + \global\hsize=\wd\sa@box + \global\vsize=\ht\sa@box + \global\@colht=\ht\sa@box + \global\@colroom=\ht\sa@box + \noindent\usebox\sa@box + \newpage + } + \else + \def\sa@placebox{% + \global\paperwidth=\wd\sa@box + \global\paperheight=\ht\sa@box + \global\@colht=\maxdimen + \global\@colroom=\maxdimen + \global\hsize=\maxdimen + \global\vsize=\maxdimen + \sa@papersize + \ifsa@multi + \begingroup + \@tempdima0.99626\paperwidth + \@tempdimb0.99626\paperheight + \edef\@tempc{\strip@pt\@tempdima}% + \edef\@tempd{\strip@pt\@tempdimb}% + \advance\@tempdima by .998pt + \advance\@tempdimb by .998pt + \def\strip@float##1.##2\relax{##1}% + \edef\@tempa{\expandafter\strip@float\the\@tempdima\relax}% + \edef\@tempb{\expandafter\strip@float\the\@tempdimb\relax}% + \special{ps::% + \@percentchar\@percentchar PageBoundingBox: 0 0 \@tempa\space\@tempb^^J% + \@percentchar\@percentchar HiResPageBoundingBox: 0 0 \@tempc\space\@tempd^^J% + \@percentchar\@percentchar BeginPageSetup^^J% + << /PageSize [\@tempc\space\@tempd] + >> setpagedevice^^J%<< + 0 0 bop^^J% + \@percentchar\@percentchar EndPageSetup}% + \endgroup + \fi + \topskip=0pt + \noindent\sa@ps@content + \newpage + } +\def\sa@ps@content{% + \noindent\usebox\sa@box + \global\def\sa@ps@content{% + \@tempdima\sa@yoffset + \advance\@tempdima-\topskip + \dp\sa@box\z@ + \ht\sa@box\z@ + \noindent\lower\@tempdima\copy\sa@box + }% +} +\def\sa@papersize{% + \global\let\sa@papersize\relax + \special{papersize=\the\paperwidth,\the\paperheight}% + \global\sa@yoffset=\paperheight + \special{ps::% + \@percentchar\@percentchar HiResBoundingBox: 0 0 \the\paperwidth\space\the\paperheight^^J% + }% +} +\newlength\sa@yoffset +\fi \fi \ifstandalonebeamer \newenvironment{standaloneframe}{% @@ -114,19 +669,108 @@ \begin{frame}#1[environment=standaloneframe,#2]% }% \fi -\let\sa@cls@orig@document\document -\let\sa@cls@orig@enddocument\enddocument -\def\document{% - \sa@cls@orig@document - \let\documentclass\sa@documentclass % TODO: really required? - \sa@cls@afterbegindocument +\expandafter\ifx\csname sa@internal@run\endcsname\relax\else + \sa@convertfalse +\fi +\ifsa@convert +\begingroup +\let\on@line\@gobble +\def\sa@convert#1{% + \IfFileExists{\outfile}{% + \edef\filemodbefore{\csname pdffilemoddate\endcsname{\outfile}}% + }{% + \IfFileExists{\outname\outext}{% + \edef\filemodbefore{\csname pdffilemoddate\endcsname{\outname\outext}}% + }{% + \IfFileExists{\outname-0\outext}{% + \edef\filemodbefore{\csname pdffilemoddate\endcsname{\outname-0\outext}}% + }{% + \IfFileExists{\outname-1\outext}{% + \edef\filemodbefore{\csname pdffilemoddate\endcsname{\outname-1\outext}}% + }{% + \def\filemodbefore{}% + }}}}% + \immediate\write18{\sa@convert@latex\space -jobname '\sa@convert@subjobname' '\noexpand\expandafter\def\noexpand\csname sa@internal@run\noexpand\endcsname{1}\noexpand\input{\jobname}'}% + \edef\sa@convert@precommand{\sa@convert@precommand}% + \ifx\sa@convert@precommand\@empty\else + \immediate\write18{\sa@convert@precommand}% + \fi + \immediate\write18{\sa@convert@command}% + \@tempswafalse + \IfFileExists{\outfile}{% + \@tempswatrue + }{% + \IfFileExists{\outname\outext}{% + \@tempswatrue + \def\outfile{\outname\outext}% + }{% + \IfFileExists{\outname-0\outext}{% + \@tempswatrue + \def\outfile{\outname-0\outext}% + }{% + \IfFileExists{\outname-1\outext}{% + \@tempswatrue + \def\outfile{\outname-1\outext}% + }{% + }}}}% + \if@tempswa + \edef\filemodafter{\csname pdffilemoddate\endcsname{\outfile}}% + \ifx\filemodbefore\filemodafter + \expandafter\ifx\csname pdffilemoddate\endcsname\relax\else + \sa@convert@failuremsg{standalone}{#1}{}% + \fi + \else + \ClassInfo{standalone}{Conversion successfull.}% + \fi + \else + \sa@convert@failuremsg{standalone}{#1}{}% + \fi } -\def\enddocument{% - \sa@cls@beforeenddocument - \sa@cls@orig@enddocument +\let\subjobname\sa@convert@subjobname +\let\infile\sa@convert@infile +\let\inext\sa@convert@inext +\let\inname\sa@convert@inname +\let\gsdevice\sa@convert@gsdevice +\let\convertexe\sa@convert@convertexe +\let\gsexe\sa@convert@gsexe +\let\density\sa@convert@density +\let\size\sa@convert@size +\let\outext\sa@convert@outext +\let\outname\sa@convert@outname +\let\outfile\sa@convert@outfile +\let\percent\@percentchar +\ifcase0% + \expandafter\ifx\csname pdfshellescape\endcsname\relax + \ifeof18 \else 3\fi + \else\the\pdfshellescape\fi +\relax% 0 + \sa@convert@failuremsg + {standalone}{Shell escape disabled! Cannot convert file '\infile'.}{}% +\or% 1 + \sa@convert{Conversion unsuccessful!\MessageBreak + There might be something wrong with your\MessageBreak + conversation software or the file permissions!}% +\else% 2 or 3 + \sa@convert{Conversion failed! Please ensure that shell escape\MessageBreak is enabled (e.g. use '-shell-escape').}% +\fi +\endgroup +\expandafter\stop +\fi +\begingroup +\toks@\expandafter{% + \document + \sa@cls@afterbegindocument } -\def\sa@cls@afterbegindocument{\expandafter\standalone\ignorespaces} -\def\sa@cls@beforeenddocument{\unskip\endstandalone} +\xdef\document{\the\toks@}% +\toks@\expandafter{% + \expandafter + \sa@cls@beforeenddocument + \enddocument +} +\xdef\enddocument{\the\toks@}% +\endgroup +\def\sa@cls@afterbegindocument{\standalone\ignorespaces} +\def\sa@cls@beforeenddocument{\ifhmode\unskip\fi\endstandalone} \endinput %% %% End of file `standalone.cls'. diff --git a/Master/texmf-dist/tex/latex/standalone/standalone.sty b/Master/texmf-dist/tex/latex/standalone/standalone.sty index ce7c503e2bb..fbc050b6861 100644 --- a/Master/texmf-dist/tex/latex/standalone/standalone.sty +++ b/Master/texmf-dist/tex/latex/standalone/standalone.sty @@ -1,115 +1,260 @@ -%% -%% This is file `standalone.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% standalone.dtx (with options: `sty') -%% -%% Copyright (c) 2010 by Martin Scharrer <martin@scharrer-online.de> -%% +%% Copyright (C) 2011 by Martin Scharrer <martin@scharrer-online.de> +%% --------------------------------------------------------------------------- %% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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.3c or later is part of all distributions of LaTeX -%% version 2008/05/04 or later. -%% +%% 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 Martin Scharrer. -%% -%% This work consists of the files standalone.dtx, standalone.ins -%% and the derived file standalone.sty. -%% -% $Id: standalone.dtx 2451 2011-04-07 11:40:38Z martin $ +%% +%% This work consists of the files <+name+>.dtx and <+name+>.ins +%% and the derived filebase <+name+>.sty. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{standalone} [2011/04/07 v0.4a Package to include TeX sub-files with preambles] -\expandafter\newif\csname ifstandalone\endcsname -\standalonefalse +\ProvidesPackage{standalone}[% + 2011/12/21 + v1.0 + Package to include TeX sub-files with preambles] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@ifundefined{ifstandalone}{% + \expandafter\newif\csname ifstandalone\endcsname + \standalonefalse +}{} \@ifundefined{ifstandalonebeamer}{% -\expandafter\newif\csname ifstandalonebeamer\endcsname -\standalonebeamerfalse -}{}% -\@ifundefined{onlyifstandalone} - {\let\onlyifstandalone\@gobble} - {} + \expandafter\newif\csname ifstandalonebeamer\endcsname + \standalonebeamerfalse +}{} +\@ifundefined{onlyifstandalone}{% + \let\onlyifstandalone\@gobble +}{} +\@ifundefined{IfStandalone}{% + \let\IfStandalone\@secondoftwo +}{} +\expandafter\ifx\csname ifluatex\endcsname\relax + \IfFileExists{ifluatex.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifluatex} + }{ + \begingroup + \expandafter\ifx\csname directlua\endcsname\relax + \endgroup + \expandafter\let\csname ifluatex\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \expandafter\let\csname ifluatex\expandafter\endcsname\csname iftrue\endcsname + \fi + } +\fi +\expandafter\ifx\csname ifpdf\endcsname\relax + \IfFileExists{ifpdf.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifpdf} + }{ + \begingroup + \expandafter\ifx\csname pdfoutput\endcsname\relax + \endgroup + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \ifnum\pdfoutput<1 + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iffalse\endcsname + \else + \expandafter\let\csname ifpdf\expandafter\endcsname\csname iftrue\endcsname + \fi + \fi + } +\fi +\expandafter\ifx\csname ifxetex\endcsname\relax + \IfFileExists{ifxetex.sty}{\@firstoftwo}{\@secondoftwo}{% + \RequirePackage{ifxetex} + }{ + \begingroup + \expandafter\ifx\csname XeTeXrevision\endcsname\relax + \endgroup + \expandafter\let\csname ifxetex\expandafter\endcsname\csname iffalse\endcsname + \else + \endgroup + \expandafter\let\csname ifxetex\expandafter\endcsname\csname iftrue\endcsname + \fi + } +\fi \newif\ifsa@subpreambles \newif\ifsa@sortsubpreambles \newif\ifsa@printsubpreambles -\DeclareOption{subpreambles}{% - \sa@subpreamblestrue +\newif\ifsa@group +\newif\ifsa@obeyclassoptions +\newif\ifsa@multi +\newif\ifsa@tikz +\newif\ifsa@varwidth +\newif\ifsa@comments +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{xkeyval} +\def\sa@pkgoption{% + \define@key{standalone.sty}% +} +\def\sa@boolean#1#2{% + \sa@boolorvalue{#1}{#2}% + {\ClassError{standalone}{Invalid value '#2' for boolean key '#1'}{}}% +} +\def\sa@boolorvalue#1#2{% + \begingroup + \edef\@tempa{#2}% + \def\@tempb{true}% + \ifx\@tempa\@tempb + \endgroup + \csname sa@#1true\endcsname + \expandafter\@gobble + \else + \def\@tempb{false}% + \ifx\@tempa\@tempb + \endgroup + \csname sa@#1false\endcsname + \expandafter\expandafter + \expandafter\@gobble + \else + \endgroup + \expandafter\expandafter + \expandafter\@firstofone + \fi\fi } -\DeclareOption{sort}{% - \sa@subpreamblestrue - \sa@sortsubpreamblestrue +\sa@pkgoption{sort}[true]{% + \sa@boolean{sortsubpreambles}{#1}% + \ifsa@sortsubpreambles + \sa@subpreamblestrue + \fi } -\DeclareOption{print}{% - \sa@subpreamblestrue - \sa@printsubpreamblestrue +\sa@pkgoption{print}[true]{% + \sa@boolean{printsubpreambles}{#1}% + \ifsa@printsubpreambles + \sa@subpreamblestrue + \fi } -\DeclareOption{comments}{% - \def\sa@percent{\@makeother\%}% +\sa@pkgoption{subpreambles}[true]{% + \sa@boolean{subpreambles}{#1}% } -\DeclareOption{nocomments}{% - \def\sa@percent{}% +\sa@pkgoption{group}[true]{% + \sa@boolean{group}{#1}% } -\DeclareOption{mode=none}{% - \let\sa@mode\relax +\sa@grouptrue +\sa@pkgoption{comments}[true]{% + \sa@boolean{comments}{#1}% + \ifsa@comments + \def\sa@percent{\@makeother\%}% + \else + \def\sa@percent{\catcode`\%=14\relax}% + \fi } -\DeclareOption{mode=pdf|tex}{% - \def\sa@mode{0}% +\sa@pkgoption{nocomments}[]{% + \begingroup + \def\@tempa{#1}% + \ifx\@tempa\@empty\else + \PackageWarning{standalone}{Unwanted value of 'nocomments' was ignored}{}A + \fi + \endgroup + \setkeys{standalone.sty}{comments=false}% } -\DeclareOption{mode=tex}{% +\sa@pkgoption{mode}{% + \begingroup + \expandafter\let\expandafter\@tempa\csname sa@mode@#1\endcsname + \ifx\@tempa\relax + \endgroup + \PackageError{standalone}{Wrong value for option 'mode'}{}% + \else + \expandafter + \endgroup + \@tempa + \fi +} +\def\sa@mode@none{% + \let\sa@mode\relax% +} +\def\sa@mode@tex{% \def\sa@mode{1}% } -\DeclareOption{mode=pdf}{% +\def\sa@mode@image{% \def\sa@mode{2}% } -\DeclareOption{mode=build}{% +\@namedef{sa@mode@image|tex}{% + \def\sa@mode{0}% +} +\def\sa@mode@build{% \def\sa@mode{3}% } -\DeclareOption{mode=buildnew}{% +\def\sa@mode@buildmissing{% \def\sa@mode{4}% } -\ProcessOptions*\relax +\def\sa@mode@buildnew{% + \ifxetex + \PackageWarning{standalone}{The 'mode=buildnew' option is not available for XeTeX.\MessageBreak + Therefore 'mode=build' will be used instead}% + \def\sa@mode{3}% + \else + \def\sa@mode{5}% + \fi +} +\sa@mode@tex +\sa@pkgoption{obeyclassoptions}[true]{% + \sa@boolean{obeyclassoptions}{#1}% +} +\sa@pkgoption{extension}{% + \def\sa@graphicext{#1}% +} +\def\sa@buildvar#1#2{% + \define@key{standalone.sty/build}{#1}{% + \@namedef{sa@build@#1}{##1}% + }% + \@namedef{sa@build@#1}{#2}% +} +\sa@buildvar{jobname}{\file} +\sa@buildvar{latex}{} +\sa@buildvar{latexoptions}{% + -interaction=batchmode -shell-escape -jobname '\buildjobname' +} +\sa@buildvar{command}{% + \latex\space\latexoptions\space\file +} +%% '\string\PassOptionsToClass{border=0pt}{standalone}\string\input{\image}' +\def\sa@build@postcommand{} +\ifpdf + \def\sa@graphicext{.pdf} + \ifluatex + \def\sa@build@latex{lualatex} + \else + \def\sa@build@latex{pdflatex} + \fi +\else +\ifxetex + \def\sa@graphicext{.pdf} + \def\sa@build@latex{xelatex} +\else + \def\sa@graphicext{.eps} + \def\sa@build@latex{latex} + \def\sa@build@postcommand{dvips -o '\file.eps' '\file.dvi'} +\fi\fi +\ProcessOptionsX*<standalone.sty>\relax +\disable@keys{standalone.sty}{subpreambles,print,sort} \ifsa@printsubpreambles \ifsa@sortsubpreambles\else \@ifundefined{sa@percent}{% - \def\sa@percent{\@makeother\%}% + \setkeys{standalone.sty}{comments=true}% }{}% \fi \fi -\@ifundefined{finkpath}{% - \def\sa@rmspace#1 \empty{#1}% - \def\sa@chkext#1.#2 \empty#3{% - \ifx\empty#3\empty - \sa@rmspace#1\empty.#2% - \else - #1.#2% - \expandafter\sa@rmrest - \fi - }% - \def\sa@rmrest tex \empty{}% - \def\sa@filepath{\expandafter\sa@chkext\@filef@und\empty.tex \empty\empty}% +\@ifclassloaded{standalone}{% + \def\standaloneconfig{% + \setkeys{standalone.sty,standalone.cls}% + }% }{% - \def\sa@filepath{\expandafter\expandafter\expandafter\sa@rmdotslash\expandafter\finkdir\finkfile\empty./\empty}% - \def\sa@rmdotslash#1./#2\empty{% - \ifx\empty#1\empty - \sa@@rmdotslash#2% - \else - \ifx\empty#2\empty - #1% - \else - \sa@@rmdotslash#1./#2% - \fi - \fi - } - \def\sa@@rmdotslash#1./\empty{#1}% + \newcommand*{\standaloneconfig}{% + \setkeys{standalone.sty}% + }% } +\RequirePackage{currfile} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsa@subpreambles \newwrite\sa@out \def\sa@write{\immediate\write\sa@out}% @@ -121,6 +266,7 @@ {\expandafter\sa@gobbleeol\expandafter\sa@removeonlyifstandalone\expandafter^^J\@gobble}% } \fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsa@sortsubpreambles \newcommand{\sa@usepackagewithoutoptions}[2][]{% \sa@orig@usepackage{#2}% @@ -381,35 +527,59 @@ } \fi \fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\sa@gobbleeol#1^^J{% \@ifnextchar^^J% {\sa@gobbleeol{#1}}{#1}% } -\def\sa@gobbleline#1^^J{}% +\def\sa@endinput{% + \@makeother\%% + \@makeother\^^A% + \sa@@endinput +}% +\def\sa@@endinput#1^^J{% + \endgroup + \endinput +} +\def\sa@substbox{% + \leavevmode\hbox to 1pt{\vbox to 1pt{}}% +}% \long\def\standaloneignore#1\documentclass{% \sa@documentclass } \@namedef{standaloneignore\space}{\standaloneignore} \newcommand{\sa@documentclass}[2][]{% \let\document\sa@document + \let\sa@subfile@options\@empty + \ifsa@obeyclassoptions + \begingroup + \edef\@tempa{#2}% + \edef\@tempb{standalone}% + \ifx\@tempa\@tempb + \endgroup + \def\sa@subfile@options{#1}% + \else + \endgroup + \fi + \fi \begingroup \ifsa@subpreambles - \@ifundefined{sa@written@\sa@filepath}% + \@ifundefined{sa@written@\currfilepath}% {% \ifsa@printsubpreambles \ifsa@sortsubpreambles \begingroup - \edef\@tempa{^^J\@percentchar\space Preamble from file '\sa@filepath'^^J}% + \edef\@tempa{^^J\@percentchar\space Preamble from file '\currfilepath'^^J}% \expandafter\g@addto@macro\expandafter\sa@preamble\expandafter{\@tempa}% \endgroup \else - \sa@write{^^J\@percentchar\space Preamble from file '\sa@filepath'}% + \sa@write{^^J\@percentchar\space Preamble from file '\currfilepath'}% \fi \else - \sa@write{\string\subpreamble{\sa@filepath}}% + \sa@write{\string\subpreamble{\currfilepath}}% \fi }{}% - \global\@namedef{subpreamble@\sa@filepath}{}% + \global\@namedef{subpreamble@\currfilepath}{}% \ifsa@printsubpreambles \endlinechar=`\^^J% \else @@ -426,8 +596,8 @@ \def\@tempa{#2}% \ifx\@tempa\sa@gobbleto \ifsa@subpreambles - \expandafter\g@addto@macro\csname subpreamble@\sa@filepath\endcsname{#1}% - \@ifundefined{sa@written@\sa@filepath}% + \expandafter\g@addto@macro\csname subpreamble@\currfilepath\endcsname{#1}% + \@ifundefined{sa@written@\currfilepath}% {% \ifsa@printsubpreambles \ifsa@sortsubpreambles @@ -444,33 +614,29 @@ \sa@write{\string\endsubpreamble}% \fi }{}% - \global\@namedef{sa@written@\sa@filepath}{}% + \global\@namedef{sa@written@\currfilepath}{}% \ifsa@printsubpreambles \def\next{% - \endgroup - \PackageWarning{standalone}{Running 'standalone' package in sub-preamble print mode. All body content of file `\sa@filepath' is ignored!}{}{}% - \hbox to 1pt{\vbox to 1pt{}}% - \endinput - %\sa@gobbleline + \PackageWarning{standalone}{Running 'standalone' package in sub-preamble print mode. All body content of file `\currfilepath' is ignored!}{}{}% + \sa@substbox + \sa@endinput }% \else \expandafter \ifx - \csname prevsubpreamble@\sa@filepath \expandafter\endcsname - \csname subpreamble@\sa@filepath \endcsname + \csname prevsubpreamble@\currfilepath\expandafter\endcsname + \csname subpreamble@\currfilepath\endcsname \def\next{\expandafter\endgroup\expandafter\begin\expandafter{\sa@gobbleto}}% \else - %\expandafter\show\csname prevsubpreamble@\sa@filepath \endcsname - %\expandafter\show\csname subpreamble@\sa@filepath \endcsname + %\expandafter\show\csname prevsubpreamble@\currfilepath\endcsname + %\expandafter\show\csname subpreamble@\currfilepath\endcsname \def\next{% - \endgroup - \PackageWarning{standalone}{Sub-preamble of file '\sa@filepath' has changed. Content will be ignored. Please rerun LaTeX!}{}{}% + \PackageWarning{standalone}{Sub-preamble of file '\currfilepath' has changed. Content will be ignored. Please rerun LaTeX!}{}{}% \immediate\write\@mainaux{% \@percentchar\space standalone package info: Rerun LaTeX! }% - \hbox to 1pt{\vbox to 1pt{}}% - \endinput - %\sa@gobbleline + \sa@substbox + \sa@endinput }% \fi \fi @@ -479,8 +645,8 @@ \fi \else \ifsa@subpreambles - \expandafter\g@addto@macro\csname subpreamble@\sa@filepath\endcsname{#1\begin{#2}}% - \@ifundefined{sa@written@\sa@filepath}% + \expandafter\g@addto@macro\csname subpreamble@\currfilepath\endcsname{#1\begin{#2}}% + \@ifundefined{sa@written@\currfilepath}% {\sa@write{\unexpanded{#1\begin{#2}}}}{}% \fi \def\next{\sa@gobble}% @@ -515,30 +681,404 @@ {} \let\sa@orig@document\document \let\sa@orig@enddocument\enddocument -\def\document{% - \sa@orig@document - \let\documentclass\sa@documentclass - \ignorespaces +\begingroup +\toks@\expandafter{% + \document + \let\documentclass\sa@documentclass + \ignorespaces +} +\xdef\document{\the\toks@}% +\endgroup +\ifsa@obeyclassoptions +\IfFileExists{varwidth.sty}{% + \RequirePackage{varwidth}% +}{} +\define@key{standalone.sty/class}{12pt}[]{% + \def\sa@subfile@size{12}% +} +\define@key{standalone.sty/class}{11pt}[]{% + \def\sa@subfile@size{11}% +} +\define@key{standalone.sty/class}{10pt}[]{% + \def\sa@subfile@size{10}% +} +\define@key{standalone.sty/class}{class}{% + \def\sa@subfile@class{#1}% +} +\define@key{standalone.sty/class}{multi}[true]{% + \sa@boolorvalue{multi}{#1}{% + \sa@multitrue\AtEndOfClass{\standaloneenv{#1}}% + }% + \ifsa@multi + \def\sa@requestedpage{1}% + \def\standaloneenv##1{% + \begingroup + \edef\@tempa{\endgroup\noexpand\@for\noexpand\@tempa:=\zap@space##1 \@empty}% + \@tempa\do{\expandafter\@standaloneenv\expandafter{\@tempa}}% + }% + \def\@standaloneenv##1{% + \expandafter\ifx\csname sa@orig@##1\endcsname\relax + \expandafter\let\csname sa@orig@##1\expandafter\endcsname\csname ##1\endcsname + \expandafter\let\csname sa@orig@end##1\expandafter\endcsname\csname end##1\endcsname + \fi + \expandafter\def\csname ##1\endcsname{% + \ifnum\sa@internal=0 + \global\advance\sa@pagenum\@ne + \sa@boxit + \fi + \advance\sa@internal\@ne + \csname sa@orig@##1\endcsname + }% + \expandafter\def\csname end##1\endcsname{% + \csname sa@orig@end##1\endcsname + \advance\sa@internal\m@ne + \ifnum\sa@internal=0 + \endsa@boxit + \ifx\sa@requestedpage\sa@allpages + \usebox\sa@box + \else + \ifnum\sa@requestedpage=\sa@pagenum + \usebox\sa@box + \fi\fi + \fi + \@ignoretrue + }% + }% + \else + \let\standaloneenv\@gobble + \fi } +\newcount\sa@internal +\newcount\sa@pagenum +\def\sa@allpages{-1}% +\let\sa@box\@tempboxa +\def\sa@boxit{% + \setbox\sa@box\hbox\bgroup\color@setgroup\sa@varwidth +}% +\def\endsa@boxit{% + \sa@endvarwidth\color@endgroup\egroup +}% +\define@key{standalone.sty/class}{tikz}[true]{% + \sa@boolean{tikz}{#1}% + \ifsa@tikz + \setkeys*{standalone.sty/class}{multi=tikzpicture,varwidth=false}% + \fi +} +\define@key{standalone.sty/class}{varwidth}[true]{% + \sa@boolorvalue{varwidth}{#1}{\sa@varwidthtrue\def\sa@width{#1}}% + \ifsa@varwidth + \expandafter\ifx\csname ver@varwidth.sty\endcsname\relax + \PackageWarning{standalone}{A standalone file which uses the varwidth package\MessageBreak + has been encountered while obeyclassoptions=true.\MessageBreak + Please load this package in the preamble.\MessageBreak + The file in question is loaded}% + \sa@varwidthfalse + \fi + \fi + \ifsa@varwidth + \def\sa@varwidth{\varwidth{\sa@width}}% + \def\sa@endvarwidth{\endvarwidth}% + \else + \let\sa@varwidth\@empty + \let\sa@endvarwidth\@empty + \fi +} +\let\sa@varwidth\@empty +\let\sa@endvarwidth\@empty +\def\sa@width{\linewidth} +\define@key{standalone.sty/class}{beamer}[true]{% + \sa@boolean{beamer}{#1}% + \ifstandalonebeamer + \setkeys*{standalone.sty/class}{class=beamer,preview=false,crop=false,varwidth=false}% + \fi + \standalonebeamerfalse +} +\let\sa@beamertrue\standalonebeamertrue +\let\sa@beamerfalse\standalonebeamerfalse +\define@key{standalone.sty/class}{border}{% + \sa@readborder#1 {} {} {} {} \@nnil +} +\def\sa@border@left{0.50001bp} +\let\sa@border@right\sa@border@left +\let\sa@border@top\sa@border@left +\let\sa@border@bottom\sa@border@left +\def\rem@bp#1bp\relax#2\@nnil{#1}% +\def\default@bp#1#2{% + \begingroup + \afterassignment\remove@to@nnil + \dimen@ #2bp\relax\@nnil + \expandafter + \endgroup + \expandafter + \def\expandafter#1\expandafter{\the\dimen@}% +} +\def\sa@readborder#1 #2 #3 #4 #5\@nnil{% + \ifx\\#2#3#4\\% + \default@bp\sa@border@left{#1}% + \let\sa@border@right\sa@border@left + \let\sa@border@top\sa@border@left + \let\sa@border@bottom\sa@border@left + \else + \ifx\\#4\\% + \default@bp\sa@border@left{#1}% + \let\sa@border@right\sa@border@left + \default@bp\sa@border@top{#2}% + \let\sa@border@bottom\sa@border@top + \else + \default@bp\sa@border@left{#1}% + \default@bp\sa@border@bottom{#2}% + \default@bp\sa@border@right{#3}% + \default@bp\sa@border@top{#4}% + \fi\fi +}% +\IfFileExists{adjustbox.sty}{% + \IfFileExists{trimclip.sty}{% + \RequirePackage{trimclip}% + }{% + \RequirePackage{adjustbox}% + }% + \def\sa@beginbox{% + \ifcase0% + \ifdim\sa@border@left<\z@ 1\fi + \ifdim\sa@border@right<\z@ 1\fi + \ifdim\sa@border@top<\z@ 1\fi + \ifdim\sa@border@bottom<\z@ 1\fi + \relax + \marginbox{{\sa@border@left} {\sa@border@bottom} {\sa@border@right} {\sa@border@top}}\bgroup + \else + \clipbox{{-\sa@border@left} {-\sa@border@bottom} {-\sa@border@right} {-\sa@border@top}}\bgroup + \fi + }% + \let\sa@endbox\egroup +}{% + \PackageInfo{standalone}{The 'adjustbox' bundle was not found. Negative borders will not be clipped.}% + \def\sa@beginbox{% + \setbox\@tempboxa\color@hbox + }% + \def\sa@endbox{% + \color@endbox + \sbox\@tempboxa{% + \setlength\@tempdima{\sa@border@left}% + \hskip\@tempdima + \setlength\@tempdima{\sa@border@right}% + \setlength\@tempdimb{\sa@border@bottom}% + \setlength\@tempdimc{\sa@border@top}% + \advance\@tempdima\wd\@tempboxa + \wd\@tempboxa\@tempdima + \advance\@tempdimb\dp\@tempboxa + \dp\@tempboxa\@tempdimb + \advance\@tempdimc\ht\@tempboxa + \ht\@tempboxa\@tempdimc + \raise\dp\@tempboxa\box\@tempboxa + }% + \usebox\@tempboxa + }% +} +\fi \def\sa@document{% - \let\enddocument\sa@enddocument - \sa@atbegindocument + \ifsa@group + \let\enddocument\sa@enddocument + \ifx\sa@subfile@options\@empty\else + \def\sa@subfile@size{10}% + \def\sa@subfile@class{article}% + \let\NeedsTeXFormat\@gobble + \let\sa@atendofclass\@empty + \def\AtEndOfClass{\g@addto@macro\sa@atendofclass}% + \def\standaloneconfig{\setkeys*{standalone.sty/class}}% + \let\sa@@latex@error\@latex@error + \let\@latex@error\@gobbletwo + \let\sa@selectfont\selectfont + \let\selectfont\relax + \makeatletter + \nullfont + \InputIfFileExists{standalone.cfg}{}{}% + \begingroup + \def\@tempa{\setkeys*{standalone.sty/class}}% + \expandafter\expandafter + \expandafter\endgroup + \expandafter\@tempa\expandafter{\sa@subfile@options}% + \sa@atendofclass + \ifpdf + \ifx\GPT@page\@empty\else + \let\sa@requestedpage\GPT@page + \fi + \else + \ifxetex + \ifx\Gin@XeTeX@page\@empty\else + \let\sa@requestedpage\Gin@XeTeX@page + \fi + \fi\fi + \sa@pagenum\z@ + \sa@beginbox + \@ifundefined{KOMAClassName}{% + \def\@tempa{size}% + }{% + \def\@tempa##1##2##3##4\relax{\def\@tempa{##1##2##3}}% + \expandafter\@tempa\sa@subfile@class{}{}{}\relax + \def\@tempb{scr}% + \ifx\@tempa\@tempb + \def\@tempa##1{scrsize##1pt}% + \else + \def\@tempa{size}% + \fi + }% + \let\sa@newcommand\newcommand + \let\sa@@ifundefined\@ifundefined + \let\newcommand\renewcommand + \let\@ifundefined\@thirdofthree + \edef\@tempa{% + \noexpand\input{\@tempa\sa@subfile@size.clo}% + \catcode`\noexpand\@=\the\catcode`\@ + }\@tempa + \let\newcommand\sa@newcommand + \let\@latex@error\sa@@latex@error + \let\@ifundefined\sa@@ifundefined + \let\selectfont\sa@selectfont + \normalsize + \fi + \else + \endgroup + \global\let\enddocument\sa@enddocument + \fi + \sa@atbegindocument } \def\sa@enddocument{% - \sa@atenddocument - \aftergroup\sa@@enddocument -} -\def\sa@@enddocument{% - %\let\document\sa@orig@document - \let\enddocument\sa@orig@enddocument - \endinput + \sa@atenddocument + \ifsa@group + \ifx\sa@subfile@options\@empty\else + \sa@endbox + \fi + \else + \global\let\document\sa@orig@document + \global\let\enddocument\sa@orig@enddocument + \begingroup + \def\@currenvir{document}% + \fi + \@ignoretrue + \aftergroup\endinput } \def\sa@atbegindocument{% \ignorespaces }% \def\sa@atenddocument{% - \unskip + \ifhmode\unskip\fi }% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\IfFileExists{gincltex.sty}{% + \RequirePackage{gincltex} + \newcommand*\includestandalone[2][]{% + \begingroup + \setkeys*{standalone.sty}{##1}% + \edef\@tempa{{##2\sa@graphicext}}% + \expandafter\expandafter\expandafter\includestandalone@ + \expandafter\expandafter\expandafter{\expandafter\XKV@rm\expandafter}\@tempa{##2}% + \endgroup + } +}{% + \begingroup + \let\on@line\@gobble + \PackageWarning{standalone}{Required package 'gincltex' not found.\MessageBreak + The \string\includestandalone\space feature is disabled.} + \endgroup + \newcommand*\includestandalone[2][]{% + \begingroup + \input{##2}% + \endgroup + } +} +\ifxetex\else + \RequirePackage{filemod-expmin} +\fi +\newif\ifsa@buildsuccess +%% 0 = PDF if exists, TEX otherwise +%% 1 = force TEX +%% 2 = force PDF +%% 3 = build PDF if not exists +%% 4 = build PDF if older than TEX +\def\includestandalone@#1#2#3{% + \ifcase\sa@mode + \relax% 0 + \IfFileExists{#2}% + {\includegraphics[#1]{#2}}% + {\includegraphics[#1]{#3.tex}}% + \or% 1 + \includegraphics[#1]{#3.tex}% + \or% 2 + \includegraphics[#1]{#2}% + \or% 3 + \sa@buildgraphic{#3}% + \ifsa@buildsuccess + \includegraphics[#1]{#2}% + \else + \PackageWarning{standalone}% + {Graphic '#2' could not be build.^^J% + Shell escape activated?}% + \includegraphics[#1]{#3.tex}% + \fi + \or% 4 + \IfFileExists{#2}% + {\includegraphics[#1]{#2}}% + {\sa@buildgraphic{#3}% + \ifsa@buildsuccess + \includegraphics[#1]{#2}% + \else + \PackageWarning{standalone}% + {Graphic '#2' could not be build.^^J% + Shell escape activated?}% + \includegraphics[#1]{#3.tex}% + \fi + }% + \or% 5 + \filemodCmp{#3.tex}{#2}% + {\sa@buildgraphic{#3}% + \ifsa@buildsuccess + \includegraphics[#1]{#2}% + \else + \PackageWarning{standalone}% + {Graphic '#2' could not be build.^^J% + Shell escape activated?}% + \includegraphics[#1]{#3.tex}% + \fi + }% + {% + \PackageInfo{standalone}% + {#3.tex file newer then #2}% + \includegraphics[#1]{#2}% + }% + \fi +} +\def\sa@buildgraphic#1{% + \ifeof18 + \PackageError{standalone}{Shell escape needed to create graphic! Use the '-shell-escape' option.}{}% + \else + \begingroup + \edef\file{#1}% + \edef\outfile{\file\sa@graphicext}% + \edef\filemodbefore{\csname pdffilemoddate\endcsname{\outfile}}% + \let\latex\sa@build@latex + \let\latexoptions\sa@build@latexoptions + \let\buildjobname\sa@build@jobname + \immediate\write18{\sa@build@command}% + \ifx\sa@build@postcommand\@empty\else + \immediate\write18{\sa@build@postcommand}% + \fi + \IfFileExists{\outfile}{% + \edef\filemodafter{\csname pdffilemoddate\endcsname{\outfile}}% + \ifx\filemodbefore\filemodafter + \expandafter\ifx\csname pdffilemoddate\endcsname\relax + \global\sa@buildsuccesstrue + \else + \global\sa@buildsuccessfalse + \fi + \else + \global\sa@buildsuccesstrue + \fi + }{% + \global\sa@buildsuccessfalse + }% + \endgroup + \fi +} \endinput %% %% End of file `standalone.sty'. diff --git a/Master/texmf-dist/tex/latex/standalone/standalone.tex b/Master/texmf-dist/tex/latex/standalone/standalone.tex deleted file mode 100644 index 4d1617fbe91..00000000000 --- a/Master/texmf-dist/tex/latex/standalone/standalone.tex +++ /dev/null @@ -1,9 +0,0 @@ -% $Id: standalone.dtx 2451 2011-04-07 11:40:38Z martin $ -\ProvidesFile{standalone.tex}[2011/04/07 v0.4a Provides if-switch to show if file is compiled standalone]% -\expandafter\ifx\csname ifstandalone\endcsname\relax -\expandafter\newif\csname ifstandalone\endcsname -\expandafter\ifx\csname @twoclasseserror\endcsname\documentclass -\else - \standalonetrue -\fi -\fi diff --git a/Master/texmf-dist/tex/plain/standalone/standalone.tex b/Master/texmf-dist/tex/plain/standalone/standalone.tex new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/texmf-dist/tex/plain/standalone/standalone.tex |