summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/labelcas/labelcas.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/labelcas/labelcas.dtx')
-rw-r--r--Master/texmf-dist/source/latex/labelcas/labelcas.dtx1092
1 files changed, 786 insertions, 306 deletions
diff --git a/Master/texmf-dist/source/latex/labelcas/labelcas.dtx b/Master/texmf-dist/source/latex/labelcas/labelcas.dtx
index 6ec5108c23c..d3be1f91ac8 100644
--- a/Master/texmf-dist/source/latex/labelcas/labelcas.dtx
+++ b/Master/texmf-dist/source/latex/labelcas/labelcas.dtx
@@ -2,7 +2,7 @@
%
% Copyright (C) 2006 by Ulrich Diez <ulrich.diez@alumni.uni-tuebingen.de>
%
-% This work may be distributed and/or modified under the conditions of
+% 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:
@@ -12,27 +12,59 @@
% and version 1.3 or later is part of all distributions of LaTeX version
% 2003/12/01 or later.
%
+% This Work has the LPPL maintenance status `author-maintained'.
+%
+% The Current Maintainer of this work is Ulrich Diez.
+%
+% This Work consists of the files labelcas.dtx, labelcas.ins, README and
+% the derived files labelcas.sty and labelcas.pdf.
+%
% \fi
%
% \iffalse
-%<labelcas>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<labelcas>\NeedsTeXFormat{LaTeX2e}
%<labelcas>\ProvidesPackage{labelcas}
-%<labelcas> [2006/04/27 v1.07 check label-existence and fork accordingly]
-%
+%<labelcas> [2006/08/14 v1.12 check label-existence and fork accordingly]
%<*driver>
\documentclass[a4paper]{ltxdoc}
+\makeatletter
+\@ifdefinable\saved@wrindex{\global\let\saved@wrindex\@wrindex}
+\makeatother
+\usepackage[colorlinks, linkcolor=linkcolour, urlcolor=linkcolour
+%, draft%
+]{hyperref}
+\usepackage{color}
+\definecolor{linkcolour}{cmyk}{0.64,0,0.95,0.40}% <-Olive Green
\usepackage[DefineLabelcase]{labelcas}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
%\OnlyDescription
+\pagestyle{plain}%
+\setlength{\textheight}{52\baselineskip}
+\setlength{\topmargin}{\paperheight}
+\addtolength{\topmargin}{-\textheight}
+\setlength{\topmargin}{.5\topmargin}
+\addtolength{\topmargin}{-1in}
+\addtolength{\topmargin}{-\voffset}
+\addtolength{\topmargin}{-\headheight}
+\addtolength{\topmargin}{-\headsep}
+\setlength{\footskip}{\paperheight}
+\addtolength{\footskip}{-\textheight}
+\setlength{\footskip}{.15\footskip}
+\addtolength{\footskip}{\baselineskip}
+\makeatletter
+\@settopoint{\textheight}
+\@settopoint{\topmargin}
+\@settopoint{\footskip}
+\makeatother
\begin{document}
\DocInput{labelcas.dtx}
\end{document}
%</driver>
% \fi
%
-% \CheckSum{390}
+% \CheckSum{375}
%
% \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
@@ -50,24 +82,123 @@
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
+% \iffalse meta-comment
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+% ! !
+% ! !!! In this TeX-input-file henceforth alignment-tab "&" is !!! !
+% ! !!! used for commenting- and line-breaking-purposes. !!! !
+% ! !
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+% \fi
% \catcode`\&=14\relax
-% &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
-% & &
-% & !!!!! Henceforth alignment-tab is used for commenting- and !!!!! &
-% & !!!!! line-breaking-purposes in the documentation-parts. !!!!! &
-% & &
-% &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
-%
-% & Put an 's' behind the word 'italic' in the index-prologue:
+%
% \makeatletter
+%
+% & increase \MacroIndent so that 3-digit line-numbers don't stick out:
+%
+% \setlength\MacroIndent{1.5\MacroIndent}&
+%
+% & Add toc-entries and bookmarks to change-history and index, also put
+% & an 's' behind the word 'italic' in the index-prologue:
+%
+% \renewcommand\tableofcontents{&
+% \section*{&
+% \phantomsection
+% \Hy@raisedlink{\pdfbookmark[1]{\contentsname}{section.0}}&
+% \contentsname
+% \@mkboth{\MakeUppercase\contentsname}&
+% {\MakeUppercase\contentsname}&
+% }&
+% \@starttoc{toc}&
+% }&
+%
+% \renewcommand*\glossary@prologue{&
+% \section*{&
+% \phantomsection
+% \customaddcontentsline{toc}&
+% {section}&
+% {Change History}&
+% {\protect\numberline{\protect\null}}&
+% Change History&
+% \@mkboth{\MakeUppercase{Change History}}&
+% {\MakeUppercase{Change History}}&
+% }&
+% }&
+%
% \renewcommand*\index@prologue{&
-% \section*{Index}\markboth{Index}{Index}Numbers written in italics
-% refer to the page where the corresponding entry is described; numbers
-% underlined refer to the \ifcodeline@index code line of the \fi
-% definition; numbers in roman refer to the \ifcodeline@index code
-% lines \else pages \fi where the entry is used.&
+% \section*{&
+% \phantomsection
+% \customaddcontentsline{toc}&
+% {section}&
+% {Index}&
+% {\protect\numberline{\protect\null}}&
+% Index&
+% \@mkboth{\MakeUppercase{Index}}&
+% {\MakeUppercase{Index}}&
+% }&
+% Numbers written in italics refer to the page where the
+% corresponding entry is described; numbers underlined refer to the
+% \ifcodeline@index code line of the \fi definition; numbers in roman
+% refer to the \ifcodeline@index code lines \else pages \fi where the
+% entry is used.&
+% }&
+%
+% \newcommand*\customaddcontentsline[4]{&
+% \begingroup
+% \let\label\@gobble
+% \let\textlatin\@firstofone
+% \ifx\@currentHref\@empty
+% \Hy@Warning{No destination for bookmark of
+% \string\customaddcontentsline,&
+% \MessageBreak destination is added}&
+% \phantomsection
+% \fi
+% \expandafter\ifx csname toclevel@#2\endcsname\relax
+% \begingroup
+% \def\Hy@tempa{#1}&
+% \ifx\Hy@tempa\Hy@bookmarkstype
+% \Hy@WarningNoLine{bookmark level for unknown #2 defaults to 0}&
+% \else
+% \Hy@Info{bookmark level for unknown #2 defaults to 0}&
+% \fi
+% \endgroup
+% \expandafter\gdef\csname toclevel@#2\endcsname{0}&
+% \fi
+% \edef\Hy@toclevel{\csname toclevel@#2\endcsname}&
+% \Hy@writebookmark{\csname the#2\endcsname}{#4#3}{\@currentHref}&
+% {\Hy@toclevel}{#1}&
+% \ifHy@verbose
+% \typeout{&
+% pdftex: bookmark at \the\inputlineno:
+% {\csname the#2\endcsname}{#4#3}{\@currentHref}{\Hy@toclevel}{#1}&
+% }&
+% \fi
+% \addtocontents{#1}&
+% {\protect
+% \customcontentsline{#2}{#3}&
+% {\thepage}{\@currentHref}{#4}}&
+% \endgroup
+% }&
+%
+% \newcommand*\customcontentsline[5]{&
+% \ifx\\#4\\
+% \csname l@#1\endcsname{#5#2}{#3}&
+% \else
+% \ifHy@linktocpage
+% \csname l@#1\endcsname{{#5#2}}&
+% {\hyper@linkstart
+% {link}{#4}{#3}&
+% \hyper@linkend
+% }&
+% \else
+% \csname l@#1\endcsname{#5&
+% \hyper@linkstart
+% {link}{#4}{#2}&
+% \hyper@linkend
+% }{#3}&
+% \fi
+% \fi
% }&
-% \makeatother
%
% & Write the word '\if' from the tocs:
% \DeclareRobustCommand\Outif{\string\if}&
@@ -86,8 +217,24 @@
% \MacroFont\string #1&
% }&
%
-% & Write macro-names with <prefix> into the index:
-% \makeatletter
+% & Write index-entries in main-text:
+% \newcommand*\MacroIndexEntry[1]{&
+% \@bsphack
+% {&
+% \let\special@index\index
+% \ifx\pref\empty
+% \SpecialIndex@{#1}{\encapchar usage}&
+% \else
+% \expandafter\SpecialIndex@
+% \expandafter{&
+% \expandafter<&
+% \pref!>#1}{\encapchar usage}&
+% \fi
+% }&
+% \@esphack
+% }&
+%
+% & Write macro-names with <prefix> into the index in macro-description:
% \renewcommand*\SpecialMainIndex[1]{&
% \@bsphack
% \ifx\pref\empty
@@ -101,6 +248,29 @@
% \@esphack
% }&
%
+% & Write macro-names with <prefix> into the index in implementation:
+% \newcommand*\InsertPrefixedUsageToIndex[2]{&
+% \@bsphack
+% {&
+% \expandafter\edef
+% \expandafter\@tempa
+% \expandafter{&
+% \expandafter\string
+% \csname<#1!>#2\endcsname}&
+% \codeline@indextrue
+% \let\special@index\codeline@wrindex
+% \expandafter\SpecialIndex\expandafter{\@tempa}&
+% }&
+% \@esphack
+% }&
+%
+% & Compensate gap between macrocode-environments if no visible/
+% & printable material is between:
+% \newcommand*\macrocodeitemsep{0pt}&
+% \newcommand*\compensategap{&
+% \ifvmode\unskip\vskip\macrocodeitemsep\fi\@inlabeltrue
+% }&
+%
% & Write macro-names with <prefix> into change-history:
% \newcommand*\Patchsavedatmacroname{&
% \ifx\pref\empty
@@ -112,49 +282,224 @@
% \csname<\pref!>\saved@macroname\endcsname}&
% \fi
% }&
-% \makeatother
%
-% & The <prefix>:
+% & The <prefix>-placeholder:
% \newcommand*\pref{}&
-% \let\pref\empty
%
-% \changes{v1.0}{2006/01/04}{Initial public release}
-% \changes{v1.01}{2006/01/06}{Fixed documentation-inaccuracies}
-% \changes{v1.02}{2006/01/29}{Fixed documentation-inaccuracies}
-% \changes{v1.04}{2006/03/04}{Fixed documentation-inaccuracies}
-% \changes{v1.05}{2006/03/09}{Fixed documentation-inaccuracies}
-% \changes{v1.07}{2006/04/27}{Fixed documentation-inaccuracies}
+% & Type stuff between angles in meta-format in index and change-history
+% & (\anglechange patches \dospecials which is called by \verb to make
+% & angle active also in verbatim-mode):
+% {&
+% \catcode`\<=13\relax
+% \catcode`\>=12\relax
+% \gdef\anglechange{&
+% \let\olddospecials\dospecials
+% \def\dospecials{&
+% \olddospecials
+% \catcode`\>=12
+% \catcode`\<=13
+% \def<####1>{\textrm{\meta{####1}}}&
+% }&
+% }&
+% }&
%
-% \GetFileInfo{labelcas.sty}
+% & create document-title-date from package-filedate
+% \newcommand*\filedatetodate{%
+% \expandafter\@filedatetodate\filedate\@nil
+% }%
+% \@ifdefinable\@filedatetodate{&
+% \def\@filedatetodate#1/#2/#3\@nil{&
+% {&
+% \edef\@tempa{%
+% \ifcase#2\or January\or February\or March\or April\or May&
+% \or June\or July\or August\or September\or October&
+% \or November\or December&
+% \fi
+% \space\number#3, \number#1&
+% }&
+% \expandafter}\expandafter\date\expandafter{\@tempa}&
+% }&
+% }&
%
-% \DoNotIndex{\@empty,\@firstoftwo,\@ifdefinable,\@secondoftwo,\@gobble,&
-% \@nil,\@sptoken,\@temptokena,\toks@,\begingroup,\csname,&
-% \DeclareOption,\DeclareRobustCommand,\def,\edef,\else,&
-% \endcsname,\endgroup,\expandafter,\fi,\futurelet,\global,&
-% \ifx,\let,\long,\newcommand,\ProcessOptions,\relax,\the}&
+% & hyperref-support for index etc:
%
-% \title{&
-% The \textsf{labelcas} package&
-% \thanks{This document corresponds to \textsf{labelcas}~\fileversion,
-% dated \filedate.}&
-% }
-% \author{Ulrich Diez\\ \texttt{ulrich.diez@alumni.uni-tuebingen.de}}
+% \renewcommand*\SpecialIndex[1]{&
+% \@bsphack
+% \special@index{&
+% \expandafter\@gobble
+% \string #1\actualchar
+% \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
+% \encapchar sourceusage&
+% }&
+% \@esphack
+% }&
+%
+% \newcommand*\@DefineIndexEntryFormat[4]{&
+% \expandafter\gdef\csname #4\endcsname##1{&
+% \csname @#4\endcsname##1,\@nnil,\@nnil,&
+% }&
+% \toks@{#1{#2{#3}}}&
+% \expandafter\xdef\csname @#4\endcsname##1,##2,{&
+% \noexpand\ifx\noexpand\@nnil##1&
+% \noexpand\expandafter\noexpand\@gobble
+% \noexpand\else
+% \noexpand\expandafter\noexpand\@firstofone
+% \noexpand\fi
+% {&
+% \noexpand\ifx\noexpand\@nnil##2&
+% \noexpand\expandafter\noexpand\@firstoftwo
+% \noexpand\else
+% \noexpand\expandafter\noexpand\@secondoftwo
+% \noexpand\fi
+% {&
+% \noexpand\bgroup
+% \the\toks@
+% \noexpand\lc@remleadspace,##1, ,,&
+% \csname @#4\endcsname##2,&
+% }&
+% {&
+% \noexpand\bgroup
+% \the\toks@
+% \noexpand\lc@remleadspace,##1, ,,&
+% , \csname @#4\endcsname##2,&
+% }&
+% }&
+% }&
+% }&
+%
+% \newcommand*\DefineIndexEntryFormat[3]{&
+% {&
+% \toks@{{\def\@tempa,##1,}}&
+% \edef\@tempa{\the\toks@}&
+% \toks@{{\egroup\link@sanitize##1-\@nil{#2}}}&
+% \edef\@tempb{\the\toks@}&
+% \expandafter\expandafter
+% \expandafter \@DefineIndexEntryFormat
+% \expandafter\@tempa
+% \@tempb{#3}{#1}&
+% }&
+% }&
+%
+% \@ifdefinable\link@sanitize{&
+% \def\link@sanitize#1-#2\@nil#3{\link@@sanitize#1,\@nil{#3}}&
+% }&
+% \@ifdefinable\link@@sanitize{&
+% \def\link@@sanitize#1,#2\@nil#3{\hyperlink{#3.#1}}&
+% }&
+% \global\let\@wrindex\saved@wrindex
+%
+% \DefineIndexEntryFormat{sourceusage}{line}{#1}&
+% \DefineIndexEntryFormat{main}{line}{\underline{#1}}&
+% \DefineIndexEntryFormat{usage}{page}{\textit{#1}}&
+% \DefineIndexEntryFormat{glossaryusage}{page}{#1}&
+%
+% \let\oldtheCodelineNo\theCodelineNo
+% \renewcommand*\theCodelineNo{&
+% \Hy@raisedlink{&
+% \hypertarget{line.\arabic{CodelineNo}}{}&
+% }&
+% \oldtheCodelineNo
+% }&
+%
+% \renewcommand*\changes@[3]{&
+% \protected@edef\@tempa{&
+% \noexpand\glossary{&
+% #1\levelchar
+% \ifx\saved@macroname\@empty
+% \space\actualchar\generalname
+% \else
+% \expandafter\@gobble\saved@macroname
+% \actualchar\string\verb\quotechar*\verbatimchar
+% \saved@macroname\verbatimchar
+% \fi
+% :\levelchar #3&
+% \noexpand\encapchar glossaryusage&
+% }&
+% }&
+% \@tempa\endgroup
+% \@esphack
+% }&
+%
+% \let\oldtheindex\theindex
+% \def\theindex{&
+% \oldtheindex
+% \let\oldbfseries\bfseries
+% \def\bfseries\hfil##1\hfil{&
+% \phantomsection
+% \oldbfseries\hfil##1\hfil
+% \Hy@raisedlink{\pdfbookmark[2]{##1}{index.##1}}&
+% }&
+% }&
+%
+% & suppress page-number of change-history-item:
+% \@ifdefinable\suppresspage{&
+% \DeclareRobustCommand\suppresspage[3]{\efill}%
+% }&
+%
+% & \nameref without hyperlink (to be used within \hyperref etc):
+% \@ifdefinable\nolinknameref{&
+% \DeclareRobustCommand*\nolinknameref[1]{&
+% \@safe@activestrue
+% \expandafter\real@setref
+% \csname r@#1\endcsname\@thirdoffive{#1}&
+% \@safe@activesfalse
+% }&
+% }&
+%
+% & end of hyperref-support-section
+%
+% \makeatother
%
+% \changes{v1.0}{2006/01/04}%
+% {Initial public release.\suppresspage}
+% \changes{v1.01}{2006/01/06}%
+% {Fixed documentation-inaccuracies.\suppresspage}
+% \changes{v1.02}{2006/01/29}%
+% {Fixed documentation-inaccuracies.\suppresspage}
+% \changes{v1.04, v1.05}{2006/03/04 2006/03/09}%
+% {Fixed documentation-inaccuracies.\suppresspage}
+% \changes{v1.08}{2006/07/10}%
+% {DefineLabelcase-option declared within group for
+% \textsf{\mbox{hyperref}}-compatibility.\suppresspage}
+% \changes{v1.09}{2006/07/16}{Hyperlinks in documentation.\suppresspage}
+% \changes{v1.12}{2006/08/14}%
+% {Fixed documentation-inaccuracies.\suppresspage}
+% \DoNotIndex{\@empty,\@firstofone,\@firstoftwo,\@gobble,\@ifdefinable,&
+% \@nil,\@secondoftwo,\@sptoken,\@temptokena,\toks@,&
+% \begingroup,\csname,\DeclareOption,\DeclareRobustCommand,&
+% \def,\edef,\else,\endcsname,\endgroup,\expandafter,\fi,&
+% \futurelet,\global,\ifx,\let,\long,\newcommand,&
+% \ProcessOptions,\relax,\the}&
+%
+% \GetFileInfo{labelcas.sty}
+% \filedatetodate
+% \title{&
+% The \textsf{\mbox{labelcas}} package&
+% \thanks{&
+% \vtop{\noindent This document corresponds to
+% \mbox{\textsf{labelcas}~\fileversion}, dated \filedate.\newline
+% Usage and distribution under \textsf{\mbox{LPPL}}-conditions. See
+% \hyperref[sec6]{\emph{\ref*{sec6}~\nolinknameref{sec6}}} for more
+% details.&
+% }&
+% }&
+% }&
+% \author{Ulrich Diez}&
% \maketitle
%
% \begin{abstract}
-% \noindent This {\LaTeXe}-package provides macros |\eachlabelcase| and
-% |\lotlabelcase| as a means of forking dependent on whether specific
+% \noindent This \LaTeXe-package provides macros |\eachlabelcase| and
+% |\lotlabelcase| as a means of forking depending on whether specific
% labels are defined in the current document.
% \end{abstract}
%
% \tableofcontents
-% \newpage
%
+% \newpage
% \section{Introduction}\label{sec1}
%
-% The package's name |labelcas| is an eight-letter abbreviation for the
-% phrases ``label'' and ``case''.
+% The package's name \textsf{\mbox{labelcas}} is an eight-letter
+% abbreviation for the phrases ``label'' and ``case''.
%
% There are rare occasions where the author of a document would like to
% have detected whether specific labels are defined/in use within the
@@ -162,34 +507,36 @@
% This package provides the macros |\eachlabelcase| and |\lotlabelcase|
% which might facilitate this task.
%
-% A mechanism for branching dependent on the existence of labels might be
-% handy, e.g., when extracting a ``snippet'' from a large document: In
-% case that within the snippet a label/document-part is referenced which
-% is outside the snippet's scope, ugly |`?'| will intersperse the
-% resulting output-file and warnings about undefined references will
-% accumulate within the log-file.
+% A mechanism for branching depending on whether referencing-labels exist,
+% might be handy, e.g., when extracting a ``snippet'' from a large
+% document: In case that within the snippet a label/document-part is
+% referenced which is outside the snippet's scope, ugly `{\makeatletter
+% \nfss@text{\reset@font\bfseries??}}' will intersperse the resulting
+% output-file and warnings about undefined references will accumulate
+% within the log-file.
%
% By testing the label's existence, you can catch up the error and either
% change the way of referencing (e.g., refer to the snippet's bibliography
% instead) or completely suppress referencing for those cases. (By using
-% \emph{David Carlisle's} |xr|- or |xr-hyper|-package, you can make
-% available labels of the large document to the snippet also. A label not
-% defined in the snippet can be picked up from the large document\dots)
+% \textsf{\mbox{David Carlisle's}} \textsf{xr}- or
+% \textsf{\mbox{xr-hyper}}-package, you can make available labels of the
+% large document to the snippet also. A label not defined in the snippet
+% can be picked up from the large document\dots)
%
% \subsection{Space notation}
%
% When listing some piece of \TeX-source-code, you may need to visibly
% distinguish word-separation from single space-characters. The symbol
% \verb*+ + is chosen whenever it is important to give a visible
-% impression of a space-character in a (possibly \textsl{ASCII}-encoded)
-% \TeX-input-file. {\verb*+ +}\nobreak\(_{x}\) does not represent a
-% character of an input-file but a token which occurs after tokenizing the
-% input. The token's category-code is \(x\), the character-number usually
-% is \(32\), which is the \textsl{ASCII}-number of the space-character.
+% impression of a space-character in a (possibly ASCII-encoded) \TeX-&
+% input-file. {\verb*+ +}\nobreak\(_{x}\) does not represent a character
+% of an input-file but a token which occurs after tokenizing the input.
+% The token's category-code is \(x\), the character-number usually is
+% \(32\), which is the ASCII-number of the space-character.
%
% \section{Package-loading}\label{sec2}
%
-% The package is loaded within in the document-preamble by |\usepackage|.
+% The package is to be loaded in the document-preamble by |\usepackage|.
% \medskip
%
% |\usepackage{labelcas}|~~~or
@@ -197,10 +544,10 @@
% |\usepackage[DefineLabelcase]{labelcas}|.
% \medskip
%
-% The only package-option is |DefineLabelcase|. It's usage is described in
-% section~\ref{sec4} ``Package option---Different spaces, different
-% separators''.
+% The only package-option is |DefineLabelcase|. Its usage is described in
+% section~\hyperref[sec4]{\emph{\ref*{sec4}~\nolinknameref{sec4}}}.
%
+% \newpage
% \section{The macros}\label{sec3}
%
% \subsection{Basic usage}\label{sec3-1}
@@ -261,7 +608,7 @@
% \vtop{&
% \noindent
% 1. all labels are defined,\\
-% 2. none of the labels are defined,\\
+% 2. none of the labels is defined,\\
% 3. some labels are defined/some are undefined,\\
% 4. the list does not contain any label.&
% }&
@@ -301,19 +648,19 @@
% \item Testing for labels which are \textbf{not definable} according to
% the syntax-rules will lead to \TeX-internal error-messages and
% deliver unexpected/unwanted results!
-% \item ``Label- and referencing management'' in {\LaTeXe} is done by
+% \item ``Label- and referencing management'' in \LaTeXe\ is done by
% means of the aux-file, the content of which is gathered and
-% corrected during several {\LaTeX}-runs, and which does not yet
+% corrected during several \LaTeX-runs, and which does not yet
% exist in the first run. So, in the first run, all labels from the
% current document are undefined---when applying |\...labelcase| to
% labels of the current document, it will in any case take at least
-% two {\LaTeX}-runs until everything matches out correctly.
+% two \LaTeX-runs until everything matches out correctly.
% \item It was mentioned that, in the macros |\eachlabelcase| and
% |\lotlabelcase|, space-tokens which surround the argument-&
% triplets/label-names, will be gobbled. There are situations where
% the category-code of the input-character \verb*+ + is changed---&
% e.g., due to a preceding |\obeyspaces| or when using some package
-% where the encoding of \TeX-input-files it is played around with.
+% where the encoding of \TeX-input-files is played around with.
% In such cases, the input-character \verb*+ + does not get
% tokenized as space-token any more but as some \verb*+ +\nobreak&
% \(_{\neq10}\)-token, so that in such cases, triplets/labels in
@@ -324,29 +671,30 @@
% set of these macros where the appropriate token, e.g.,
% \verb*+ +\nobreak\(_{13}\)~(active-space) instead of
% \verb*+ +\nobreak\(_{10}\)~(space-token), is taken into account.
-% How this is done, is described in section~\ref{sec4} ``Package
-% option---Different spaces, different separators''.
+% How this is done, is described in
+% section~\hyperref[sec4]{\emph{\ref*{sec4}~\nolinknameref{sec4}}}.
% \item In the very unlikely case{\makeatletter\footnote{The case is very
-% unlikely because it is a convention in {\LaTeXe} to leave
+% unlikely because it is a convention in \LaTeXe\ to leave
% {\verbatim@font\string\@nil} undefined. If labels are defined in
% terms of macros, these macros are to expand to something that can
% be evaluated by a {\verbatim@font\string\csname\dots\string&
% \endcsname}-construct. If they are to expand to something, they
% must be defined\dots}} that you wish |\lotlabelcase| (or variants
-% thereof\thinspace\footnote{\(_{^\rightarrow}\)section~\ref{sec4}~&
-% ``Package option---Different spaces, different separators''.})&
-% \addtocounter{footnote}{-1} to scan for the label |\@nil|, |\@nil|
+% thereof\thinspace\footnote{\(\rightarrow\)&
+% \hyperref[sec4]{\emph{\ref*{sec4}~\nolinknameref{sec4}}}.})&
+% to scan for the label |\@nil|, |\@nil|
% has to be put in braces and/or has to be surrounded by space-&
% tokens. This is because the internal iterator-macros terminate on
% |\@nil|.
% \item Internally token-registers are used and temporary-macros get
% defined. So the macros |\eachlabelcase| and |\lotlabelcase| (and
-% all variants\footnotemark) are not ``full-expandable''. This
-% means, |\edef| or |\write| or control-sequences the like which
-% evaluate their arguments fully, cannot be applied to them.&
-% \footnote{In any case it cannot be ensured that all arguments
-% supplied are ``full-expandable''\dots} Therefore they are declared
-% robust.
+% all variants&
+% \addtocounter{footnote}{-1}\addtocounter{Hfootnote}{-1}&
+% \footnotemark) are not ``full-expandable''. This means, |\edef| or
+% |\write| or control-sequences the like which evaluate their
+% arguments fully, cannot be applied to them.\footnote{In any case it
+% cannot be ensured that all arguments supplied are
+% ``full-expandable''\dots} Therefore they are declared robust.
% \item |\lotlabelcase| and |\eachlabelcase| can be nested. Inner
% instances will be gathered into the action-queues of outer
% instances.
@@ -365,13 +713,17 @@
% |\expandafter\renewcommand\expandafter\macro\expandafter{\macro}|&
% .\\
% But think about it. These macros don't take arguments!
+% \item If you use the arguments of |\lotlabelcase|/|\eachlabelcase| for
+% defining other referencing-labels, things can easily get very
+% confusing\dots
% \end{itemize}
%
+% \newpage
% \subsubsection{Examples}\label{sec3-1-2}
% \smallskip
%
-% Within this document, only the labels |sec1|, |sec2|, |sec3| and |sec4|
-% are defined.\smallskip
+% Within this document, only the labels |sec1|, |sec2|, |sec3|, |sec4|,
+% |sec5| and |sec6| are defined.\bigskip
%
% \noindent
% \begin{minipage}{\linewidth}
@@ -496,8 +848,18 @@
% }&
% \end{minipage}
%
-% \subsection{Advanced usage (brace-matching,{\ttfamily\selectfont\Outif&
-% \dots\thinspace}, defining macros)}
+% \newpage
+% \subsection{&
+% \texorpdfstring
+% {&
+% Advanced usage (brace-matching, {\ttfamily\selectfont\Outif&
+% \dots\thinspace}, defining macros)&
+% }&
+% {&
+% Advanced usage (brace-matching, {\textbackslash if\dots}, defining
+% macros)&
+% }&
+% }
%
% \begin{itemize}
% \item Braces within the arguments/comma-separated items must be
@@ -538,7 +900,7 @@
% {UNDEF} {a is a\else} {a is b\else} ,
% {sec3} {a is not a\fi.}{a is not b\fi.}, }&
% \end{minipage}
-% \bigskip
+% \medskip
%
% When trying such obscure things, you must be aware that brace/&
% group-nesting is independent from conditional-nesting! You might
@@ -590,7 +952,12 @@
% \medskip
% \end{itemize}
%
-% \section{Package option---Different spaces, different se\-pa\-ra\-tors}&
+% \newpage
+% \section{&
+% \texorpdfstring
+% {Package option---Different spaces, different se\-pa\-ra\-tors}&
+% {Package option\textemdash Different spaces, different separators}&
+% }&
% \label{sec4}
%
% Above was said that space-tokens (\verb*+ +\nobreak\(_{10}\)-tokens)
@@ -606,7 +973,7 @@
% macros with \verb*+ +\nobreak\(_{10}\)-token-delimited arguments.
%
% In normal circumstances, \verb*+ +\nobreak-characters in the input-file
-% which trail a control-word do not get tokenized when {\TeX} ``reads'' an
+% which trail a control-word do not get tokenized when \TeX\ ``reads'' an
% input. So it's kind of a problem to get space-tokens right behind the
% name of a control-word, e.g., as first items of the parameter-text when
% defining macros. A space within braces \verb*+{ }+ does get tokenized as
@@ -617,24 +984,24 @@
% word which is about to be defined. (Henceforth the term \emph{definer&
% -macro} is applied in order to call special attention to the fact that
% defining other control-sequences is the only purpose of such a macro.)
-% A \verb*+ + in the definer-macro's argument gets tokenized while this
+% A \verb*+ + as the definer-macro's argument gets tokenized while this
% argument is used as the first item of the desired control-word's
% parameter-text \(\rightarrow\) the first item of the desired control-&
% word's parameter-text will be a space-token.
%
% \DescribeMacro{\DefineLabelcase}
-% In case of the |labelcas|-package, the problem of getting space-tokens
-% as delimiters right behind control-words, is also solved by implementing
-% such a definer-macro. It is called |\DefineLabelcase| and used for
-% defining both the user-level-macros |\eachlabelcase| and |\lotlabelcase|
-% and the internal-macros |\lc@iterate|, |\lc@remtrailspace| and
-% |\lc@remleadspace|. Usually it is discarded/destroyed when defining
-% these macros has taken place. But you can specify the package-option
-% |DefineLabelcase|. When you do so, |\DefineLabelcase| does not get
-% destroyed, and you can use it for creating ``new variants'' of
-% |\eachlabelcase| and |\lotlabelcase| plus internals while specifying
-% proper space-tokens and separators. |\DefineLabelcase| takes four
-% mandatory arguments:
+% In case of the \textsf{\mbox{labelcas}}-package, the problem of getting
+% space-tokens as delimiters right behind control-words, is also solved by
+% implementing such a definer-macro. It is called |\DefineLabelcase| and
+% used for defining both the user-level-macros |\eachlabelcase| and
+% |\lotlabelcase| and the internal-macros |\lc@iterate|,
+% |\lc@remtrailspace| and |\lc@remleadspace|.
+% Usually it is discarded/destroyed when defining these macros has taken
+% place. But you can specify the package-option |DefineLabelcase|. When
+% you do so, |\DefineLabelcase| does not get destroyed, and you can use it
+% for creating ``new variants'' of |\eachlabelcase| and |\lotlabelcase|
+% plus internals while specifying proper space-tokens and separators.
+% |\DefineLabelcase| takes four mandatory arguments:
% \bigskip
%
% \noindent
@@ -644,26 +1011,30 @@
% \begin{description}
% \item[\textnormal{\meta{space}}] specifies the argument-surrounding
% token that is to be removed. Usually surrounding space-tokens
-% shall be discarded. Default:~\verb*+ +\nobreak\(_{10}\)~(space).
+% shall be discarded. Usually:~\verb*+ +\nobreak\(_{10}\)~(space).
% \item[\textnormal{\meta{delimiter}}] specifies the delimiter/separator.
% Usually the argument-triplets or label-lists are comma-separated.
-% Default:~\verb*+,+\nobreak\(_{12}\)~(comma).
+% Usually:~\verb*+,+\nobreak\(_{12}\)~(comma).
% \item[\textnormal{\meta{prefix}}] specifies the macro-name-prefix. You
% cannot assign the same name at the same time to different
% control-sequences. Therefore, when creating new variants of
% |\eachlabelcase| and |\lotlabelcase|, you have to specify a prefix
% which gets inserted at the beginning of the macro-name. E.g.,
% specifying the prefix |FOO| leads to defining the macro-set:\\
-% |\FOOeachlabelcase|, |\FOOlotlabelcase| (user-macros) and\\
-% |\FOOlc@iterate|, |\FOOlc@remtrailspace|, |\FOOlc@remleadspace|
+% |\FOOeachlabelcase|\MacroIndexEntry{\<prefix!>eachlabelcase},
+% |\FOOlotlabelcase|\MacroIndexEntry{\<prefix!>lotlabelcase}
+% (user-macros) and\\
+% |\FOOlc@iterate|\MacroIndexEntry{\<prefix!>lc@iterate},
+% |\FOOlc@remtrailspace|\MacroIndexEntry{\<prefix!>lc@remtrailspace},
+% |\FOOlc@remleadspace|\MacroIndexEntry{\<prefix!>lc@remleadspace}
% (internal).\\
% The original versions are just called |\eachlabelcase|,
% |\lotlabelcase|, |\lc@iterate|\dots (without a prefix in the
-% macro-name). Default:~(empty).
+% macro-name). Usually:~(empty).
% \item[\textnormal{\meta{global-indicator}:}] In case that this argument
% contains only the token |\global|, defining the new macro-set takes
% place in terms of |\global|. Otherwise the scope is restricted to
-% the current grouping-level. Default:~\verb*+\global+.
+% the current grouping-level. Usually:~\verb*+\global+.
% \end{description}
%
% Don't try weird things like specifying the same token both for
@@ -673,7 +1044,7 @@
% tokens which may be used for separating parameters from each other
% within the parameter-text of a definition! Also please specify the
% \meta{prefix} only in terms of letter-character-tokens! \textbf{There is
-% no error-checking implemented on these things!}
+% no extra error-checking implemented on these things!}
% \bigskip
%
% \noindent
@@ -681,28 +1052,46 @@
% \noindent
% |\begingroup|\\
% |\obeyspaces|\\
-% |\endlinechar=-1\relax|\\
-% |\DefineLabelcase{ }{/}{SPACEOBEYED}{local}%|\\
-% |\SPACEOBEYEDlotlabelcase[\test]{sec1/ sec2 / UNDEFINED /sec3}%|\\
-% |{All labels are defined.}%|\\
-% |{None of the labels is defined.}%|\\
-% |{Some labels are defined, some not.}%|\\
-% |{The list is empty.}%|\\
-% |\global\let\test\test|\\
+% |\endlinechar=-1\relax%|\\
+% \verb*|\DefineLabelcase{ }{/}{SPACEOBEYED}{local}%|\\
+% \verb*|\SPACEOBEYEDlotlabelcase[\test]{sec1/ sec2 / UNDEF /sec3}%|\\
+% \verb*|{All labels are defined.}%|\\
+% \verb*|{None of the labels is defined.}%|\\
+% \verb*|{Some labels are defined, some not.}%|\\
+% \verb*|{The list is empty.}%|\\
+% |\global\let\test\test%|\\
% |\endgroup|\medskip\\
% defines: |\test|:
%\begingroup
%\obeyspaces
-%\endlinechar=-1\relax
+%\endlinechar=-1\relax&
%\DefineLabelcase{ }{/}{SPACEOBEYED}{local}&
-%\SPACEOBEYEDlotlabelcase[\test]{sec1/ sec2 / UNDEFINED /sec3}&
+%\SPACEOBEYEDlotlabelcase[\test]{sec1/ sec2 / UNDEF /sec3}&
%{All labels are defined.}&
%{None of the labels is defined.}&
%{Some labels are defined, some not.}&
%{The list is empty.}&
-%\global\let\test\test
+%\global\let\test\test&
%\endgroup
-% {\makeatletter\verbatim@font\meaning\test}&
+% {&
+% \makeatletter
+% \def\spacereplace#1 #2\@nil{&
+% #1&
+% \def\@tempa{#2}&
+% \ifx\@tempa\@empty
+% \expandafter\@gobble
+% \else
+% \expandafter\@firstofone
+% \fi
+% {\char32\spacereplace#2\@nil}&
+% }&
+% \verbatim@font
+% \expandafter\expandafter
+% \expandafter\spacereplace
+% \expandafter\meaning
+% \expandafter\test
+% \space\@nil
+% }&
% \global\let\test\undefined
% \end{minipage}
% \bigskip
@@ -713,7 +1102,7 @@
% |\begingroup|\\
% |\endlinechar=-1\relax|\\
% |\DefineLabelcase{-}{/}{BAR}{local}%|\\
-% |\BARlotlabelcase[\test]{sec1/-sec2-/--%|\\
+% |\BARlotlabelcase[\test]{sec1/-sec2----/--%|\\
% | ---/sec3}%|\\
% |{All labels are defined.}%|\\
% |{None of the labels is defined.}%|\\
@@ -725,7 +1114,7 @@
% \begingroup
% \endlinechar=-1\relax
% \DefineLabelcase{-}{/}{BAR}{local}&
-% \BARlotlabelcase[\test]{sec1/-sec2-/--&
+% \BARlotlabelcase[\test]{sec1/-sec2----/--&
% ---/sec3}&
% {All labels are defined.}&
% {None of the labels is defined.}&
@@ -760,56 +1149,82 @@
% \endgroup
% \end{minipage}
%
-% \section{Thanks, Acknowledgements}
+% \newpage
+% \section{Thanks, Acknowledgements}\label{sec5}
% \begin{itemize}
% \item Many thanks to all who encouraged me in making the attempt of
% getting things in this package less error-prone.
% \item Thanks to everybody who took the macro-writing challenges
-% presented in the \textbf{INFO-\TeX}-`Around the bend'-department
-% which was initiated back in the early 90's by Michael Downes and
-% regularly took place under his guidance. His summaries of the
-% solutions are archived and on-line available at
-% |http://www.tug.org/tex-archive/info/aro-bend/|. The information
-% therein helps a great deal in understanding {\TeX} in general and
-% learning about basic problem solving strategies---e.g., the
-% removal of leading- and trailing spaces from an (almost) arbitrary
-% token-sequence (exercise.015/answer.015).
+% presented in the \textsf{\mbox{INFO-\TeX}-`Around the bend'}-&
+% department which was initiated back in the early 90's by
+% \textsf{\mbox{Michael Downes}} and regularly took place under his
+% guidance. His summaries of the solutions are archived and online
+% available at \href{http://www.tug.org/tex-archive/info/aro-bend/}&
+% {\textsf{http://www.tug.org/tex-archive/info/aro-bend/}}. The
+% information therein helps a great deal in understanding \TeX\ in
+% general and in learning about basic problem-solving-strategies---&
+% e.g., the removal of leading- and trailing spaces from an (almost)
+% arbitrary token-sequence (exercise.015/answer.015).
% \item Thanks to everybody who provides valuable information at the
-% {\TeX} news groups and mailing lists. I received great help
-% especially at |comp.text.tex|, where my---often trivial---&
-% questions were answered patiently again and again.
+% \TeX-news-groups and mailing-lists. I received great help
+% especially at \textsf{\mbox{comp.text.tex}}, where my---often
+% trivial---questions were answered patiently again and again.
% \item Thanks to the \LaTeX-package authors, not only for providing means
% of achieving special typesetting-goals, but also for hereby
-% delivering informative programming-examples. |labelcas| actually
-% was inspired by \emph{David Carlisle's} |xr-| and |xr-hyper|-&
-% packages which make available the labels of other \LaTeX-documents
-% to the current one.
+% delivering informative programming-examples.
+% \textsf{\mbox{labelcas}} actually was inspired by
+% \textsf{\mbox{David Carlisle's}} \textsf{xr}- and
+% \textsf{\mbox{xr-hyper}}-packages which make available the labels
+% of other \LaTeX-documents to the current one.
% \end{itemize}
%
-% \section{Legal Notes}
+% \section{Legal Notes}\label{sec6}
+%
+% \textsf{\mbox{labelcas}}---Copyright (C) 2006 by \mbox{Ulrich Diez}
+% (\href{mailto:ulrich.diez@alumni.uni-tuebingen.de}&
+% {\textsf{ulrich.diez@alumni.uni-tuebingen.de}})
+% \medskip
%
-% |labelcas| is released under the {\LaTeX} Project Public Licence.
+% \textsf{\mbox{labelcas}} may be distributed and/or modified under the
+% conditions of the \textsf{\LaTeX\ Project Public Licence (LPPL)}, either
+% version 1.3 of this license or (at your option) any later version.&
+% \footnote{The latest version of this license is in
+% \href{http://www.latex-project.org/lppl.txt}&
+% {\textsf{http://www.latex-project.org/lppl.txt}}
+% and version 1.3 or later is part of all distributions of \LaTeX\ version
+% 2003/12/01 or later.}
+% The author and Current Maintainer of this Work is \mbox{Ulrich Diez}.
+% This Work has the LPPL maintenance status `author-maintained' and
+% consists of the files \textsf{\mbox{labelcas.dtx}},
+% \textsf{\mbox{labelcas.ins}}, \textsf{\mbox{README}} and the derived
+% files \textsf{\mbox{labelcas.sty}} and \textsf{\mbox{labelcas.pdf}}.
% \medskip
%
-% Usage of the |labelcas|-package is at your own risk. There is no
-% warranty---neither for documentation nor for any other part of the
-% |labelcas|-package. If something breaks, you may keep the pieces.
+% Usage of the \textsf{\mbox{labelcas}}-package is at your own risk. There
+% is no warranty---neither for the documentation nor for any other part of
+% the \textsf{\mbox{labelcas}}-package. If something breaks, you usually
+% may keep the pieces.
%
-% \StopEventually{\PrintChanges\PrintIndex}
+% \StopEventually{&
+% \let\PrintChanges\relax
+% \PrintIndex
+% }
%
+% \newpage
% \section{Implementation}
%
% \subsection{A note about removing leading and trailing spaces}
%
% The matter of removing trailing spaces from an (almost) arbitrary
-% token-sequence is elaborated in detail by Michael Downes, `Around the
-% Bend \#15, answers', a summary of internet-discussion which took place
-% under his guidance primarily at the \textbf{INFO-\TeX} list, but also in
-% usenet (|comp.text.tex|) and via private e-mail; December 1993. Online
-% archived at:\newline
-% |http://www.tug.org/tex-archive/info/aro-bend/answer.015|.
-%
-% One basic approach suggested therein is using {\TeX}'s scanning of
+% token-sequence is elaborated in detail by \textsf{\mbox{Michael Downes},
+% `Around the Bend \#15, answers'}, a summary of internet-discussion which
+% took place under his guidance primarily at the \textsf{\mbox{INFO-\TeX}
+% list}, but also at \textsf{\mbox{comp.text.tex}} (usenet) and via
+% private e-mail; December 1993. Online archived at
+% \href{http://www.tug.org/tex-archive/info/aro-bend/answer.015}&
+% {\textsf{http://www.tug.org/tex-archive/info/aro-bend/answer.015}}.
+%
+% One basic approach suggested therein is using \TeX's scanning of
% delimited parameters in order to detect and discard the ending space of
% an argument:
% \begin{quote}
@@ -821,17 +1236,17 @@
% have the requisite other member of the pair.
%
% Next consider the possibility that the trailing space is absent:
-% {\TeX} will keep on scanning ahead for the pair \meta{space}&
+% \TeX\ will keep on scanning ahead for the pair \meta{space}&
% \meta{bizarre} until either it finds them or it decides to give up and
% signal a `Runaway argument?' error. So you must add a stop pair to
% catch the runaway argument possibility: a second instance of the
-% bizarre token, preceded by a space. If {\TeX} doesn't find a match at
+% bizarre token, preceded by a space. If \TeX\ doesn't find a match at
% the first bizarre token, it will at the second one.
% \end{quote}
%
% (Look up the macros |\KV@@sp@def|, |\KV@@sp@b|, |\KV@@sp@c| and
-% |\KV@@sp@d| in \emph{David Carlisle's} |keyval|-package for an
-% interesting variation on this approach.)
+% |\KV@@sp@d| in \textsf{\mbox{David Carlisle's} \mbox{keyval}-package}
+% for an interesting variation on this approach.)
% \medskip
%
% When scanning for parameters ~~~|##1|\meta{space}\meta{bizarre}|##2|&
@@ -852,17 +1267,17 @@
% |##2| is empty.
% \end{enumerate}
%
-% So forking can be implemented dependent on the emptiness of |##2|.
+% So forking can be implemented depending on the emptiness of |##2|.
%
-% You can easily prevent the brace-removal in the first case, e.g. by
-% adding (and later removing) something in front of the \meta{stuff where
-% to remove trail-space}.
+% You can easily prevent the brace-removal in the first case, e.g., by
+% adding (and later removing) something (e.g., a space-token) in front of
+% the \meta{stuff where to remove trail-space}.
%
% You can choose \meta{B1}=\meta{bizarre}\meta{space}.
% \medskip
%
-% `Around the Bend \#15, answers' also presents a similar way for the
-% removal of leading spaces from an (almost) arbitrary token-sequence:
+% \textsf{`Around the Bend \#15, answers'} also presents a similar way for
+% the removal of leading spaces from an (almost) arbitrary token-sequence:
% \begin{quote}
% The latter method is perhaps most straightforwardly done as a mirror-&
% image of the method for removing a trailing space: make the delimiter
@@ -872,10 +1287,10 @@
% \end{quote}
%
% When scanning for parameters ~~~|##1|\meta{bizarre}\meta{space}|##2|&
-% \meta{bizarre}\meta{B2}~~~ the sequence:
+% \meta{B2}~~~ the sequence:
% \\
% \meta{bizarre}\meta{stuff where to remove lead-space}\meta{bizarre}&
-% \meta{space}\meta{bizarre}\meta{B2}&
+% \meta{space}\meta{B2}&
% \\
% , you can fork two cases:
% \begin{enumerate}\parskip=0ex\relax
@@ -889,10 +1304,10 @@
% |##2| is empty.
% \end{enumerate}
%
-% Thus forking can be implemented dependent on the emptiness of either of
+% Thus forking can be implemented depending on the emptiness of either of
% the two arguments.
%
-% You can choose \meta{B2}=\meta{bizarre}.
+% You can choose \meta{B2}=\meta{bizarre}\meta{bizarre}.
%
% \subsection{Flow of work}
%
@@ -907,10 +1322,12 @@
% \parskip=0ex\relax\itemsep=.25\baselineskip\relax
% \item The list is passed as an argument to the user-macro.
% \item The list is passed from the user-macro to
-% |\|\meta{prefix}|lc@iterate| whereby a leading \meta{space} is
-% added for brace-removal-protection.
-% \item |\|\meta{prefix}|lc@iterate| recursively iterates on the list-&
-% items until the item \meta{space}|\@nil| occurs:&
+% |\|\meta{prefix}|lc@iterate|\MacroIndexEntry{\<prefix!>lc@iterate}
+% whereby a leading \meta{space} is added for brace-removal-&
+% protection.
+% \item |\|\meta{prefix}|lc@iterate|\MacroIndexEntry{\<prefix!>lc@iterate}
+% recursively iterates on the list-items until the item
+% \meta{space}|\@nil| occurs:&
% {\def\labelenumii{\theenumii)}&
% \settowidth\labelwidth{a)}&
% \leftmarginii=\labelwidth\relax
@@ -918,16 +1335,20 @@
% \begin{enumerate}
% \parskip=0ex\relax\itemsep=0ex\relax
% \makeatletter\@topsep=0ex\relax\makeatother
-% \item If the item
-% (with leading \meta{space} stripped-off) is not empty, it will
-% be passed to
-% \item |\|\meta{prefix}|lc@remtrailspace|. Here trailing \meta{space}
-% is removed recursively. Afterwards, it is passed by
-% |\|\meta{prefix}|lc@remtrailspace| to
-% \item |\|\meta{prefix}|lc@remleadspace| where leading \meta{space}
-% (also the previously inserted one) is removed recursively. After
-% that |\|\meta{prefix}|lc@remleadspace| passes the item to the
-% macro
+% \item The item will be passed to |\|\meta{prefix}|lc@remtrailspace|&
+% \MacroIndexEntry{\<prefix!>lc@remtrailspace}. Here trailing
+% \meta{space} is removed recursively. If after removing
+% trailing-space the result is empty, you can conclude that
+% everything (incl the previously inserted ``brace-removal-&
+% protection-\meta{space}'' was removed as either the item was
+% empty or consisted of a sequence of \meta{space}. If the
+% result does not imply an empty item, it will be passed to
+% \item |\|\meta{prefix}|lc@remleadspace|&
+% \MacroIndexEntry{\<prefix!>lc@remleadspace} where leading
+% \meta{space} (also the previously inserted one) is removed
+% recursively. After that |\|\meta{prefix}|lc@remleadspace|&
+% \MacroIndexEntry{\<prefix!>lc@remleadspace} passes the item to
+% the macro
% \item |\@tempa| for further processing. |\@tempa| at this stage will
% be locally defined within the user-macro. |\@tempa| initiates
% the actual work which (hopefully!) results in adding the
@@ -935,18 +1356,21 @@
% |\@temptokena|.
% \item Before processing the next item in the next iteration-round, a
% leading \meta{space} for brace-removal-protection will be added
-% in front of the remaining list by |\|\meta{prefix}|lc@iterate|.
+% in front of the remaining list by |\|\meta{prefix}|lc@iterate|&
+% \MacroIndexEntry{\<prefix!>lc@iterate}.
% \end{enumerate}\unskip}&
% \item After iterating the list within the user-macro, the routine
-% |\lc@macrodefiner| will check for the user-macro's optional
-% argument and, in case that it is present, modify the action-&
-% queue-register, so that, when flushing it, a macro will be
-% produced instead of queue-execution.
-% \item The final step within the user-macro is flushing the action-&
+% |\lc@macrodefiner|\MacroIndexEntry{\lc@macrodefiner} will check
+% for the user-macro's optional argument and, in case that it is
+% present, modify the action-queue-register, so that, when
+% ``flushing'' it, a macro will be produced instead of queue-&
+% execution.
+% \item The final step within the user-macro is ``flushing'' the action-&
% queue-register.
% \end{enumerate}
% \end{sloppypar}
%
+% \newpage
% \subsection{Code}
%
% \begin{macro}{\DefineLabelcase}
@@ -977,36 +1401,39 @@
% be evaluated within that group, right after defining
% |\DefineLabelcase|. By the option |DefineLabelcase|,
% |\DefineLabelcase| can be ``globalized'' before closing the group:
-% \begin{macrocode}
+% \iffalse
%<*labelcas>
+% \fi
+% \begin{macrocode}
+\begingroup
\DeclareOption{DefineLabelcase}%
{\global\let\DefineLabelcase\DefineLabelcase}%
-\begingroup
\newcommand\DefineLabelcase[4]{%
% \end{macrocode}
% \end{macro}
% \def\pref{prefix}
% \begin{macro}{lc@remtrailspace}
% \Patchsavedatmacroname
-% \changes{v1.01}{2006/01/06}{Let \meta{B1}\ChgEq\meta{bizarre}\nobreak
-% \meta{space}}
-% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism from
-% token-register to \string\verb+\string\@firstoftwo+/\empty
-% \string\verb+\string\@secondoftwo+}
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.01}{2006/01/06}{\meta{B1}\ChgEq\meta{bizarre}\nobreak
+% \meta{space}.}
+% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism to \string
+% \verb+\string\@firstoftwo+/\string\verb+\string\@secondoftwo+.}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+ instead
+% of \string\verb*+\string\newcommand+.}
+% \changes{v1.10}{2006/07/21}{Empty-argument-check added.}
% It is assured that \meta{delimiter} does not occur in the top-level of
% the \meta{stuff where to remove trail-space}, for \meta{delimiter} is
% used in the list for separating the single items of \meta{stuff where
% to remove trail-space} from each other. Therefore you can choose
-% \meta{bizarre}=\meta{delimiter} and \meta{B1}=\meta{delimiter}&
-% \meta{space}:
+% \meta{bizarre}=\meta{delimiter} and \meta{B1}=\meta{bizarre}&
+% \meta{space}=\meta{delimiter}\meta{space}:
% \begin{macrocode}
\expandafter\@ifdefinable\csname#3lc@remtrailspace\endcsname{%
\expandafter\long
\expandafter\def
\csname#3lc@remtrailspace\endcsname##1#1#2##2#2#1{%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}&
% Above was said that forking can take place depending on emptiness of
% the second argument. The arguments come from the items of the comma-&
% separated list---thus they might contain macro-definitions and/or
@@ -1034,39 +1461,61 @@
\fi
% \end{macrocode}
% The appropriate action in case of no more trailing \meta{space} is
-% removing leading \meta{space}. In this case |##1| is terminated by
-% \meta{bizarre}, so add only \meta{space}\meta{bizarre}\meta{B2} at the
-% end instead of \meta{bizarre}\meta{space}\meta{bizarre}\meta{B2}\\
-% (\meta{B2}=\meta{bizarre}=\meta{delimiter} in
-% |\|\meta{prefix}|lc@remleadspace|):
+% checking if the item is not empty and if so, initiating the removal
+% of leading \meta{space}. In this case |##1| is terminated by
+% \meta{bizarre}. If the item is empty, the leading \meta{space}
+% inserted by the iterator for brace-protection is also removed so that
+% |##1| equals \meta{bizarre}. If the item is not empty, start leading-&
+% \meta{space}-removal, but add only \meta{space}\meta{B2} at the end
+% instead of \meta{bizarre}\meta{space}\meta{B2}---above was said that
+% \meta{B2}=\meta{bizarre}\meta{bizarre}=&
+% \meta{delimiter}\meta{delimiter} in |\|\meta{prefix}|lc@remleadspace|:
% \begin{macrocode}
- {\csname#3lc@remleadspace\endcsname#2##1#1#2#2}%
+ {%
+ {\toks@{##1}\edef\@tempa{\the\toks@}%
+ \toks@{#2}\edef\@tempb{\the\toks@}%
+ \expandafter}%
+ \ifx\@tempa\@tempb
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\csname#3lc@remleadspace\endcsname#2##1#1#2#2}%
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
+% \begin{macrocode}
+ }%
% \end{macrocode}
% The appropriate action in case of trailing \meta{space} is checking
-% and removing more thereof:
+% and possibly removing more thereof:
% \begin{macrocode}
{\csname#3lc@remtrailspace\endcsname##1#2#1#2#2#1}%
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}&
+% \begin{macrocode}
}%
}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{lc@remleadspace}
% \Patchsavedatmacroname
-% \changes{v1.01}{2006/01/06}{Let \meta{B2}\ChgEq\meta{bizarre}}
-% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism from
-% token-register to \string\verb+\string\@firstoftwo+/\empty
-% \string\verb+\string\@secondoftwo+}
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.01}{2006/01/06}{\meta{B2}\ChgEq\meta{bizarre}\meta{bizarre}.}
+% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism to
+% \string\verb+\string\@firstoftwo+/\string\verb+\string\@secondoftwo+.}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+
+% instead of \string\verb*+\string\newcommand+.}
% |\|\meta{prefix}|lc@remleadspace| is similar to
% |\|\meta{prefix}|lc@remtrailspace|, but with \meta{B2}=\meta{bizarre}&
-% =\meta{delimiter}:
+% \meta{bizarre}=\meta{delimiter}\meta{delimiter}:
% \begin{macrocode}
\expandafter\@ifdefinable\csname#3lc@remleadspace\endcsname{%
\expandafter\long
\expandafter\def
\csname#3lc@remleadspace\endcsname##1#2#1##2#2#2{%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
% Above was said that forking can take place e.g., depending on
% emptiness of the first argument. Arguments still come from the list-&
% items, so let's use token-registers for the same reasons as in
@@ -1088,10 +1537,11 @@
\fi
% \end{macrocode}
% The appropriate action in case of leading \meta{space} is checking
-% and removing more thereof:
+% and possibly removing more thereof:
% \begin{macrocode}
{\csname#3lc@remleadspace\endcsname#2##2#2#2}%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
% In case of no more leading \meta{space}, the actual work, which is
% defined in user-macro's |\@tempa|, can be done:
% \begin{macrocode}
@@ -1102,10 +1552,15 @@
% \end{macro}
% \begin{macro}{lc@iterate}
% \Patchsavedatmacroname
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+
+% instead of \string\verb*+\string\newcommand+.}
% \changes{v1.07}{2006/04/27}{Define \string\verb*+\string\@tempa+
-% in terms of \string\verb*+\string\long+}
+% in terms of \string\verb*+\string\long+.}
+% \changes{v1.08}{2006/07/10}{Chan\-ged forking-mechanism to
+% \string\verb+\string\@firstoftwo+/\string\verb+\string\@secondoftwo+.}
+% \changes{v1.09}{2006/07/16}{Chan\-ged forking-mechanism so that
+% two temporary macros suffice.}
+% \changes{v1.10}{2006/07/21}{Empty-argument-check removed.}
% |\|\meta{prefix}|lc@iterate| iterates on arguments which are
% delimited by \meta{delimiter}.
% \begin{macrocode}
@@ -1114,81 +1569,52 @@
\expandafter\def
\csname#3lc@iterate\endcsname##1#2{%
% \end{macrocode}
-% Let's put the \meta{space}, which needs to be inserted for brace-&
-% removal-protection, into a token-register---just in case: Maybe some
-% day somebody might specify weird |\fi|- or multiple-token-\meta{space}
-% or the like&
-% \dots\thinspace:
-% \begin{macrocode}
- \toks@{#1}%
-% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
% Make locally available the arguments as macros:\\
-% |\@tempa|\(=\)current argument without leading \meta{space}\\
-% |\@tempb|\(=\)current argument\\
-% |\@tempc|\(=\)recursion-stop-item\\
-% |\@tempd|\(=\)call for trailing-\meta{space}-removal\\
-% (|\|\meta{prefix}|lc@remleadspace| launches |\@tempa|
-% when no more leading \meta{space} is present---therefore before
-% starting the leading-\meta{space}-removal, |\@tempa| is defined to
-% redefine itself to the desired value)\thinspace:
+% |\@tempa|\(=\)current argument\\
+% |\@tempb|\(=\)recursion-stop-item:
% \begin{macrocode}
\begingroup
- \long\def\@tempa#2####1#2{\toks@{####1}\edef\@tempa{\the\toks@}}%
- \csname#3lc@remleadspace\endcsname#2##1#2#1#2#2%
\toks@{##1}%
- \edef\@tempb{\the\toks@}%
+ \edef\@tempa{\the\toks@}%
\toks@{#1\@nil}%
- \edef\@tempc{\the\toks@}%
- \toks@{\csname#3lc@remtrailspace\endcsname##1#2#1#2#2#1}%
- \edef\@tempd{\the\toks@}%
-% \end{macrocode}
-% Test if the current argument equals the recursion-stop-item:
-% \begin{macrocode}
- \ifx\@tempb\@tempc
+ \edef\@tempb{\the\toks@}%
% \end{macrocode}
-% If so terminate the iteration---do nothing but closing the current
-% group:
+% End the group and test if the current argument equals the
+% recursion-stop-item:
% \begin{macrocode}
- \expandafter\endgroup
+ \expandafter\endgroup\ifx\@tempa\@tempb
+ \expandafter\@gobble
\else
+ \expandafter\@firstofone
+ \fi
% \end{macrocode}
-% Otherwise check---before closing the group---if the current argument
-% minus leading \meta{space} is empty:
-% \begin{macrocode}
- \ifx\@tempa\@empty
-% \end{macrocode}
-% If so, do nothing but ending the group:
+% If not: Start trailing-space-removal\dots, then continue iterating the
+% list and hereby add a preceding \meta{space} to the next item for
+% brace-protection during trailing-\meta{space}-removal in the next run:
% \begin{macrocode}
- \expandafter\endgroup
- \else
+ {%
+ \csname#3lc@remtrailspace\endcsname##1#2#1#2#2#1%
% \end{macrocode}
-% Otherwise launch trailing-\meta{space}-removal:
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}&
% \begin{macrocode}
- \expandafter\expandafter
- \expandafter \endgroup
- \expandafter\@tempd
- \fi
+ \csname#3lc@iterate\endcsname#1%
% \end{macrocode}
-% Then continue iterating the list and hereby add a preceding
-% \meta{space} to the next item for brace-protection during trailing-&
-% \meta{space}-removal in the next run:
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
% \begin{macrocode}
- \csname#3lc@iterate\expandafter\expandafter
- \expandafter\endcsname
- \expandafter\the
- \expandafter\toks@
- \fi
+ }%
}%
}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{eachlabelcase}
% \Patchsavedatmacroname
-% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism from
-% token-register to \string\verb+\string\@firstoftwo+/\empty
-% \string\verb+\string\@secondoftwo+}
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.03}{2006/02/21}{Chan\-ged forking-mechanism to
+% \string\verb+\string\@firstoftwo+/\string\verb+\string\@secondoftwo+.}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+
+% instead of \string\verb*+\string\newcommand+.}
% |\|\meta{prefix}|eachlabelcase|'s optional argument is the possibly-&
% to-be-defined control-sequence. The mandatory-argument contains the
% argument-triplet-list.
@@ -1197,6 +1623,7 @@
\expandafter\DeclareRobustCommand
\csname#3eachlabelcase\endcsname[2][]{%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{eachlabelcase}&
% Locally define |\@tempa|---it is called by
% |\|\meta{prefix}|lc@remleadspace| for working on a list-item when all
% surrounding \meta{space} has been removed:
@@ -1205,7 +1632,7 @@
% \end{macrocode}
% The stuff that results from \meta{space}-removing is surrounded by
% \meta{delimiter}. It cannot be processed at this place, as first the
-% triplet needs to be split into it's components by |\@tempb|:
+% triplet needs to be split into its components by |\@tempb|:
% \begin{macrocode}
\long\def\@tempa#2####1#2{%
\@tempb####1#2#1#2#2%
@@ -1240,8 +1667,16 @@
}%
\toks@\expandafter{\the\toks@{########1}}%
\csname#3lc@remleadspace\endcsname#2%
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
+% \begin{macrocode}
}%
\toks@{{####1}}\csname#3lc@remleadspace\endcsname#2%
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
+% \begin{macrocode}
}%
% \end{macrocode}
% Let's clear the register where the action-queue is accumulated:
@@ -1252,6 +1687,7 @@
% \begin{macrocode}
\csname#3lc@iterate\endcsname#1##2#2\@nil#2%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
% In case that the optional argument is specified, the routine
% |\lc@macrodefiner| will modify the register to define a macro:
% \begin{macrocode}
@@ -1266,8 +1702,8 @@
% \end{macro}
% \begin{macro}{lotlabelcase}
% \Patchsavedatmacroname
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+
+% instead of \string\verb*+\string\newcommand+.}
% |\|\meta{prefix}|lotlabelcase|'s optional argument is the possibly-&
% to-be-defined control-sequence. The five mandatory-arguments contain
% the label-list and the actions that shall take place in the cases: All
@@ -1278,6 +1714,7 @@
\expandafter\DeclareRobustCommand
\csname#3lotlabelcase\endcsname[6][]{%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lotlabelcase}&
% Locally define |\@tempa|---it is called by
% |\|\meta{prefix}|lc@remleadspace| for working on a list-item when all
% surrounding \meta{space} has been removed:
@@ -1307,6 +1744,7 @@
% \begin{macrocode}
\csname#3lc@iterate\endcsname#1##2#2\@nil#2%
% \end{macrocode}
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
% Assign the register according to the label-defining-cases which are
% now represented by the definitions of |\@tempb| and |\@tempc| which
% are defined either |\relax| or |empty|:
@@ -1344,19 +1782,59 @@
\ifx\@tempa\@tempb
\expandafter\global\expandafter\let
\csname#3lc@remtrailspace\expandafter\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}&
+% \begin{macrocode}
\csname#3lc@remtrailspace\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}&
+% \begin{macrocode}
\expandafter\global\expandafter\let
\csname#3lc@remleadspace\expandafter\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
+% \begin{macrocode}
\csname#3lc@remleadspace\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@remleadspace}&
+% \begin{macrocode}
\expandafter\global\expandafter\let
\csname#3lc@iterate\expandafter\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
+% \begin{macrocode}
\csname#3lc@iterate\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}&
+% \begin{macrocode}
\expandafter\global\expandafter\let
\csname#3eachlabelcase\expandafter\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{eachlabelcase}&
+% \begin{macrocode}
\csname#3eachlabelcase\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{eachlabelcase}&
+% \begin{macrocode}
\expandafter\global\expandafter\let
\csname#3lotlabelase\expandafter\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lotlabelcase}&
+% \begin{macrocode}
\csname#3lotlabelcase\endcsname
+% \end{macrocode}
+% \compensategap
+% \InsertPrefixedUsageToIndex{prefix}{lotlabelcase}&
+% \begin{macrocode}
\fi
% \end{macrocode}
% Now the definition of |\DefineLabelcase| is complete:
@@ -1378,14 +1856,16 @@
% \end{macrocode*}
% \let\pref\empty
% \begin{macro}{\lc@macrodefiner}
-% \changes{v1.06}{2006/04/20}{Use \string\verb*+\string\@ifdefinable+
-% instead of \string\verb*+\string\newcommand+}
+% \changes{v1.06}{2006/04/20}{\string\verb*+\string\@ifdefinable+
+% instead of \string\verb*+\string\newcommand+.}
+% \changes{v1.11}{2006/08/04}{Unnecessary
+% \string\verb*+\string\expandafter+ removed.}
% There is still the routine left which is applied by the user-macros
-% for having the action-queue-register modified, so that when flushing
-% it, a macro will be produced instead of queue-execution.
-% |\lc@macrodefiner| takes as it's argument the optional argument of a
+% for having the action-queue-register modified, so that when
+% ``flushing'' it, a macro will be produced instead of queue-execution.
+% |\lc@macrodefiner| takes as its argument the optional argument of a
% user-macro. In case that the argument is not empty, the action-queue-&
-% register is modified, so that it's flushing yields the attempt of
+% register is modified, so that ``flushing'' it yields the attempt of
% defining a macro from the argument which expands to the former content
% of the register:
% \begin{macrocode}
@@ -1394,35 +1874,35 @@
\ifx\@tempa\@empty
\else
\@temptokena\expandafter{%
- \expandafter\begingroup
- \expandafter\toks@
- \expandafter\expandafter
- \expandafter {%
- \expandafter\expandafter
- \expandafter \@temptokena
- \expandafter\expandafter
- \expandafter {%
- \expandafter\the
- \expandafter\@temptokena
- \expandafter}%
- \expandafter}%
- \expandafter\@temptokena
- \expandafter{%
- \expandafter\@temptokena
- \expandafter{%
- \the\@temptokena}%
- \@ifdefinable#1{\edef#1{\the\@temptokena}}}%
- \expandafter\expandafter
- \expandafter \endgroup
- \expandafter\the
- \expandafter\@temptokena
- \the\toks@
+ \expandafter\begingroup
+ \expandafter\toks@
+ \expandafter\expandafter
+ \expandafter {%
+ \expandafter\expandafter
+ \expandafter \@temptokena
+ \expandafter\expandafter
+ \expandafter {%
+ \expandafter\the
+ \expandafter\@temptokena
+ \expandafter}%
+ \expandafter}%
+ \expandafter\@temptokena
+ \expandafter{%
+ \expandafter\@temptokena
+ \expandafter{%
+ \the\@temptokena}%
+ \@ifdefinable#1{\edef#1{\the\@temptokena}}}%
+ \expandafter\endgroup
+ \the\expandafter\@temptokena
+ \the\toks@
}%
\fi
}%
-%</labelcas>
% \end{macrocode}
% \end{macro}
-%
+% \iffalse
+%</labelcas>
+% \fi
+% \newpage\anglechange\PrintChanges
% \Finale
\endinput