summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tcolorbox/tcbexternal.code.tex')
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex88
1 files changed, 47 insertions, 41 deletions
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index c0159db83f..0bfa994f68 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 6.1.0 (2023/09/26)
+%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,17 +17,10 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.1.0}
+\tcb@set@library@version{6.2.0}
\tcbuselibrary{pro@cessing}
-{
-\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%
@@ -65,31 +58,44 @@
\edef\tcbexternal@job@pdf{\expandonce{\tcbexternal@job@name.pdf}}%
}
-\def\tcbexternal@corecompile{%
- \begingroup%
- \ifnum\the\catcode`\"=13 \tcbexternal@activate@normal@dq\fi%
- \message{=== Compile external '\tcbexternal@job@name': }%
- \tcb@allocate@tcb@out%
- \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}}}%
- \ifdefempty{\tcbexternal@preclass}{}{\immediate\write\tcb@out{\expandonce{\tcbexternal@preclass}}}%
- \immediate\write\tcb@out{\string\input{"\jobname.tex"}}%
- \immediate\closeout\tcb@out%
- \foreach \n in {1,...,\tcbexternal@runs}
- {%
- \ShellEscape{%
- \tcbexternal@compiler\space
- -shell-escape
- -halt-on-error
- -interaction=batchmode
- -jobname="\tcbexternal@job@name"
- "\tcbexternal@run@tex"
- }%
- }%
- \endgroup%
-}
+\ExplSyntaxOn
+\cs_new_protected:Npn \tcbexternal@corecompile
+ {
+ \group_begin:
+ \char_set_catcode_other:n { `\" }
+ \iow_term:e { ===~Compile~external~'\tcbexternal@job@name':~ }
+ \iow_open:Nn \g__tcobox_out_iow { \tcbexternal@run@tex }
+ \iow_now:Ne \g__tcobox_out_iow
+ {
+ \token_to_str:N \gdef \token_to_str:N \TCBEXTERNALINPUT
+ { "\tcbexternal@job@source" } \iow_newline:
+ \token_to_str:N \gdef \token_to_str:N \TCBEXTERNALSAFETY
+ { \tcbexternal@safety } \iow_newline:
+ \token_to_str:N \gdef \token_to_str:N \TCBEXTERNALPREAMBLE
+ { \exp_not:o \tcbexternal@preamble }
+ }
+ \tl_if_empty:NF \tcbexternal@preclass
+ {
+ \iow_now:NV \g__tcobox_out_iow \tcbexternal@preclass
+ }
+ \iow_now:Ne \g__tcobox_out_iow
+ { \token_to_str:N \input {"\jobname.tex"} }
+ \iow_close:N \g__tcobox_out_iow
+ \int_step_inline:nn { \tcbexternal@runs }
+ {
+ \sys_shell_now:e
+ {
+ \tcbexternal@compiler \c_space_tl
+ -shell-escape~
+ -halt-on-error~
+ -interaction=batchmode~
+ -jobname="\tcbexternal@job@name"~
+ "\tcbexternal@run@tex"
+ }
+ }
+ \group_end:
+ }
+\ExplSyntaxOff
\def\tcbexternal@compile#1{%
\tcbiffileprocess{#1}%
@@ -239,22 +245,22 @@
\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\end{minipage}\@percentchar}}%
+ \appto\tcbexternal@out@begin{\tcb@iow@write{\string\begin{minipage}{\the\dimexpr#1\relax}\string\ignorespaces\@percentchar}}%
+ \preto\tcbexternal@out@end{\tcb@iow@write{\string\end{minipage}\@percentchar}}%
},
minipage/.default=\linewidth,
%
environment with percent/.is choice,
environment with percent/true/.style={%
/tcb/external/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}}%
+ \appto\tcbexternal@out@begin{\tcb@iow@write{\string\begin{##1}\@percentchar}}%
+ \preto\tcbexternal@out@end{\tcb@iow@write{\string\end{##1}\@percentchar}}%
}
},
environment with percent/false/.style={%
/tcb/external/environment/.code={%
- \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{##1}}}%
- \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\end{##1}}}%
+ \appto\tcbexternal@out@begin{\tcb@iow@write{\string\begin{##1}}}%
+ \preto\tcbexternal@out@end{\tcb@iow@write{\string\end{##1}}}%
}
},
environment with percent/.default=true,