You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/source/latex/koma-script/scrdocstrip.tex

324 lines
10 KiB

% ======================================================================
% scrdocstrip.tex
% Copyright (c) Markus Kohm, 2013-2018
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% 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
% version 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 Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrdocstrip.tex
% Copyright (c) Markus Kohm, 2013-2018
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
% http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
\expandafter\ifx\csname scrdocstripversion\endcsname\relax
\let\KOMAbatchfile\batchfile
\let\batchfile\undefined
\fi
\expandafter\ifx\csname ifbeta\endcsname\undefined
\expandafterlet\csname ifbeta\expandafter\csname iftrue\endcsname
\fi
\input docstrip.tex
\ifx\generate\undefined
\errhelp{| This installation requires docstrip version 2.3c or * later,^^J%
| but an old version of docstrip has been input.^^J%
| This error is fatal, because You have to update docstrip and maybe LaTeX
fist!}
\errmessage{| Fatal error: Old docstrip in input path}
\batchmode
\csname @@end\endcsname
\fi
\expandafter\ifx\csname scrdocstripversion\endcsname\relax
\else \expandafter\endinput
\fi
\Msg{| Using KOMA-Script's docstrip extensions.}%|
% Support for variables:
\def\KOMAdefVariable#1#2{%
\expandafter\def\csname KOMAvar@#1\endcsname{#2}%
}
\def\KOMAifVariable#1{%
\expandafter\ifx\csname KOMAvar@#1\endcsname\relax
\expandafter\@secondoftwo
\else
\expandafter\@firstoftwo
\fi
}
\def\KOMAuseVariable#1{%
\KOMAifVariable{#1}{%
\csname KOMAvar@#1\endcsname
}{%
variable #1\undefined
}%
}
\KOMAdefVariable{AUTHOR}{Markus Kohm}
\KOMAdefVariable{COPYRIGHT}{%
Copyright (c)
\KOMAifVariable{COPYRIGHTFROM}{\KOMAuseVariable{COPYRIGHTFROM}-}{}%
\KOMAifVariable{COPYRIGHTTILL}{\KOMAuseVariable{COPYRIGHTTILL}}{}
\KOMAuseVariable{AUTHOR}%
\KOMAifVariable{EMAIL}{ \KOMAuseVariable{EMAIL}}{}%
}
\KOMAdefVariable{COPYRIGHTCOMMENT}{%
\MetaPrefix\space\KOMAuseVariable{COPYRIGHT}%
}
% Provide validity test: All files listed in a file must exists.
% You should note, that some TeX distributions cannot find files without
% extension!
\def\defuppercase#1#2{%
\edef\reserved@a{\noexpand\def\noexpand#1{#2}}%
\expandafter\uppercase\expandafter{\reserved@a}%
}
\def\KOMAdocExtensions{HTML,PDF,TXT}
\let\KOMAdocFilesMissing\empty
\let\KOMAnoFilesMissing\empty
\let\KOMAFilesMissing\empty
\def\getlastextension#1.#2.#3\@nil{%
\ifx\relax#2\relax
\ifx\relax#3\relax
\else
#1%
\fi
\else
\getlastextension#2.#3..\@nil
\fi
}
\def\KOMAvalidityTest#1{%
\maybeMsg{^^J| Testing validity of distribution: }%|
\begingroup
\def\readloop{%
\ifeof\inFile\else
\read\inFile to \input@testfile\relax
\ifx\input@testfile\empty
\maybeMsg{\space}%
\else
\openin\inputcheck \input@testfile\relax
\ifeof\inputcheck
\maybeMsg{-}%
\defuppercase\reserved@a{%
\expandafter\getlastextension\input@testfile..\@nil
}%
\ifx\reserved@a\empty
\@addto\KOMAnoFilesMissing{\noexpand\do{\input@testfile}}%
\let\reserved@a\empty
\else
\forlist\reserved@b:=\KOMAdocExtensions\do
\ifx\reserved@a\reserved@b
\@addto\KOMAdocFilesMissing{\noexpand\do{\input@testfile}}%
\let\reserved@a\empty
\Forlistfalse
\fi
\od
\fi
\ifx\reserved@a\empty\else
\@addto\KOMAFilesMissing{\noexpand\do{\input@testfile}}%
\fi
\else
\maybeMsg{+}%
\fi
\closein\inputcheck
\fi
\expandafter\readloop
\fi
}%
\endlinechar=-1
\openin\inFile #1\relax
\ifeof\inFile
\global\@addto\KOMAFilesMissing{\noexpand\do{#1}}%
\else
\readloop
\closein\inFile
\fi
\ifx\KOMAFilesMissing\empty
\ifx\KOMAdocFilesMissing\empty
\ifx\KOMAnoFilesMissing\empty
\maybeMsg{\space OK.^^J}%
\fi
\fi
\else
\def\do##1{,^^J| \@spaces\@spaces\@spaces##1}%
\errhelp{| You should ask your distributor for a valid and legal
distribution.}%|
\errmessage{^^J%
| Missing files: \expandafter\expandafter\expandafter\@gobble
\KOMAFilesMissing\KOMAdocFilesMissing\KOMAnoFilesMissing^^J%
| Distribution seems to be invalid.^^J%
| This error is fatal}%|
\batchmode
\csname @@end\endcsname
\fi
\global\let\KOMAnoFilesMissing\KOMAnoFilesMissing
\global\let\KOMAdocFilesMissing\KOMAdocFilesMissing
\endgroup
}
\def\@gobbletwo#1#2{}
\expandafter\def\expandafter\ReportTotals\expandafter{\ReportTotals
\ifx\KOMAnoFilesMissing\empty\else
\Msg{%
+----------------------------------------------------------------------%
^^J%
| Following files without extension seem to be missing:}
\begingroup
\def\do##1{,^^J| \space\space##1}%
\Msg{\expandafter\expandafter\expandafter\@gobbletwo\KOMAnoFilesMissing}
\endgroup
\Msg{%
| PLEASE NOTE, THAT DISTRIBUTIONS WITHOUT THOSE FILES ARE NOT ALLOWED!^^J%
| But maybe those files are there and you're TeX distribution simply^^J%
| cannot open files without extension.^^J%
+----------------------------------------------------------------------}%|
\fi
\ifx\KOMAdocFilesMissing\empty\else
\Msg{%
+----------------------------------------------------------------------%
^^J%
| Following documentations files are missing:}
\begingroup
\def\do##1{,^^J| \space\space##1}%
\Msg{\expandafter\expandafter\expandafter\@gobbletwo\KOMAdocFilesMissing}
\endgroup
\Msg{%
| PLEASE NOTE, THAT DISTRIBUTIONS WITHOUT THOSE FILES ARE NOT ALLOWED!^^J%
| MAYBE YOU CAN GENERATE THOSE FILES FROM OTHER PARTS OF THE SOURCES.^^J%
+----------------------------------------------------------------------}
\fi
}
% Extend line scanner by:
% - %!VARIABLE : to write variable into files
% - %?VARIABLE=VALUE : to setup a new variable
\begingroup
\catcode`\%=12 \catcode`\*=14
\gdef\processLineX%#1{*
\ifcase\ifx%#10\else
\ifx<#11\else
\ifx!#12\else 3\fi\fi\fi\relax
\expandafter\putMetaComment\or
\expandafter\checkOption\or
\expandafter\KOMAexpandVariable\or
\expandafter\removeComment\fi
#1}
\gdef\KprocessLineX%#1{*
\ifcase\ifx%#10\else
\ifx<#11\else
\ifx!#12\else
\ifx?#13\else 4\fi\fi\fi\fi\relax
\expandafter\putMetaComment\or
\expandafter\checkOption\or
\expandafter\KOMAexpandVariable\or
\expandafter\KOMAsetVariable\or
\expandafter\removeComment\fi
#1}
\endgroup
\def\KOMAexpandVariable!#1\endLine{%
\advance\codeLinesPassed\@ne
\maybeMsg{x}%
\edef\inLine{\KOMAuseVariable{#1}}%
\let\do\putline@do
\activefiles
}
\def\KOMAsetVariable?#1=#2\endLine{%
\expandafter\gdef\csname KOMAvar@#1\endcsname{#2}%
}
% Extend heading
\def\ds@heading{%
\expandafter\ifx\csname ifbeta\expandafter\endcsname
\csname iftrue\endcsname
\use@Warning{\outFileName}{%
YOU SHOULD NOTE, THAT THIS IS NOT AN OFFICIAL RELEASE!^^J%
THIS VERSION IS INTENDED TO BE USED FOR TESTING ONLY!^^J%
USAGE FOR PURPOSES OTHER THAN INTENDED IS DANGEROUS!^^J%
DON'T EXPECT ANY SUPPORT FOR THIS VERSION!%
}%
\fi
\MetaPrefix ^^J%
\MetaPrefix\space This is file `\outFileName',^^J%
\MetaPrefix\space generated with the docstrip utility, extended by
scrdocstrip.^^J%
}
\def\commentWarning#1#2{%
\MetaPrefix\space
-------------------------------------------------------------------------^^J%
\@commentWarning#2^^J\@nil
\MetaPrefix\space
-------------------------------------------------------------------------^^J%
}
\def\@commentWarning#1^^J#2\@nil{%
\MetaPrefix\space #1^^J%
\ifx\relax#2\relax\else\@commentWarning#2\@nil\fi
}
\def\KNL{^\empty^J\perCent^^J}
\def\XKNL{^\empty^J\perCent|^^J}
\def\genericWarning#1#2{%
\string\immediate\string\write17{\KNL
+----------------------------------------------------------------------\KNL
| WARNING (`#1'):\XKNL
+----------------------------------------------------------------------\KNL
\@genericWarning#2^^J\@nil
+----------------------------------------------------------------------\KNL
}^^J%
}
\def\@genericWarning#1^^J#2\@nil{%
| #1\XKNL
\ifx\relax#2\relax\else\@genericWarning#2\@nil\fi
}%|
\def\useWarning#1{\let\use@Warning#1}
\useWarning\genericWarning
% Now, we need some code from docstrip to start old docstrip-processing
\ifx\undefined\KOMAbatchfile\else
\Defaultfalse
\let\batchfile\KOMAbatchfile
\def\process@first@batchfile{%
\processbatchFile
\ifnum\NumberOfFiles=\z@
\interactive
\fi
\endbatchfile
}
\fi
\chardef\scrdocstripversion 1\relax
\def\fromoptional#1{%
\immediate\openin\inputcheck\uptospace#1 \qStop\relax
\ifeof\inputcheck
\Msg{Ignorring not existing optional file `#1'.}%
\expandafter\@gobbletwo
\else
\immediate\closein\inputcheck
\expandafter\from
\fi
{#1}%
}
\process@first@batchfile
\endinput
%
% end of file `scrdocstrip.tex'