diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/labelcas')
-rw-r--r-- | Master/texmf-dist/source/latex/labelcas/labelcas.dtx | 1908 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/labelcas/labelcas.ins | 54 |
2 files changed, 0 insertions, 1962 deletions
diff --git a/Master/texmf-dist/source/latex/labelcas/labelcas.dtx b/Master/texmf-dist/source/latex/labelcas/labelcas.dtx deleted file mode 100644 index d3be1f91ac8..00000000000 --- a/Master/texmf-dist/source/latex/labelcas/labelcas.dtx +++ /dev/null @@ -1,1908 +0,0 @@ -% \iffalse meta-comment -% -% Copyright (C) 2006 by Ulrich Diez <ulrich.diez@alumni.uni-tuebingen.de> -% -% 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: -% -% 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. -% -% 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} -%<labelcas>\ProvidesPackage{labelcas} -%<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{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 -% 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 meta-comment -% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -% ! ! -% ! !!! In this TeX-input-file henceforth alignment-tab "&" is !!! ! -% ! !!! used for commenting- and line-breaking-purposes. !!! ! -% ! ! -% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -% \fi -% \catcode`\&=14\relax -% -% \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*{& -% \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 -% }& -% -% & Write the word '\if' from the tocs: -% \DeclareRobustCommand\Outif{\string\if}& -% -% & Write the equal-sign in change-history: -% \DeclareRobustCommand\ChgEq{$=$}& -% -% & Write macro-names with <prefix> into the margin: -% \renewcommand*\PrintMacroName[1]{& -% \strut -% \ifx\pref\empty -% \else -% {\MacroFont\char`\\}& -% {\footnotesize\meta{\pref}}& -% \fi -% \MacroFont\string #1& -% }& -% -% & 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 -% \SpecialIndex@{#1}{\encapchar main}& -% \else -% \expandafter\SpecialIndex@ -% \expandafter{& -% \expandafter<& -% \pref!>#1}{\encapchar main}& -% \fi -% \@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 -% \else -% \expandafter\edef -% \expandafter\saved@macroname -% \expandafter{& -% \expandafter\string -% \csname<\pref!>\saved@macroname\endcsname}& -% \fi -% }& -% -% & The <prefix>-placeholder: -% \newcommand*\pref{}& -% -% & 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}}}& -% }& -% }& -% }& -% -% & 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}& -% }& -% }& -% -% & hyperref-support for index etc: -% -% \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 depending on whether specific -% labels are defined in the current document. -% \end{abstract} -% -% \tableofcontents -% -% \newpage -% \section{Introduction}\label{sec1} -% -% 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 -% document so that proper forking/referencing can take place. -% This package provides the macros |\eachlabelcase| and |\lotlabelcase| -% which might facilitate this task. -% -% 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 -% \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 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 to be loaded in the document-preamble by |\usepackage|. -% \medskip -% -% |\usepackage{labelcas}|~~~or -% -% |\usepackage[DefineLabelcase]{labelcas}|. -% \medskip -% -% 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} -% -% \DescribeMacro{\eachlabelcase} -% The macro |\eachlabelcase| iterates on a comma-separated list of -% ``argument-triplets'', whereby each triplet specifies:~~\nobreak -% {& -% \makeatletter -% \setbox\@tempboxa\hbox{3. Action if the label is undefined.}& -% \@tempdima\dp\@tempboxa -% \vtop{& -% \noindent -% 1. a label,\\ -% 2. action if the label is defined,\\ -% 3. action if the label is undefined.& -% }& -% \par\prevdepth\@tempdima -% }& -% \noindent -% During the iteration, an ``action-queue'' is gathered up from these -% specifications. After iterating, the ``action-queue'' will be executed. -% You can also specify a new macro-name within an optional argument. If -% you do so, the ``action-queue'' will not be executed but the macro will -% be defined to perform the actions specified in the queue: -% \bigskip -% -% \noindent -% {& -% \footnotesize -% |\eachlabelcase[|\emph{\textbackslash macro}|]{|~~~\nobreak -% \vtop{& -% \noindent -% \marg{label 1}\marg{action if label 1 defined}& -% \marg{action if label 1 undefined}|,|\\ -% \marg{label 2}\marg{action if label 2 defined}& -% \marg{action if label 2 undefined}| ,|\\ -% \hspace*{.275\hsize}\texttt{\dots}\\ -% \marg{label n}\marg{action if label n defined}& -% \marg{action if label n undefined}\ \ \ |}|& -% }& -% }& -% \bigskip -% -% \noindent Space-tokens which might surround the comma-separated triplets -% will be gobbled. -% \medskip -% -% \noindent -% \DescribeMacro{\lotlabelcase} -% The macro |\lotlabelcase| iterates on a comma-separated list of label-& -% names and tests for each name if the corresponding label is defined. -% Within the arguments you can specify actions for the cases:~~\nobreak -% {& -% \makeatletter -% \setbox\@tempboxa\hbox{4. the list does not contain any label.}& -% \@tempdima\dp\@tempboxa -% \vtop{& -% \noindent -% 1. all 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.& -% }& -% \par\prevdepth\@tempdima -% }& -% \noindent -% Like in |\eachlabelcase|, you can also specify a new macro-name within -% an optional argument. If you do so, the action will not be executed but -% the macro will be defined to perform the action: -% \bigskip -% -% \noindent -% {& -% \footnotesize -% |\lotlabelcase[|\emph{\textbackslash macro}|]|\nobreak -% \vtop{& -% \noindent -% |{|\meta{label 1}|,|\meta{label 2}|,|\texttt{\dots}& -% |,|\meta{label n}|}|\\ -% \marg{actions if all labels are defined}\\ -% \marg{actions if all labels are undefined}\\ -% \marg{actions if some labels are defined and -% some labels are undefined}\\ -% \marg{actions if list is empty}& -% }& -% }& -% \bigskip -% -% \noindent Space-tokens which might surround the label-names will be -% gobbled. One level of braces will also be gobbled so that you can also -% test for labels the names of which start or end by a space or contain -% some comma. -% -% \subsubsection{Possible problems}\label{sec3-1-1} -% -% \begin{itemize} -% \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 -% means of the aux-file, the content of which is gathered and -% 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. -% \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 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 -% these macros may, in the input-file, not be surrounded by -% \verb*+ +\nobreak-\nobreak characters.\\ -% If you want to have these \verb*+ +\nobreak\(_{\neq10}\)-tokens -% gobbled anyway, you can easily achieve this by defining another -% 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~\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 -% {\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\)& -% \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& -% \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. -% \item If the optional argument for defining a \meta{macro} rather than -% having the action(s) executed immediately, is used, \meta{macro} -% will only be defined within the group where the |\...labelcase|-& -% command occurred.\\ -% |\@ifdefinable| is involved into the assignment-process, so that -% an ``already-defined''-error is forced whenever an existing macro -% is about to be overridden.\\ -% If you need it global, you can achieve this---after having -% \meta{macro} defined---by something like -% |\global\let\macro=\macro|.\\ -% If you need a ``long''-macro, you can achieve this---after having -% \meta{macro} defined---by something like:\\ -% |\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|, |sec4|, -% |sec5| and |sec6| are defined.\bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\lotlabelcase{sec1, sec2 , {sec3} ,sec4}|\\ -% | {All labels are defined.}|\\ -% | {None of the labels is defined.}|\\ -% | {Some labels are defined, some not.}|\\ -% | {The list is empty.}|\medskip\\ -% yields: -% \lotlabelcase{sec1, sec2 , {sec3} ,sec4} -% {All labels are defined.} -% {None of the labels is defined.} -% {Some labels are defined, some not.} -% {The list is empty.}& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\lotlabelcase{sec1, sec2 , UNDEFINED ,sec3}|\\ -% | {All labels are defined.}|\\ -% | {None of the labels is defined.}|\\ -% | {Some labels are defined, some not.}|\\ -% | {The list is empty.}|\medskip\\ -% yields: -% \lotlabelcase{sec1, sec2 , UNDEFINED ,sec3} -% {All labels are defined.} -% {None of the labels is defined.} -% {Some labels are defined, some not.} -% {The list is empty.}& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\lotlabelcase{UNDEF1, UNDEF2 , {UNDEF3} ,UNDEF4}|\\ -% | {All labels are defined.}|\\ -% | {None of the labels is defined.}|\\ -% | {Some labels are defined, some not.}|\\ -% | {The list is empty.}|\medskip\\ -% yields: -% \lotlabelcase{UNDEF1, UNDEF2 , {UNDEF2-1} ,UNDEF2-2} -% {All labels are defined.} -% {None of the labels is defined.} -% {Some labels are defined, some not.} -% {The list is empty.}& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\lotlabelcase{ ,, ,}|\\ -% | {All labels are defined.}|\\ -% | {None of the labels is defined.}|\\ -% | {Some labels are defined, some not.}|\\ -% | {The list is empty.}|\medskip\\ -% yields: -% \lotlabelcase{ ,, ,} -% {All labels are defined.} -% {None of the labels is defined.} -% {Some labels are defined, some not.} -% {The list is empty.}& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\lotlabelcase[\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.}|\medskip\\ -% defines: |\test|:{ -% \lotlabelcase[\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.}& -% {\makeatletter\verbatim@font\meaning\test}} -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\eachlabelcase{ {sec1}{sec1 defined/}{sec1 undefined/},|\\ -% | {sec2}{sec2 defined/}{sec2 undefined/} ,|\\ -% | {UNDEF}{UNDEF defined/}{UNDEF undefined/} ,|\\ -% | {sec3}{sec3 defined.}{sec3 undefined.} }|& -% \medskip\\ -% yields: -% \eachlabelcase{ {sec1}{sec1 defined/}{sec1 undefined/}, -% {sec2}{sec2 defined/}{sec2 undefined/} , -% {UNDEF}{UNDEF defined/}{UNDEF undefined/} , -% {sec3}{sec3 defined.}{sec3 undefined.} }& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\eachlabelcase[\test]{ {sec1}{sec1 defined/}{sec1 undefined/},|\\ -% | {sec2}{sec2 defined/}{sec2 undefined/} ,|\\ -% | {UNDEF}{UNDEF defined/}{UNDEF undefined/} ,|& -% \\ -% | {sec3}{sec3 defined.}{sec3 undefined.} }|& -% \medskip\\ -% {& -% \eachlabelcase[\test]{ {sec1}{sec1 defined/}{sec1 undefined/}, -% {sec2}{sec2 defined/}{sec2 undefined/} , -% {UNDEF}{UNDEF defined/}{UNDEF undefined/} , -% {sec3}{sec3 defined.}{sec3 undefined.} }& -% defines: |\test|: -% -% \hskip\leftmargini -% \vtop{{\makeatletter\verbatim@font\meaning\test}}& -% }& -% \end{minipage} -% -% \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 -% balanced. -% \item Within the ``action-parts'' of |\eachlabelcase|'s argument-& -% triplets from which the action-queue is formed, balancing -% {\makeatletter\verbatim@font\mbox{\string\if\dots\string\else -% \dots\string\fi}}-constructs is not required. But ensured must -% be, that in the resulting action-queue everything is balanced -% correctly in any case. -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\eachlabelcase{ {sec1} {\if aa} {\if ab},|\\ -% | {sec2} {a is a\else} {a is b\else} ,|\\ -% | {sec3}{a is not a\fi.}{a is not b\fi.} }|& -% \smallskip\\ -% is gathered to: |\if aaa is a\else a is not a\fi.|\\ -% Executing the queue yields: -% \eachlabelcase{ {sec1} {\if aa} {\if aa}, -% {sec2} {a is a\else} {a is b\else} , -% {sec3}{a is not a\fi.}{a is not b\fi.}, }& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\eachlabelcase{ {sec1} {\if aa} {\if ab},|\\ -% | {UNDEF} {a is a\else} {a is b\else} ,|\\ -% | {sec3} {a is not a\fi.}{a is not b\fi.} }|& -% \smallskip\\ -% is gathered to: |\if aaa is b\else a is not a\fi.|\\ -% Executing the queue yields: -% \eachlabelcase{ {sec1} {\if aa} {\if aa}, -% {UNDEF} {a is a\else} {a is b\else} , -% {sec3} {a is not a\fi.}{a is not b\fi.}, }& -% \end{minipage} -% \medskip -% -% When trying such obscure things, you must be aware that brace/& -% group-nesting is independent from conditional-nesting! You might -% easily end up with a ``forgotten-endgroup''-error or some -% ``extra |\else|\dots''-error when placing such things into other -% {\makeatletter\verbatim@font\mbox{\string\if\dots\string\else -% \dots\string\fi}}-constructs! -% -% \item If you wish to use the arguments/comma-separated items for -% defining macros, no extra |#|-level is needed as everything is -% accumulated within/pro\-ces\-sed by means of token-registers. -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\eachlabelcase{ {sec1}{\def\testA#1#2#3}{\def\testB#1#2#3},|\\ -% | {sec2} {{#1,#2,#3}} {{#3,#2,#1}} }|& -% \smallskip\\ -% is gathered to: |\def\testA#1#2#3{#1,#2,#3}|~~~.\\ -% Executing the queue defines:& -% {& -% \eachlabelcase{ {sec1}{\def\testA#1#2#3}{\def\testB#1#2#3}, -% {sec2} {{#1,#2,#3}} {{#3,#2,#1}} } -% \vtop{& -% |\testA|: {\makeatletter\verbatim@font\meaning\testA}\\ -% |\testB|: {\makeatletter\verbatim@font\meaning\testB}~~~.& -% }& -% }& -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% |\eachlabelcase{ {sec1}{\def\testA#1#2#3}{\def\testB#1#2#3},|\\ -% | {UNDEF} {{#1,#2,#3}} {{#3,#2,#1}} }|& -% \smallskip\\ -% is gathered to: |\def\testA#1#2#3{#3,#2,#1}|~~~.\\ -% Executing the queue defines:& -% {& -% \eachlabelcase{ {sec1}{\def\testA#1#2#3}{\def\testB#1#2#3}, -% {UNDEF} {{#1,#2,#3}} {{#3,#2,#1}} } -% \vtop{& -% |\testA|: {\makeatletter\verbatim@font\meaning\testA}\\ -% |\testB|: {\makeatletter\verbatim@font\meaning\testB}~~~.& -% }& -% }& -% \end{minipage} -% \medskip -% \end{itemize} -% -% \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) -% which surround the comma-list-arguments of |\eachlabelcase| and -% |\lotlabelcase| are gobbled. -% -% There are circumstances where the category-code which gets assigned to -% the input-character \verb*+ + during the tokenizing-process is changed, -% and thus the gobbling-mechanism is broken for these input-characters. -% E.g., due to a preceding |\obeyspaces| or when using some package where -% the encoding of \TeX-input-files is played around with. -% This is because space-gobbling internally is implemented by means of -% 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 -% 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 -% it is not preceded by a control-word, but by a brace-character. So a -% solution to the problem is: Define a macro which takes an (en-braced) -% argument and use this macro for defining the desired control-word -% whereby the argument is placed right behind the name of the control-& -% 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*+ + 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 \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 -% |\DefineLabelcase|\marg{space}\marg{delimiter}\marg{prefix}& -% \marg{global-indicator} -% -% \begin{description} -% \item[\textnormal{\meta{space}}] specifies the argument-surrounding -% token that is to be removed. Usually surrounding space-tokens -% 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. -% 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|\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). 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. Usually:~\verb*+\global+. -% \end{description} -% -% Don't try weird things like specifying the same token both for -% \meta{space} and \meta{delimiter}, or leaving any of those empty, or -% specifying any of those to |\@nil| (,~which is reserved for terminating -% the recursion)---unless you like error-messages! Please only specify -% 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 extra error-checking implemented on these things!} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\begingroup|\\ -% |\obeyspaces|\\ -% |\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& -%\DefineLabelcase{ }{/}{SPACEOBEYED}{local}& -%\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& -%\endgroup -% {& -% \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 -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\begingroup|\\ -% |\endlinechar=-1\relax|\\ -% |\DefineLabelcase{-}{/}{BAR}{local}%|\\ -% |\BARlotlabelcase[\test]{sec1/-sec2----/--%|\\ -% | ---/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|\\ -% |\endgroup|\medskip\\ -% defines: |\test|: -% \begingroup -% \endlinechar=-1\relax -% \DefineLabelcase{-}{/}{BAR}{local}& -% \BARlotlabelcase[\test]{sec1/-sec2----/--& -% ---/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 -% \endgroup -% {\makeatletter\verbatim@font\meaning\test}& -% \global\let\test\undefined -% \end{minipage} -% \bigskip -% -% \noindent -% \begin{minipage}{\linewidth} -% \noindent -% |\begingroup|\\ -% |\endlinechar=-1\relax|\\ -% |\DefineLabelcase{.}{/}{DOT}{local}%|\\ -% |\DOTeachlabelcase{.{sec1}..{sec1 defined/}{sec1 undefined/}/%|\\ -% |..................{sec2}...{sec2 defined/}...{sec2 undefined/}./..%|\\ -% |..................{UNDEF}{UNDEF defined/}...{UNDEF undefined/}./%|\\ -% |..................{sec3}{sec3 defined.}{sec3 undefined.}..}|\\ -% |\endgroup|\medskip\\ -% yields: -% \begingroup -% \endlinechar=-1\relax -% \DefineLabelcase{.}{/}{DOT}{local}& -% \DOTeachlabelcase{.{sec1}..{sec1 defined/}{sec1 undefined/}/& -%...................{sec2}...{sec2 defined/}...{sec2 undefined/}./..& -%...................{UNDEF}{UNDEF defined/}...{UNDEF undefined/}./& -%...................{sec3}{sec3 defined.}{sec3 undefined.}..}& -% \endgroup -% \end{minipage} -% -% \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 \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 \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. -% \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}\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 -% -% \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 \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{& -% \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 \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} -% \dots scan for a pair of tokens: a space-token and some well-chosen -% bizarre token that can't possibly occur in the scanned text. If you -% put the bizarre token at the end of the text, and if the text has a -% trailing space, then \TeX's delimiter matching will match at that -% point and not before, because the earlier occurrences of space don't -% 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}& -% \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 -% 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 \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|& -% \meta{B1}~~~ the sequence: -% \\ -% \meta{stuff where to remove trail-space}\meta{bizarre}\meta{space}& -% \meta{bizarre}\meta{B1}& -% \\ -% , you can fork two cases: -% \begin{enumerate} -% \parskip=0ex\relax -% \item Trailing-space:\\ -% |##1|=\meta{stuff where to remove trail-space}, but with removed -% space. (And possibly one removed brace-level!)\\ -% |##2| = \meta{space}\meta{bizarre}. -% \item No trailing-space:\\ -% |##1|=\meta{stuff where to remove trail-space}\meta{bizarre}.\\ -% |##2| is empty. -% \end{enumerate} -% -% 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 (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 -% -% \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 -% \meta{bizarre}\meta{space}, and call the macro [\dots] by putting -% \meta{bizarre} before the scanned text and a stop pair \meta{bizarre}& -% \meta{space} after it, in case a leading space is not present -% \end{quote} -% -% When scanning for parameters ~~~|##1|\meta{bizarre}\meta{space}|##2|& -% \meta{B2}~~~ the sequence: -% \\ -% \meta{bizarre}\meta{stuff where to remove lead-space}\meta{bizarre}& -% \meta{space}\meta{B2}& -% \\ -% , you can fork two cases: -% \begin{enumerate}\parskip=0ex\relax -% \item Leading space:\\ -% |##1|= is empty.\\ -% |##2| = \meta{stuff where to remove lead-space}\meta{bizarre}& -% \meta{space} (but with a leading-space removed from -% \meta{stuff where to remove lead-space}). -% \item No leading space:\\ -% |##1|=\meta{bizarre}\meta{stuff where to remove lead-space}.\\ -% |##2| is empty. -% \end{enumerate} -% -% Thus forking can be implemented depending on the emptiness of either of -% the two arguments. -% -% You can choose \meta{B2}=\meta{bizarre}\meta{bizarre}. -% -% \subsection{Flow of work} -% -% \begin{sloppypar} -% Both |\|\meta{prefix}|eachlabelcase| and |\|\meta{prefix}|lotlabelcase| -% iterate on (e.g., comma-) separated lists: -% \settowidth\labelwidth{5.}& -% \leftmargini=\labelwidth\relax -% \advance\leftmargini\labelsep\relax -% \advance\leftmargini\parindent\relax -% \begin{enumerate} -% \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|\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 -% \advance\leftmarginii\labelsep\relax -% \begin{enumerate} -% \parskip=0ex\relax\itemsep=0ex\relax -% \makeatletter\@topsep=0ex\relax\makeatother -% \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 -% appropriate action-sequence to the queue which is represented by -% |\@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|& -% \MacroIndexEntry{\<prefix!>lc@iterate}. -% \end{enumerate}\unskip}& -% \item After iterating the list within the user-macro, the routine -% |\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} -% |\DefineLabelcase| is used for providing parameters during the -% definition of the macros~\nobreak -% {& -% \makeatletter -% \setbox\@tempboxa\hbox{|\|\meta{prefix}|lc@remleadspace| -% (internal).}& -% \@tempdima\dp\@tempboxa -% \vtop{& -% \noindent -% |\|\meta{prefix}|eachlabelcase|, -% |\|\meta{prefix}|lotlabelcase| (user),\\ -% |\|\meta{prefix}|lc@iterate|, -% |\|\meta{prefix}|lc@remtrailspace|,\\ -% |\|\meta{prefix}|lc@remleadspace| (internal).& -% }& -% \par\prevdepth\@tempdima -% }& -% \noindent -% Parameters are: -% |#1|\(=\)\meta{space}; |#2|\(=\)\meta{delimiter}; -% |#3|\(=\)\meta{prefix}; |#4|\(=\)\meta{global-indicator}. -% -% Defining of |\DefineLabelcase| takes place within a group, so that -% after closing the group it gets discarded. Package-options will also -% be evaluated within that group, right after defining -% |\DefineLabelcase|. By the option |DefineLabelcase|, -% |\DefineLabelcase| can be ``globalized'' before closing the group: -% \iffalse -%<*labelcas> -% \fi -% \begin{macrocode} -\begingroup -\DeclareOption{DefineLabelcase}% - {\global\let\DefineLabelcase\DefineLabelcase}% -\newcommand\DefineLabelcase[4]{% -% \end{macrocode} -% \end{macro} -% \def\pref{prefix} -% \begin{macro}{lc@remtrailspace} -% \Patchsavedatmacroname -% \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{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 -% unbalanced {\makeatletter\verbatim@font\mbox{\string\if\dots\string -% \else\dots\string\fi}}-constructs. So put the second argument into a -% macro |\@tempa| by means of a token-register in order to prevent -% errors related to parameter-numbering: -% \begin{macrocode} - \begingroup - \toks@{##2}% - \edef\@tempa{\the\toks@}% -% \end{macrocode} -% When forking takes place, the content of the arguments might---when -% placed into the corresponding |\if|- or |\else|-branches directly---& -% erroneously match up those constructs. In order to prevent this, the -% action related to the different branches is handled by means of -% |\@firstoftwo| and |\@secondoftwo| which get expanded when -% ``choosing the forking-route'' is already accomplished: -% \begin{macrocode} - \expandafter\endgroup - \ifx\@tempa\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -% \end{macrocode} -% The appropriate action in case of no more trailing \meta{space} is -% 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} - {% - {\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 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}{\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{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 -% |\|\meta{prefix}|lc@remtrailspace|: -% \begin{macrocode} - \begingroup - \toks@{##1}% - \edef\@tempa{\the\toks@}% -% \end{macrocode} -% The single list-items might still contain macro-definitions, |\if|-& -% forking and the like, therefore again choose the forking-route in -% terms of |\@firstoftwo| and |\@secondoftwo|: -% \begin{macrocode} - \expandafter\endgroup - \ifx\@tempa\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -% \end{macrocode} -% The appropriate action in case of leading \meta{space} is checking -% 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} - {\@tempa##1#2}% - }% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{lc@iterate} -% \Patchsavedatmacroname -% \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+.} -% \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} - \expandafter\@ifdefinable\csname#3lc@iterate\endcsname{% - \expandafter\long - \expandafter\def - \csname#3lc@iterate\endcsname##1#2{% -% \end{macrocode} -% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}& -% Make locally available the arguments as macros:\\ -% |\@tempa|\(=\)current argument\\ -% |\@tempb|\(=\)recursion-stop-item: -% \begin{macrocode} - \begingroup - \toks@{##1}% - \edef\@tempa{\the\toks@}% - \toks@{#1\@nil}% - \edef\@tempb{\the\toks@}% -% \end{macrocode} -% End the group and test if the current argument equals the -% recursion-stop-item: -% \begin{macrocode} - \expandafter\endgroup\ifx\@tempa\@tempb - \expandafter\@gobble - \else - \expandafter\@firstofone - \fi -% \end{macrocode} -% 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} - {% - \csname#3lc@remtrailspace\endcsname##1#2#1#2#2#1% -% \end{macrocode} -% \compensategap -% \InsertPrefixedUsageToIndex{prefix}{lc@remtrailspace}& -% \begin{macrocode} - \csname#3lc@iterate\endcsname#1% -% \end{macrocode} -% \compensategap -% \InsertPrefixedUsageToIndex{prefix}{lc@iterate}& -% \begin{macrocode} - }% - }% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{eachlabelcase} -% \Patchsavedatmacroname -% \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. -% \begin{macrocode} - \expandafter\@ifdefinable\csname#3eachlabelcase\endcsname{% - \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: -% \begin{macrocode} - {% -% \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 its components by |\@tempb|: -% \begin{macrocode} - \long\def\@tempa#2####1#2{% - \@tempb####1#2#1#2#2% - }% -% \end{macrocode} -% |\@tempb| is used for splitting the triplet and removing \meta{space} -% between the triplet's components. In this process it redefines itself -% several times. In case that no label is defined the name thereof -% corresponds to the first component, add the third component to -% |\@temptokena|, otherwise add the second: -% \begin{macrocode} - \long\def\@tempb####1{% - \begingroup - \long\def\@tempb########1########2########3{% - \expandafter\expandafter - \expandafter\endgroup - \expandafter\ifx - \csname r@########1\endcsname\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@temptokena\expandafter{\the\@temptokena########3}}% - {\@temptokena\expandafter{\the\@temptokena########2}}% - }% - \begingroup - \toks@{}% - \long\def\@tempb########1{% - \long\def\@tempa#2################1#2{% - \toks@\expandafter{\the\toks@{################1}}% - \expandafter\endgroup\expandafter\@tempb\the\toks@ - }% - \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: -% \begin{macrocode} - \@temptokena{}% -% \end{macrocode} -% Let's iterate on the list: -% \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} - \lc@macrodefiner{##1}% -% \end{macrocode} -% Close the group and ``flush'' the register: -% \begin{macrocode} - \expandafter}\the\@temptokena - }% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{lotlabelcase} -% \Patchsavedatmacroname -% \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 -% of the labels are defined~/ none are defined~/ just some are defined~/ -% list is empty: -% \begin{macrocode} - \expandafter\@ifdefinable\csname#3lotlabelcase\endcsname{% - \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: -% \begin{macrocode} - {% - \long\def\@tempa#2####1#2{% -% \end{macrocode} -% The list item is a label. In case that it is undefined, have the -% helper-macro |\@tempb| defined/switched to |\relax|, otherwise do the -% same but use |\@tempc| instead: -% \begin{macrocode} - {\expandafter\expandafter\expandafter}\expandafter - \ifx\csname r@####1\endcsname\relax - \let\@tempb\relax - \else - \let\@tempc\relax - \fi - }% -% \end{macrocode} -% Define |\@tempb| and |\@tempc| to empty. They may be ``switched'' to -% |\relax| when |\@tempa| is called during iteration. -% \begin{macrocode} - \def\@tempb{}% - \def\@tempc{}% -% \end{macrocode} -% Let's iterate on the list: -% \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|: -% \begin{macrocode} - \ifx\@tempb\@empty - \ifx\@tempc\@empty - \@temptokena{##6}% - \else - \@temptokena{##3}% - \fi - \else - \ifx\@tempc\@empty - \@temptokena{##4}% - \else - \@temptokena{##5}% - \fi - \fi -% \end{macrocode} -% In case that the optional argument is specified, the routine -% |\lc@macrodefiner| will modify the register to define a macro: -% \begin{macrocode} - \lc@macrodefiner{##1}% -% \end{macrocode} -% Close the group and ``flush'' the register: -% \begin{macrocode} - \expandafter}\the\@temptokena - }% - }% -% \end{macrocode} -% \end{macro} -% If the \meta{global-indicator}-argument equals |\global|, the above -% definitions need to be made |\global|: -% \begin{macrocode} - {\toks@{#4}\edef\@tempa{\the\toks@}\def\@tempb{\global}\expandafter}% - \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: -% \begin{macrocode} -}% -% \end{macrocode} -% Remember that a group was started for performing |\DefineLabelcase|'s -% definition and that |\DefineLabelcase| will be gone when that group gets -% closed---unless some ``globalizing'' takes place before. So this is the -% time for checking if |\DefineLabelcase| shall be available to the user -% and in this case for making it global: -% \begin{macrocode} -\ProcessOptions\relax -% \end{macrocode} -% Now the group which was started for defining |\DefineLabelcase| can be -% closed---right after using it for defining the basic-usage-macros: -% \begin{macrocode*} -\expandafter\endgroup\DefineLabelcase{ }{,}{}{\global}% -% \end{macrocode*} -% \let\pref\empty -% \begin{macro}{\lc@macrodefiner} -% \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 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 ``flushing'' it yields the attempt of -% defining a macro from the argument which expands to the former content -% of the register: -% \begin{macrocode} -\newcommand\lc@macrodefiner[1]{% - {\def\@tempa{#1}\expandafter}% - \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\endgroup - \the\expandafter\@temptokena - \the\toks@ - }% - \fi -}% -% \end{macrocode} -% \end{macro} -% \iffalse -%</labelcas> -% \fi -% \newpage\anglechange\PrintChanges -% \Finale -\endinput diff --git a/Master/texmf-dist/source/latex/labelcas/labelcas.ins b/Master/texmf-dist/source/latex/labelcas/labelcas.ins deleted file mode 100644 index bbc70e03230..00000000000 --- a/Master/texmf-dist/source/latex/labelcas/labelcas.ins +++ /dev/null @@ -1,54 +0,0 @@ -%% -%% Copyright (C) 2006 by Ulrich Diez <ulrich.diez@alumni.uni-tuebingen.de> -%% -%% 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: -%% -%% 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. -%% -%% This Work has the LPPL maintenance status `author-maintained'. -%% -%% The author and 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. -%% -\input docstrip.tex -\keepsilent - -\usedir{tex/latex/labelcas} - -\preamble - -This is a generated file. - -Copyright (C) 2006 by Ulrich Diez <ulrich.diez@alumni.uni-tuebingen.de> - -This file 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: - - 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. - -\endpreamble - -\generate{\file{labelcas.sty}{\from{labelcas.dtx}{labelcas}}} - -\obeyspaces -\Msg{*************************************************************} -\Msg{* *} -\Msg{* To finish the installation you have to move the following *} -\Msg{* file into a directory searched by TeX: labelcas.sty *} -\Msg{* *} -\Msg{*************************************************************} - -\endbatchfile |