From 78655a585d87722e604b5d7320df24e26f0bff6c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 29 Sep 2019 21:13:57 +0000 Subject: filecontentsdef (29sep19) git-svn-id: svn://tug.org/texlive/trunk@52208 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/filecontentsdef/filecontentsdef.sty | 149 +++++++++++++-------- 1 file changed, 95 insertions(+), 54 deletions(-) (limited to 'Master/texmf-dist/tex/latex/filecontentsdef') diff --git a/Master/texmf-dist/tex/latex/filecontentsdef/filecontentsdef.sty b/Master/texmf-dist/tex/latex/filecontentsdef/filecontentsdef.sty index e956a6ff767..c1347d3af95 100644 --- a/Master/texmf-dist/tex/latex/filecontentsdef/filecontentsdef.sty +++ b/Master/texmf-dist/tex/latex/filecontentsdef/filecontentsdef.sty @@ -23,19 +23,25 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{filecontentsdef} - [2019/04/20 v1.4 filecontents + macro + verbatim (JFB)] + [2019/09/29 v1.5 filecontents + macro + verbatim (JFB)] %% %% Package: filecontentsdef -%% Version: 1.4 (2019/04/20) +%% Version: 1.5 (2019/09/29) %% License: LPPL 1.3c %% Copyright (C) 2016-2019 Jean-Francois Burnol %% +\let\FCD@global\global \begingroup \catcode`\^^M\active% \catcode`\^^L\active\let^^L\relax% \catcode`\^^I\active% -\gdef\filec@ntentsdef#1#2{% - \let#2\@empty% +\gdef\FCD@main#1#2{% + \def\FCD@defmacro% + {\toks@\expandafter{#2}% + \edef\x{\endgroup\def\noexpand#2{\the\toks@}% + \begingroup\def\noexpand\@currenvir{\@currenvir}}% + \x}% + \FCD@global\let#2\@empty% \if@filesw% \openin\@inputcheck#1 % \ifeof\@inputcheck% @@ -46,11 +52,11 @@ {Overwriting file `\@currdir#1'}% \fi% \closein\@inputcheck% - \chardef\reserved@c15 % - \ch@ck7\reserved@c\write% - \immediate\openout\reserved@c#1\relax% + \chardef\FCD@reserved@c15 % + \ch@ck7\FCD@reserved@c\write% + \immediate\openout\FCD@reserved@c#1\relax% \if@tempswa% - \immediate\write\reserved@c{% + \immediate\write\FCD@reserved@c{% \@percentchar\@percentchar\space% \expandafter\@gobble\string\LaTeX2e file `#1'^^J% \@percentchar\@percentchar\space generated by the % @@ -73,26 +79,32 @@ \ifnum\count@<\@cclvi% \repeat% \let^^L\relax% - \edef\E{\@backslashchar end\string{\@currenvir\string}}% - \edef\reserved@b{\def\noexpand\reserved@b####1\E####2\E####3\relax}% - \reserved@b{% + \edef\FCD@E{\@backslashchar end\string{\@currenvir\string}}% + \edef\FCD@reserved@b{\def\noexpand\FCD@reserved@b####1\FCD@E####2\FCD@E####3\relax}% + \FCD@reserved@b{% \ifx\relax##3\relax% - \if@filesw\immediate\write\reserved@c{##1}\fi% + \if@filesw% + \let^^L\FCDformfeedtofile% + \let^^I\FCDtabtofile% + \immediate\write\FCD@reserved@c{##1}% + \fi% \toks@\expandafter{#2}% - {\def^^L{\noexpand^^M\noexpand^^M}\lowercase{\let^^I~}% - \xdef#2{\the\toks@##1\noexpand^^M}}% + \let^^L\FCDformfeedtomacro% + \let^^I\FCDtabtomacro% + \FCD@global\edef#2{\the\toks@##1\noexpand^^M}% \else% \edef^^M{\noexpand\end{\@currenvir}}% \ifx\relax##1\relax% \else% - \if@filesw% - \@latex@warning{Writing text `##1' before % - \string\end{\@currenvir}\MessageBreak as last line of #1}% - \immediate\write\reserved@c{##1}% - \fi% + \if@filesw% + \let^^L\FCDformfeedtofile% + \let^^I\FCDtabtofile% + \immediate\write\FCD@reserved@c{##1}% + \fi% \toks@\expandafter{#2}% - {\def^^L{\noexpand^^M\noexpand^^M}\lowercase{\let^^I~}% - \xdef#2{\the\toks@##1\noexpand^^M}}% + \let^^L\FCDformfeedtomacro% + \let^^I\FCDtabtomacro% + \FCD@global\edef#2{\the\toks@##1\noexpand\empty\noexpand^^M}% \fi% \ifx\relax##2\relax% \else% @@ -102,52 +114,81 @@ \fi% ^^M}% \catcode`\^^L\active% - \let\L\@undefined% - \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi^^J^^J}% \catcode`\^^I\active% - \let\I\@undefined% - \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}% \catcode`\^^M\active% - \edef^^M##1^^M{\noexpand\reserved@b##1\E\E\relax}% + \edef^^M##1^^M{\noexpand\FCD@reserved@b##1\FCD@E\FCD@E\relax}% \catcode32\active\lccode`~32 \lowercase{\def~{\noexpand~}}% }% -\endgroup -\long\def\filecontentsdef@aux#1\filecontentsdef@aux{\@firstofone}% -\def\filecontentsdef@get#1#2% +\gdef\FCDformfeedtofile{^^J^^J}% +\gdef\FCDformfeedtomacro{\noexpand^^M\noexpand^^M}% +\gdef\FCDtabtofile{ }% +\catcode32\active\gdef\FCDtabtomacro{\noexpand }% +\endgroup% +\long\def\FCD@get@aux#1\FCD@get@aux#2{#2}% +\def\FCD@get#1#2% {% - \def\@tempa{#1}\def\@tempb{{#2}}% - \expandafter\filecontentsdef@aux\@gobbletwo#2\filecontentsdef@aux + \def\FCD@tempa{#1}\def\FCD@tempb{{#2}}% + \expandafter\FCD@get@aux\@gobbletwo#2\FCD@get@aux \@thirdofthree - \filecontentsdef@aux + \FCD@get@aux {\ifcat\relax\noexpand#2\expandafter\@gobble\else\expandafter\@firstofone\fi}% - {\edef\@tempb{{\expandafter\noexpand\csname#2\endcsname}}}% - \expandafter\@tempa\@tempb + {\edef\FCD@tempb{{\expandafter\noexpand\csname#2\endcsname}}}% + \expandafter\FCD@tempa\FCD@tempb }% \begingroup \catcode`\*=11 -\gdef\filecontentsdef #1{\@tempswatrue\filecontentsdef@get{\filec@ntentsdef{#1}}}% -\gdef\filecontentsdef*#1{\@tempswafalse\filecontentsdef@get{\filec@ntentsdef{#1}}}% -\global\let\endfilecontentsdef \endfilecontents -\global\let\endfilecontentsdef*\endfilecontents -\gdef\filecontentsdefmacro{\@fileswfalse\filecontentsdef@get{\filec@ntentsdef{}}}% -\global\let\endfilecontentsdefmacro\relax -\gdef\filecontentshere #1{\@tempswatrue\filec@ntentsdef{#1}\filecontentsheremacro}% -\gdef\filecontentshere*#1{\@tempswafalse\filec@ntentsdef{#1}\filecontentsheremacro}% -\gdef\endfilecontentshere{\endfilecontentsdef\aftergroup\filecontents@here}% +\gdef\filecontentsdef #1{\let\FCD@global\@empty + \@tempswatrue\FCD@get{\FCD@main{#1}}}% +\gdef\filecontentsdef*#1{\let\FCD@global\@empty + \@tempswafalse\FCD@get{\FCD@main{#1}}}% +\global\let\filecontentsdefstarred\filecontentsdef* +\gdef\filecontentsgdef #1{\@tempswatrue\FCD@get{\FCD@main{#1}}}% +\gdef\filecontentsgdef*#1{\@tempswafalse\FCD@get{\FCD@main{#1}}}% +\global\let\filecontentsgdefstarred\filecontentsgdef* +\gdef\endfilecontentsdef{\immediate\closeout\FCD@reserved@c\FCD@defmacro}% +\global\let\endfilecontentsdef*\endfilecontentsdef +\global\let\endfilecontentsdefstarred\endfilecontentsdef +\gdef\endfilecontentsgdef{\immediate\closeout\FCD@reserved@c}% +\global\let\endfilecontentsgdef*\endfilecontentsgdef +\global\let\endfilecontentsgdefstarred\endfilecontentsgdef +\gdef\filecontentsdefmacro{\let\FCD@global\@empty + \@fileswfalse\FCD@get{\FCD@main{}}}% +\gdef\endfilecontentsdefmacro{\FCD@defmacro}% +\gdef\filecontentsgdefmacro{\@fileswfalse\FCD@get{\FCD@main{}}}% +\global\let\endfilecontentsgdefmacro\relax +\gdef\filecontentshere #1{\let\FCD@global\@empty + \@tempswatrue\FCD@main{#1}\filecontentsheremacro}% +\gdef\filecontentshere*#1{\let\FCD@global\@empty + \@tempswafalse\FCD@main{#1}\filecontentsheremacro}% +\global\let\filecontentsherestarred\filecontentshere* +\gdef\endfilecontentshere{\endfilecontentsdef\aftergroup\FCD@here}% \global\let\endfilecontentshere*\endfilecontentshere -\gdef\filecontentsprint{\filecontentsdef@get\filecontents@print}% +\global\let\endfilecontentsherestarred\endfilecontentshere +\gdef\filecontentsprint{\FCD@get\FCD@print}% \catcode`\^^M\active% -\gdef\filecontents@print #1{\let\filecontents@print@EOL^^M\let^^M\relax% - \begingroup\toks@\expandafter{#1}\edef\x{\endgroup% - \noexpand\begin{verbatim}^^M% - \the\toks@\@backslashchar end\string{verbatim\string}}\x^^M% - \filecontents@print@resetEOL}% -\gdef\filecontents@print@resetEOL{\let^^M\filecontents@print@EOL}% +\gdef\FCD@print #1{\let\FCD@print@EOL^^M\let^^M\relax% + \begingroup\toks@\expandafter{#1}% + \edef\x{\endgroup% + \noexpand\begin{\FCDprintenvname}\FCDprintenvoptions^^M% + \the\toks@\@backslashchar end\string{\FCDprintenvname\string}}% + \x^^M% + \FCD@print@resetEOL}% +\gdef\FCD@print@resetEOL{\let^^M\FCD@print@EOL}% +\gdef\filecontentsprintviascan{\FCD@get\FCD@printviascan}% +\gdef\FCD@printviascan#1{% + \toks@\expandafter{#1}% + \edef\FCD@envwithcontents{% + \noexpand\begin{\FCDprintenvname}\FCDprintenvoptions\noexpand^^M% + \the\toks@\@backslashchar end{\FCDprintenvname}\noexpand^^M}% + \FCD@exec\FCD@envwithcontents}% \endgroup -\def\filecontents@here{\filecontents@print\filecontentsheremacro}% -\def\filecontentsexec{\filecontentsdef@get\filecontents@exec}% -\def\filecontents@exec #1{\newlinechar13 - \scantokens\expandafter{#1}\newlinechar10\relax}% +\def\FCDprintenvname{verbatim}% +\let\FCDprintenvoptions\@empty +\def\FCD@here{\FCD@print\filecontentsheremacro}% +\def\filecontentsexec{\FCD@get\FCD@exec}% +\def\FCD@exec #1{\edef\FCD@newlinechar{\the\newlinechar}% + \newlinechar13 + \scantokens\expandafter{#1}\newlinechar\FCD@newlinechar\relax}% \endinput %% %% End of file `filecontentsdef.sty'. -- cgit v1.2.3