summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex280
1 files changed, 280 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
new file mode 100644
index 00000000000..c5c38983786
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
@@ -0,0 +1,280 @@
+%% The LaTeX package tcolorbox - version 3.50 (2015/03/16)
+%% tcbexternal.code.tex: Code for externalization
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2006-2015 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work 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 `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+%\makeatletter
+\tcb@set@library@version{3.50}
+
+{
+\catcode`\"=12
+\xdef\tcbexternal@normal@dq{"}
+\catcode`\"=13
+\gdef\tcbexternal@activate@normal@dq{\let"=\tcbexternal@normal@dq}
+}
+
+\long\def\tcbifexternal#1#2{%
+ \ifdefined\TCBEXTERNALINPUT%
+ #1%
+ \else%
+ #2%
+ \fi%
+}
+
+\tcbifexternal{%
+ \def\tcbEXTERNALIZE{%
+ \RequirePackage{incgraph}%
+ \TCBEXTERNALPREAMBLE%
+ \begin{document}%
+ \begin{inctext}[border=\TCBEXTERNALSAFETY]%
+ \input{\TCBEXTERNALINPUT}%
+ \end{inctext}%
+ \end{document}%
+ }%
+}{%
+ \def\tcbEXTERNALIZE{%
+ \tcbset{
+ external/.cd,
+ externalize/.is if=tcb@externalize,
+ externalize=true,
+ }%
+ }%
+}
+
+\@onlypreamble\tcbEXTERNALIZE
+
+\def\tcbexternal@setbasename#1{%
+ \gdef\tcbexternal@basename{#1}%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcbexternal@job@name{\expandonce{\tcbexternal@prefix}\expandonce{\tcbexternal@basename}}}\x%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcbexternal@job@mdfive{\expandonce{\tcbexternal@job@name.md5}}}\x%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcbexternal@job@source{\expandonce{\tcbexternal@job@name.tex}}}\x%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcbexternal@job@pdf{\expandonce{\tcbexternal@job@name.pdf}}}\x%
+}
+
+\def\tcbexternal@corecompile{%
+ \begingroup%
+ \ifnum\the\catcode`\"=13 \tcbexternal@activate@normal@dq\fi%
+ \message{=== Compile external '\tcbexternal@job@name': }%
+ \immediate\openout\tcb@out="\tcbexternal@run@tex"
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALINPUT{"\tcbexternal@job@source"}}%
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALSAFETY{\tcbexternal@safety}}%
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALPREAMBLE{\expandonce{\tcbexternal@preamble}}}%
+ \immediate\write\tcb@out{\string\input{"\jobname.tex"}}%
+ \immediate\closeout\tcb@out%
+ \foreach \n in {1,...,\tcbexternal@runs}
+ {%
+ \immediate\write18{%
+ \tcbexternal@compiler\space
+ -shell-escape
+ -halt-on-error
+ -interaction=batchmode
+ -jobname="\tcbexternal@job@name"
+ "\tcbexternal@run@tex"
+ }%
+ }%
+ \endgroup%
+}
+
+\def\tcbexternal@inputsource{
+ \IfFileExists{\tcbexternal@job@source}%
+ {\input{\tcbexternal@job@source}}%
+ {\tcb@error{File '\tcbexternal@job@source' missing.}{}}%
+}
+
+\def\tcbexternal@pdfmissing@warning{%
+ \tcb@warning{File '\tcbexternal@job@pdf' missing.
+ Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}%
+ \message{Load '\tcbexternal@job@source' instead}%
+ \tcbexternal@inputsource%
+}
+
+\def\tcbexternal@pdfmissing@error{%
+ \tcb@error{File '\tcbexternal@job@pdf' missing.
+ Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}{}%
+}
+
+\def\tcbexternal@inputpdf{%
+ \IfFileExists{\tcbexternal@job@pdf}%
+ {%
+ \begingroup\edef\x{\endgroup%
+ \noexpand\includegraphics[trim=\tcbexternal@safety\space\tcbexternal@safety%
+ \space\tcbexternal@safety\space\tcbexternal@safety]{\expandonce{\tcbexternal@job@pdf}}}%
+ \x%
+ }%
+ {\tcbexternal@pdfmissing}%
+}
+
+\newif\iftcb@externalize
+\tcb@externalizefalse
+
+\def\tcbexternal@generatemdivesum{%
+ \iftcb@externalize%
+ \def\tcbexternallastmdfivesum{}%
+ \IfFileExists{\tcbexternal@job@mdfive}{\input{\tcbexternal@job@mdfive}}{}%
+ \edef\tcbexternalmdfivesum{\pdfmdfivesum file {\tcbexternal@job@source}}%
+ \else%
+ \def\tcbexternallastmdfivesum{x}%
+ \edef\tcbexternalmdfivesum{}%
+ \fi%
+ \immediate\openout\tcb@out=\tcbexternal@job@mdfive
+ \immediate\write\tcb@out{\string\def\string\tcbexternallastmdfivesum{\tcbexternalmdfivesum}\@percentchar}%
+ \immediate\closeout\tcb@out%
+}
+
+\def\tcbexternal@conditionalcompile{%
+ \IfFileExists{\tcbexternal@job@pdf}{%
+ \ifdefstrequal{\tcbexternallastmdfivesum}{\tcbexternalmdfivesum}{%
+ }{%
+ \tcbexternal@corecompile%
+ }%
+ }{%
+ \tcbexternal@corecompile%
+ }%
+}
+
+\def\tcb@useexternal{%
+ \tcbexternal@generatemdivesum%
+ \iftcb@externalize%
+ \tcbexternal@compile%
+ \tcbexternal@inputpdf%
+ \else%
+ \tcbexternal@inputsource%
+ \fi%
+}
+
+\newenvironment{tcbexternal}[2][]{%
+ \tcbset{external/.cd,#1,name=#2}%
+ \begingroup%
+ \let\tcb@verbatim@begin@hook=\tcbexternal@out@begin%
+ \let\tcb@verbatim@end@hook=\tcbexternal@out@end%
+ \tcbverbatimwrite{\tcbexternal@job@source}}%
+{%
+ \endtcbverbatimwrite\endgroup%
+ \tcb@useexternal%
+}
+
+\long\def\new@tcb@externalizeenvironment#1#2#3#4#5{%
+ \tcb@newenvironment{#1}[2][]{%
+ #4%
+ \begingroup%
+ \tcbexternal[#3,##1,environment=#2]{##2}%
+ }{%
+ \endtcbexternal%
+ \endgroup%
+ #5%
+ }%
+}
+
+\def\newtcbexternalizeenvironment{%
+ \let\tcb@newenvironment\newenvironment%
+ \new@tcb@externalizeenvironment%
+}
+
+\def\renewtcbexternalizeenvironment{%
+ \let\tcb@newenvironment\renewenvironment%
+ \new@tcb@externalizeenvironment%
+}
+
+\long\def\new@tcb@externalizetcolorbox#1#2#3#4{%
+ \new@tcb@externalizeenvironment{#1}{#2}%
+ {preamble tcbset={force nobeforeafter},#3}%
+ {\tcbset{#4}\tcb@set@normal@unbroken@beforeafter\tcb@before@unbroken}%
+ {\tcb@after@unbroken}%
+}
+
+\def\newtcbexternalizetcolorbox{%
+ \let\tcb@newenvironment\newenvironment%
+ \new@tcb@externalizetcolorbox%
+}
+
+\def\renewtcbexternalizetcolorbox{%
+ \let\tcb@newenvironment\renewenvironment%
+ \new@tcb@externalizetcolorbox%
+}
+
+
+\newtcbexternalizeenvironment{extikzpicture}{tikzpicture}{}{}{}
+
+\newtcbexternalizetcolorbox{extcolorbox}{tcolorbox}{}{}
+
+
+\tcbset{
+ external/.cd,
+ %
+ runner/.code={%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcbexternal@run@tex{\expandonce{#1}}}\x%
+ },
+ %
+ prefix/.store in=\tcbexternal@prefix,
+ compiler/.store in=\tcbexternal@compiler,
+ runs/.code={\numdef\tcbexternal@runs{#1}},
+ name/.code={\tcbexternal@setbasename{#1}},
+ safety/.store in=\tcbexternal@safety,
+ preamble/.code={\appto\tcbexternal@preamble{#1}},
+ preamble tcbset/.code={\appto\tcbexternal@preamble{\tcbset{#1}}},
+ clear preamble/.code={\def\tcbexternal@preamble{}},
+ externalize/.code={},
+ %
+ force remake/.is choice,
+ force remake/true/.code={\let\tcbexternal@compile=\tcbexternal@corecompile},
+ force remake/false/.code={\let\tcbexternal@compile=\tcbexternal@conditionalcompile},
+ force remake/.default=true,
+ !/.style=force remake,
+ %
+ input source on error/.is choice,
+ input source on error/true/.code={\let\tcbexternal@pdfmissing=\tcbexternal@pdfmissing@warning},
+ input source on error/false/.code={\let\tcbexternal@pdfmissing=\tcbexternal@pdfmissing@error},
+ input source on error/.default=true,
+ %
+ plain/.code={%
+ \let\tcbexternal@out@begin=\@empty%
+ \let\tcbexternal@out@end=\@empty%
+ },
+ minipage/.code={%
+ \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{minipage}{\the\dimexpr#1\relax}\string\ignorespaces\@percentchar}}%
+ \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\unskip\string\end{minipage}\@percentchar}}%
+ },
+ minipage/.default=\linewidth,
+ %
+ environment/.code={%
+ \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{#1}\@percentchar}}%
+ \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\end{#1}\@percentchar}}%
+ },%
+ runner=\jobname_run.tex,
+ prefix={external/},
+ compiler=pdflatex,
+ runs=1,
+ name=unnamed,
+ safety=2mm,
+ clear preamble,
+ force remake=false,
+ input source on error,
+ plain
+}
+
+\tcbset{%
+ externalize example/.style={%
+ external/name=#1,tempfile=\tcbexternal@job@source,
+ code={\let\tcbusetemp=\tcb@useexternal}%
+ },
+ externalize example!/.style={externalize example=#1,external/force remake},
+ externalize listing/.style={%
+ external/name=#1,listing file=\tcbexternal@job@source,
+ code={\let\tcbuselistingtext@input=\tcb@useexternal}%
+ },
+ externalize listing!/.style={externalize listing=#1,external/force remake},
+}