summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrwfile.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrwfile.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrwfile.dtx731
1 files changed, 731 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrwfile.dtx b/Master/texmf-dist/source/latex/koma-script/scrwfile.dtx
new file mode 100644
index 00000000000..e69ab6504ce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrwfile.dtx
@@ -0,0 +1,731 @@
+% \CheckSum{271}
+% \iffalse meta-comment
+% ======================================================================
+% scrwfile.dtx
+% Copyright (c) Markus Kohm, 2010-2012
+%
+% 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 and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% The KOMA-Script bundle consists of all files listed in manifest.txt.
+% The work `scrwfile' consists of the files `scrwfile.dtx' and
+% `scrlogo.dtx'.
+%
+% If you're missing the installation batch file `scrwfile.ins', try
+% tex scrwfile.dtx
+% to unpack all files.
+% The package documentation may be produced repeating
+% latex scrwfile.dtx
+% at least three times.
+% ----------------------------------------------------------------------
+% scrwfile.dtx
+% Copyright (c) Markus Kohm, 2010-2012
+%
+% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c.
+% 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 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.
+%
+% Das KOMA-Script-Paket besteht aus allen Dateien, die in manifest.txt
+% genannt sind.
+% Das Werk `scrwfile' besteht aus den Dateien `scrwfile.dtx' und
+% `scrlogo.dtx'.
+%
+% Falls Sie die Installations-Batch-Datei `scrwfile.ins' vermissen,
+% probieren Sie einfach einmal
+% tex scrwfile.dtx
+% um alle Dateien auszupacken. Zur englischen Anleitung siehe den
+% englischen Kommentar oben.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: scrwfile.dtx
+%<*dtx>
+\def\LaTeXformat{LaTeX2e}
+\ifx\fmtname\LaTeXformat
+ \makeatletter
+ \let\saved@@end\@@end
+ \def\@@end{\csname fi\endcsname\saved@@end}
+ \makeatother
+ \ProvidesFile{scrwfile.dtx}
+%</dtx>
+%<(package&identify)|driver>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package&identify>\ProvidesPackage{scrwfile}
+%<driver>\ProvidesFile{scrwfile.drv}
+%<doc>\ProvidesFile{scrwfile.tex}
+%<*dtx|(package&identify)|driver|doc>
+ [2011/09/11 v0.1c-alpha LaTeX2e KOMA-Script package (write and clone files)]
+%</dtx|(package&identify)|driver|doc>
+%<*driver>
+ \documentclass{scrdoc}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{listings}
+ \lstnewenvironment{lstcode}[1][]{%
+ \lstset{language=[LaTeX]TeX,basicstyle=\ttfamily\small,#1}%
+ }{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrwfile.dtx}
+ \title{The \KOMAScript{} package \texttt{scrwfile}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \date{\filedate}
+ \author{Markus Kohm}
+
+ \newenvironment{Explain}{\par}{\par}
+ \let\Macro\cs
+ \let\Package\textsf
+ \let\File\texttt
+ \let\Option\texttt
+ \let\Counter\texttt
+ \let\ShowOutput\quote
+ \let\endShowOutput\endquote
+ \let\Parameter\marg
+ \let\OParameter\oarg
+ \newcommand\PParameter[1]{\mbox{\texttt{\{#1\}}}}
+ \let\PName\meta
+ \let\PValue\texttt
+ \providecommand*{\autoref}[1]{\expandafter\AUTOREF#1:}
+ \newcommand*{\AUTOREF}{}
+ \makeatletter
+ \def\AUTOREF#1:#2:{%
+ \edef\@tempa{#1}%
+ \edef\@tempb{tab}\ifx\@tempa\@tempb table~\fi
+ \edef\@tempb{sec}\ifx\@tempa\@tempb section~\fi
+ \ref{#1:#2}%
+ }
+ \makeatother
+
+ \begin{document}
+ \maketitle
+ \DocInput{\filename}
+ \end{document}
+%</driver>
+%<*dtx>
+\fi
+% Now the installation driver:
+%</dtx>
+%<*insfile>
+\expandafter\let\expandafter\ifbeta\csname iffalse\endcsname
+\def\batchfile{scrwfile.dtx}
+\input docstrip.tex
+\ifToplevel{%
+ \Msg{**********************************************************************}
+ \Msg{*}
+ \Msg{* KOMA-Script presents scrwfile}
+ \Msg{* a package to define, configure and several different styles for}
+ \Msg{* table of contents, list of floats and the like.}
+ \Msg{*}
+ \Msg{* This is `\batchfile', a batch file to unpack the package scrwfile,}
+ \Msg{* the documentation of the package, and an archive of all these files.}
+ \Msg{*}
+ \Msg{**********************************************************************}
+ \keepsilent
+ \askforoverwritefalse
+}
+
+\preamble
+
+Copyright (c) 2010-2012 by Markus Kohm <komascript(at)gmx.info>
+
+This file was generated from file(s) of the 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 file may only be distributed together with the file
+`scrwfile.dtx' and `scrlogo.dtx'. You may however distribute the files
+`scrwfile.dtx' and `scrlogo.dtx' without this file.
+
+If this file is a beta version, you are not allowed to distribute it.
+
+English and German manuals are part of KOMA-Script bundle.
+----------------------------------------------------------
+
+The english manual is at `scrwfile.dtx', too.
+
+The KOMA-Script bundle (but not this file) was based upon the LaTeX2.09
+Script family created by Frank Neukam 1993 and the LaTeX2e standard
+classes created by The LaTeX3 Project 1994-1996.
+
+THIS IS AN ALPHA VERSION!
+USAGE OF THIS VERSION IS ON YOUR OWN RISK!
+EVERYTHING MAY HAPPEN!
+EVERYTHING MAY CHANGE IN FUTURE!
+THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!
+
+\endpreamble
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrwfile.sty}{%
+ \ifx\ifbeta\iftrue\from{scrbeta.dtx}{package,scrwfile}\fi
+ \from{scrwfile.dtx}{package,trace,scrwfile,identify,option,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}
+
+\ifToplevel{%
+ \generate{\usepreamble\defaultpreamble
+ \file{scrwfile.ins}{%
+ \from{scrwfile.dtx}{insfile}%
+ }%
+ \file{scrwfile.tex}{%
+ \from{scrwfile.dtx}{doc}%
+ }%
+ \file{scrwfile.drv}{%
+ \from{scrwfile.dtx}{driver}%
+ }%
+ }%
+}
+
+\ifToplevel{%
+ \Msg{**********************************************************************}
+ \Msg{*}
+ \ifbeta
+ \Msg{* THIS IS AN ALPHA OR BETA VERSION. YOU SHOULD NOT INSTALL OR USE IT!}
+ \Msg{* THERE MAY BE A LOT OF BUGS AT THIS VERSION!}
+ \Msg{* PLEASE INSTALL THE RELEASE YOU MAY FIND AT CTAN OR BERLIOS!}
+ \else
+ \Msg{* To finish the installation you have to copy the file `scrwfile.sty'}
+ \Msg{* to folder `tex/latex/scrwfile/' of one of your TEXMF trees.}
+ \Msg{* You should also produce the documentation using}
+ \Msg{*\space\space latex scrwfile.dtx}
+ \Msg{* and copy it to folder `doc/latex/scrwfile/' of one of your}
+ \Msg{* TEXMF trees.}
+ \Msg{*}
+ \Msg{* See the manual of your TeX distribution for more informations about}
+ \Msg{* package installation.}
+ \fi
+ \Msg{*}
+ \Msg{**********************************************************************}
+}
+
+%</insfile>
+%<*dtx|doc>
+%<*dtx>
+\csname endinput\endcsname
+%</dtx>
+% \fi
+%
+% \selectlanguage{english}
+%
+% \changes{v0.1}{2010/10/01}{start of new package}
+%
+%\iffalse^^A meta comment
+\chapter[{Spare and Replace Files Using \Package{scrwfile}}]
+{Spare and Replace Files Using \Package{scrwfile}%
+ \footnote{This chapter has been generated from \File{scrwfile.dtx}.}%
+}
+\labelbase{scrwfile}
+
+%\fi^^A meta comment
+% \begin{abstract}
+\TeX{} supports 18 write handles only. Handle 0 is used
+by \TeX{} itself (log file). \LaTeX{} needs at least handle 1 for
+\Macro{@mainaux}, handle 2 for \Macro{@partaux}, one handle for
+\Macro{tableofcontents}, one handle for \Macro{listoffigures}, one
+handle for \Macro{listoftables}, one handle for \Macro{makeindex}. So
+there are 11 left. Seams a lot and enough. But every new float, every new
+index and several other packages, e.g., \Package{hyperref} need write
+handles, too. Loading \Package{scrwfile} minimizes the need of write
+handles for list of floats or tables of contents. Additionally it allows
+to clone entries from one file to another file.
+% \end{abstract}
+%
+% \tableofcontents
+
+\section{The Idea}
+\label{sec:scrwfile.idea}
+
+Table of contents, list of figures, list of tables and other content
+directories make use of a small amount of \LaTeX{} kernel macros to open
+helper files, write to those helper files and read them. The first macro is
+\Macro{@starttoc}. It is used inside of \Macro{tableofcontents},
+\Macro{listoffigure}, \Macro{listoftable} and many \Macro{listof} macros of
+several packages.
+
+The primary macro \Macro{@starttoc} reads the helper file with the contents
+of the directory. But this kernel macro also calls for a new write handle
+and even opens the helper file for writing. So every call of this macro
+consumes one of the rare write handles.
+
+But while the document is processed nobody writes to that handle until
+\Macro{end}\PParameter{document}. Every write operation should be done using
+\Macro{addtocontents} or \Macro{addcontentsline}, that internally uses
+\Macro{addtocontents}, too. The macro \Macro{addtocontents} does not really
+write to the helper file, but writes a \Macro{@writefile} macro to the main
+or part \File{aux} file.
+
+At \Macro{end}\PParameter{document} the main \File{aux} file is closed and
+after closing \LaTeX{} inputs the main \File{aux} file. While this reading
+the \Macro{@writefile} macros are processed and only then the helper
+files are written.
+
+You see, there is no need to hold the helper files open while the document
+is processed. The helper files need to be opened only before reading the
+\File{aux} file at \Macro{end}\PParameter{document}. Even you do not need
+one write handle per helper file, if you only could write one after the
+other. In this case only one write handle would be needed. And that's the
+idea.
+
+\section{Using the Package}
+\label{sec:scrwfile.usage}
+
+First of all you have to load the package. This may be simply done using
+\begin{lstcode}
+ \usepackage{scrwfile}
+\end{lstcode}
+or if you are a package author by using
+\begin{lstcode}
+ \RequirePackage{scrwfile}
+\end{lstcode}
+This also activates the \emph{single file feature}.
+
+\subparagraph*{Note:} The package \Package{scrwfile} may be used with other
+files, that redefine \Macro{@starttoc}. But if these files do a complete
+new definition of \Macro{@starttoc} you should load them before
+\Package{scrwfile} to avoid errors.
+
+\subsection{The Single File Feature}
+
+To activate the single file feature, that means, that \Macro{\@starttoc}
+does not longer consumes write handles and every open and write to helper
+file action will be done at \Macro{end}\PParameter{document}, you only need
+to load package \Package{scrwfile}.
+
+See \autoref{sec:scrwfile.idea} for more information about the idea of this
+feature.
+
+\subparagraph*{Note:} Package \Package{scrwfile} uses package
+\Package{scrlfile} to redefine \Macro{@writefile} while
+\Macro{end}\PParameter{document}. Instead of directly writing to the helper
+files \Macro{@writefile} itself will write to a new helper file
+\Macro{jobname}\File{.wrt}. To write all the helper files this will file be
+input several times. One time for each helper file.
+
+\subsection{The Clone File Write Feature}
+
+Sometimes it is useful to input a file not only once but several times. As
+\Macro{@starttoc} does not open files for writing any longer, this may be
+done by simply using \Macro{\@starttoc} several times with the same
+extension. But sometimes you may have additional entries in only some of the
+content directories. Because of this, \Package{scrwfile} allows to copy all
+entries of a file to another file, too. We call this cloning.
+
+%\iffalse^^A meta-comment
+\begin{Declaration}
+%\fi^^A meta-comment
+% \DescribeMacro{\TOCclone}
+% The command
+ \Macro{TOCclone}%
+ \OParameter{heading}\Parameter{source}\Parameter{destination}
+%\iffalse^^A meta-comment
+\end{Declaration}
+\BeginIndex{Cmd}{TOCclone}%
+%\fi^^A meta-comment
+activates the clone feature for files with extensions \PName{source} and
+\PName{destination}. All entries to the file
+\Macro{jobname}\File{.}\PName{source} will be added to
+\Macro{jobname}\File{.}\PName{destination}, too.
+
+If extension \PName{destination} is a new one, \PName{destination} will be
+added to the list of known extensions using the \KOMAScript{} package
+\Package{tocbasic}.
+
+If the optional argument \PName{heading} is given, a new list-of macro
+\Macro{listof}\PName{destination} is defined. \PName{heading} will be used
+as section (or chapter) heading of this list. In this case several
+\Package{tocbasic} features of the \PName{source} will be copied to
+\PName{destination}, if and only if they have been set up when
+\Macro{TOCclone} was used. Feature \PName{nobabel} will always be set,
+because the language selection commands are part of the helper file and
+would be cloned, too.
+
+% \subparagraph*{How you can use it:}
+%\iffalse^^A meta-comment
+\begin{Example}
+%\fi^^A meta-comment
+E.g., you want a short table of contents
+with only the chapter level but an additional entry with the table of
+contents:
+\begin{lstcode}
+ \usepackage{scrwfile}
+ \TOCclone[Short \contentsname]{toc}{stoc}
+ \AtBeginDocument{%
+ % aux first opened at \begin{document}. So wait until this:
+ \addtocontents{toc}{% first toc entry:
+ \proctect\addcontentsline{stoc}{% write to Short Contents
+ \protect\tableofcontents% Contents
+ }%
+ }%
+ }
+ \begin{document}
+ \setcounter{tocdepth}{1}% show chapters only
+ \listofstoc% Write short table of contents
+ \setcounter{tocdepth}{6}% show all levels
+ \tableofcontents% Write table of contents
+\end{lstcode}
+You need at least three \LaTeX{} runs to get a short table of contents and a
+detailed table of contents. The detailed one produces an entry at the short
+one but this entry will not be part of the detailed table of contents.
+%\iffalse^^A meta-comment
+\end{Example}
+\EndIndex{Cmd}{TOCclone}
+%\fi^^A meta-comment
+
+%\iffalse
+%</dtx|doc>
+%\fi
+%
+% \StopEventually{%
+% \clearpage
+% \PrintIndex\PrintChanges}
+%
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+%<*identify>
+% \fi
+%
+% \begin{macrocode}
+\PackageWarningNoLine{scrwfile}{%
+ THIS IS AN ALPHA VERSION!\MessageBreak
+ USAGE OF THIS VERSION IS ON YOUR OWN RISK!\MessageBreak
+ EVERYTHING MAY HAPPEN!\MessageBreak
+ EVERYTHING MAY CHANGE IN FUTURE!\MessageBreak
+ THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!\MessageBreak
+ Maybe, it would be better not to load this package.%
+}
+% \end{macrocode}
+%\iffalse
+%</identify>
+%\fi
+%
+% \subsection{Options}
+% \iffalse
+%<*option>
+% \fi
+%
+% Currently we don't need options.
+%
+% \iffalse
+%</option>
+% \fi
+%
+% \subsection{Body}
+% \iffalse
+%<*body>
+% \fi
+%
+% \subsubsection{Needed Packages}
+%
+% Package \textsf{scrbase} is needed, because of using several \KOMAScript{}
+% basic commands.
+% \begin{macrocode}
+\RequirePackage{scrbase}[2010/09/17]
+% \end{macrocode}
+%
+% Package \textsf{tocbasic} is needed for the lists of cloned TOCs.
+% \begin{macrocode}
+\RequirePackage{tocbasic}[2010/10/01]
+% \end{macrocode}
+%
+% Package \textsf{scrlfile} is needed because of the \texttt{aux} file
+% handling and \verb|\protected@immediate@write|.
+% \begin{macrocode}
+\RequirePackage{scrlfile}[2010/09/30]
+% \end{macrocode}
+%
+% \subsubsection{\LaTeX{} Kernel Patchs}
+%
+% For some features we need to patch \LaTeX{} kernel macros. Those features
+% and macros are:
+% \begin{description}
+% \item[Single handle feature] means, that \LaTeX{} will no longer need a file
+% handle for every help file, but only one for all files. We will patch
+% |\@starttoc| and |\@writefile| to do so.
+% \item[Clone file feature] means, that every write to one file may be done to
+% another file, too. We will patch |\@writefile| to do so.
+% \end{description}
+% Every patch should be minimum invasive, so that files, that are not under
+% \textsf{scrwfile}'s control are changed as little as possible.
+%
+% \begin{macro}{\scrwfile@if@only}
+% First of all we check, if the file should be handled by \textsf{scrwfile}.
+% \begin{macrocode}
+\newcommand*{\scrwfile@if@only}[1]{%
+ \begingroup
+ \scr@ifundefinedorrelax{scrwfile@only}{\@tempswatrue}{%
+ \@tempswafalse
+ \edef\reserved@b{#1}%
+ \@for\reserved@a:=\scrwfile@only\do
+ {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
+ }%
+ \if@tempswa
+ \scr@ifundefinedorrelax{scrwfile@never}{}{%
+ \edef\reserved@b{#1}%
+ \@for\reserved@a:=\scrwfile@only\do
+ {\ifx\reserved@a\reserved@b\@tempswafalse\fi}%
+ }%
+ \fi
+ \expandafter\endgroup
+ \if@tempswa
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrwfile@starttoc}
+% \begin{macro}{\scrwfile@@starttoc}
+% This is the internal redefinition of |\@starttoc|. First of all test, if it
+% should be used, then use it or not.
+% \begin{macrocode}
+\newcommand*{\scrwfile@starttoc}[1]{%
+ \scrwfile@if@only{#1}{\scrwfile@@starttoc}{\scrwfile@saved@starttoc}{#1}%
+}
+\newcommand*{\scrwfile@@starttoc}[1]{%
+%<trace> \typeout{Use my own \string\@starttoc\space for #1}%
+ \begingroup
+ \if@filesw
+ \xdef\scrwfile@writefilelist{\scrwfile@writefilelist,#1}%
+ \fi
+ \@fileswfalse
+ \scrwfile@saved@starttoc{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scrwfile@writefile}
+% \begin{macro}{\scrwfile@@writefile}
+% \begin{macro}{\scrwfile@wrtout}
+% \begin{macro}{\scrwfile@writefilelist}
+% This is the internal redefinition of |\@writefile|. First of all test, if it
+% should be used, then use it or not.
+% \begin{macrocode}
+\newcommand*{\scrwfile@writefile}[1]{%
+ \scrwfile@if@only{#1}{\scrwfile@@writefile}{\scrwfile@saved@writefile}{#1}%
+}
+\newcommand{\scrwfile@@writefile}[2]{%
+%<trace> \typeout{Use my own \string\@writefile\space for #1}%
+ \ifnum\scrwfile@wrtout>0
+ \begingroup
+ \@temptokena{#2}%
+ \immediate\write\scrwfile@wrtout{%
+ \string\@writefile{#1}{\the\@temptokena}%
+ }%
+% \end{macrocode}
+% This was the entry for the real file. But we also may have clone files:
+% \begin{macrocode}
+ \scrwfile@process@clones{#1}%
+ \endgroup
+ \fi
+}
+\chardef\scrwfile@wrtout\z@
+\newcommand*{\scrwfile@writefilelist}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@writefile}
+% We have to add the single handle feature and the clone file feature to this.
+% \begin{macro}{\scrwfile@saved@writefile}
+% This is the original definition, that will be used, if the file is not under
+% \texttt{scrwfile}'s control.
+% \begin{macrocode}
+\newcommand*{\scrwfile@saved@writefile}{}
+\BeforeClosingMainAux{%
+ \ifx\scrwfile@writefilelist\@empty\else
+ \let\scrwfile@saved@writefile\@writefile
+ \let\scrwfile@wrtout\@partaux
+ \immediate\openout\scrwfile@wrtout \jobname.wrt
+ \let\@writefile\scrwfile@writefile
+ \fi
+}
+\AfterReadingMainAux{%
+ \ifx\scrwfile@writefilelist\@empty\else
+ \immediate\closeout\scrwfile@wrtout
+ \chardef\scrwfile@wrtout\z@
+ \begingroup
+ \let\@writefile\scrwfile@saved@writefile
+ \@for\@currext:=\scrwfile@writefilelist\do{%
+ \begingroup
+ \ifx\@currext\@empty\else
+ \scr@ifundefinedorrelax{tf@\@currext}{%
+%<trace> \typeout{Process extension: `\@currext'}
+ \immediate\openout\@partaux \jobname.\@currext
+ \expandafter\let\csname tf@\@currext\endcsname\@partaux
+ \@input@{\jobname.wrt}%
+ \immediate\closeout\@partaux
+ }{}%
+ \fi
+ \endgroup
+ }%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@starttoc}
+% We have to add the single handle feature to this.
+% \begin{macro}{\scrwfile@saved@starttoc}
+% This is the original definition, that will be used, if the file is not under
+% \texttt{scrwfile}'s control.
+% \begin{macrocode}
+\newcommand*{\scrwfile@saved@starttoc}{}
+\let\scrwfile@saved@starttoc\@starttoc
+\let\@starttoc\scrwfile@starttoc
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Clone TOC Feature}
+%
+% \textsf{scrwfile} may clone a TOC, that means, every entry to one file will
+% be copied to other files, too. You must not clone recursively!
+%
+% \begin{macro}{\scrwfile@process@clones}
+% \begin{macrocode}
+\newcommand*{\scrwfile@process@clones}[1]{%
+ \scr@ifundefinedorrelax{scrwfile@clone@#1}{}{%
+ \begingroup
+ \let\@@protect\protect\let\protect\@empty\afterassignment\restore@protect
+ \edef\reserved@b{\csname scrwfile@clone@#1\endcsname}%
+ \edef\reserved@c{,#1}%
+ \@for \reserved@a:=\reserved@b\do {%
+ \@tempswatrue
+ \@for \reserved@d:=\reserved@c\do {%
+ \ifx\reserved@d\reserved@a\@tempswafalse\fi
+ }%
+ \if@tempswa
+%<trace> \typeout{clone entry from `#1' to `\reserved@a'}%
+ \immediate\write\scrwfile@wrtout{%
+ \string\@writefile{\reserved@a}{\the\@temptokena}%
+ }%
+ \edef\reserved@c{\reserved@c,\reserved@a}%
+ \fi
+ }%
+ \endgroup
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TOCclone}
+% Clone the entries from the second (first mandatory) argument TOC to the
+% third (second mandatory) argument TOC. If the first (optional) argument was
+% given, define |\listof#3name| to this and also define |\listof#3| and clone
+% the toc features \texttt{leveldown}, \texttt{numbered}, \texttt{onecolumn}
+% and \texttt{totoc} of |#2| to |#3|. The toc feature \texttt{nobabel} will
+% always be set, because the babel entries at TOC |#3| will be cloned from TOC
+% |#2|. \textbf{Note:} We use owner \texttt{TOCclone} for all cloned
+% extensions.
+% \begin{macrocode}
+\newcommand*{\TOCclone}[3][]{%
+ \scr@ifundefinedorrelax{scrwfile@clone@#2}{%
+ \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{%
+ #3,\protect\csname scrwfile@clone@#3\endcsname
+ }%
+ }{%
+ \edef\reserved@b{\csname scrwfile@clone@#2\endcsname}%
+ \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{%
+ \csname scrwfile@clone@#2\endcsname,%
+ #3,%
+ \protect\csname scrwfile@clone@#3\endcsname
+ }%
+ }%
+ \scr@ifundefinedorrelax{scrwfile@clone@#3}{%
+ \expandafter\let\csname scrwfile@clone@#3\endcsname\@empty
+ }{}%
+ \ifattoclist{#3}{%
+ \PackageWarning{scrwfile}{`#3' already under control of
+ tocbasic.\MessageBreak
+ Nevertheless features will be set
+ }%
+ }{%
+ \addtotoclist[TOCclone]{#3}%
+ }%
+ \setuptoc{#3}{nobabel}%
+ \ifstr{#1}{}{%
+ }{%
+ \@namedef{listof#3name}{#1}%
+ \@namedef{listof#3}{\listoftoc{#3}}%
+ \iftocfeature{#2}{leveldown}{\setuptoc{#3}{leveldown}}{}%
+ \iftocfeature{#2}{numbered}{\setuptoc{#3}{numbered}}{}%
+ \iftocfeature{#2}{onecolumn}{\setuptoc{#3}{leveldownonecolumn}}{}%
+ \iftocfeature{#2}{totoc}{\setuptoc{#3}{totoc}}{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</body>
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrwfile.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: