%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
% %
% This is file 'ltxtools-doc.sty', version 0.0.1, December 2011. %
% %
% This package and accompanying files may be distributed and/or %
% modified under the conditions of the LaTeX Project Public License, %
% either version 1.3 of this license or 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 2005/12/01 or later. %
% %
% The LPPL maintenance status of this software is 'author-maintained'. %
% %
% This software is provided 'as it is', without warranty of any kind, %
% either expressed or implied, including, but not limited to, the %
% implied warranties of merchantability and fitness for a particular %
% purpose. %
% %
% Copyright (c) 2011 Ahmed Musa (amusa22@gmail.com). %
% %
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
\@ifpackageloaded{ltxtools}{%
\@ifpackagelater{ltxtools}{2011/11/12}{}{%
\@latex@error{Loaded version of ltxtools package is
not current}\@ehc
}%
}{%
\RequirePackage{ltxtools}[2011/12/12]%
}
\UseNormalCatcodes
\StyleFilePurpose{Macros and interfaces for document body (AM)}
\StyleFileRCSInfo
$Id: ltxtools-doc.sty,v 0.0.1 2011/12/12 09:00:00 Ahmed Musa Exp $
\ProvidesPackage{ltxtools-doc}[\StyleFileInfo]
\NeedsTeXFormat{LaTeX2e}[2011/06/27]
\cptloadpackages{%
ltxkeys||2011/12/10;
}
\robust@def*\useshortdoccmds{%
\let\useshortdoccmds\relax
\def\do##1##2,{%
\ifnot@nil{##1}{%
\ifdefTF{##1}{%
\ifx##1##2\else
\LTS@err{Command '\string##1' already exists:\MsgBrk
it can't be redefined by \string\useshortdoccmds}\@ehc
\fi
}{%
\let##1=##2%
}%
\do
}%
}%
\expandafter\do\LTS@shortdoccmds,\@nil,%
}
\begingroup
\endlinechar=-1
\robust@gdef*\LTS@shortdoccmds{%
\cmdtext\ltscmdtext,
\fx\ltsfx,\ffx\ltsffx,\ffxi\ltsffxi,\ffxim\ltsffxim,
\ftffx\ltsftffx,\hx\ltshx,\hhx\ltshhx,
\fthhx\ltsfthhx,\ftfx\ltsftfx,\ftfxx\ltsftfxx,\fxim\ltsfxim,
\fxi\ltsfxi,\fxis\ltsfxis,\hxim\ltshxim,\hxi\ltshxi,\hxis\ltshxis,
\dummyfxim\ltsdummyfxim,\dummyfxi\ltsdummyfxi,\aidx\ltsaidx,
\aidxm\ltsaidxm,\aidxs\ltsaidxs,\bidx\ltsbidx,\bidxm\ltsbidxm,
\bidxs\ltsbidxs,\aiidx\ltsaiidx,\aiidxm\ltsaiidxm,\aiidxs\ltsaiidxs,
\files\ltsfiles,\file\ltsfiles,\headpkg\ltsheadpkg,\emphlist\ltsemphlist,
\quotedlist\ltsquotedlist,\pkg\ltspkg,\pkgm\ltspkgm,\pkgg\ltspkgg,
\pkgnoidx\ltspkgnoidx,\pkgs\ltspkgs,
\headquoted\ltsheadquoted,\headfx\ltsheadfx,\headhx\ltsheadhx,
\noteenv\ltsnoteenv,\endnoteenv\endltsnoteenv
}
\endgroup
\robust@def*\LTS@sanitize{%
\let\do\@makeother
\do\\\do\$\do\&\do\#\do\^\do\_\do\%\do\~%
}
\robust@def*\ltshref{%
\begingroup
\LTS@sanitize\@makeother\|%
\expandafter\endgroup\LTS@href@a
}
\robust@def*\LTS@href@a#1{%
\edef\LTS@tempa{\cptzapspaces{#1}}%
\LTS@href@b
}
\robust@def*\LTS@href@b#1{\href{\LTS@tempa}{#1}}
\robust@def*\LTS@writefile#1#2{%
\ifblankTF{#2}{}{%
\if@filesw
\@bsphack
\immediate\write#1{\unexpanded{#2}}%
\if@nobreak\ifvmode\nobreak\fi\fi
\@esphack
\fi
}%
}
\robust@def*\ltsensurecomma{%
\ltsifnextchar,{}{\LTS@err{Don’t forget comma}}%
}
\robust@def*\ltsmakecs#1{\texttt{\char'134\unskip#1}}
\robust@def*\ltsnohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M}
\robust@def*\ltsdefinecolor{%
\let\reserved@e\definecolor
\LTS@testopt\LTS@definecolor{}%
}
\robust@def*\ltscolorlet{%
\let\reserved@e\colorlet
\LTS@testopt\LTS@definecolor{}%
}
\robust@def*\LTS@definecolor[#1]#2{%
\@ifundefinedcolor{#2}{%
\reserved@e[#1]{#2}%
}{%
\LTS@err{Color name '#2' already defined}\@ehc
}%
}
% Usage of colors defined via \ltsdefinecolorset:
% eg, \color{
green}, where ->x, ->1.
\robust@def*\ltsprovidecolorset{%
\begingroup
\let\inprovide\cptswtrue
\LTS@testopt\LTS@definecolorset{x}%
}
\robust@def*\ltsdefinecolorset{%
\begingroup
\let\inprovide\cptswfalse
\LTS@testopt\LTS@definecolorset{x}%
}
\robust@def*\LTS@definecolorset[#1]{%
\cpt@testpnopt{\LTS@d@finecolorset{#1}}{1}%
}
\robust@def*\LTS@d@finecolorset#1(#2)#3{%
\ifcsndefTF{ver@xcolor.sty}{}{%
\LTS@err{'xcolor' package not loaded}\@ehc
}%
\cptemptifycsset{\LTS@tempb,\LTS@tempc,\LTS@tempd,\LTS@tempe}%
\def\LTS@tempa##1,##2,##3,##4,##5\@nil{%
\ifblankTF{##4}{%
\LTS@err{Incomplete color format in \string\ltsdefinecolorset}\@ehc
}{%
\def\reserved@e{##1}%
}%
}%
\def\csv@do##1{%
\LTS@tempa##1,,,,\@nil
\xifinsetTF{,\reserved@e,}{,\LTS@tempd,}{%
\edef\LTS@tempe{\csliststack,\LTS@tempe\reserved@e}%
}{%
\edef\LTS@tempd{\csliststack,\LTS@tempd\reserved@e}%
\@ifundefinedcolor{#1\reserved@e#2}{%
\edef\LTS@tempb{\csliststack;\LTS@tempb##1}%
}{%
\if\inprovide\else
\edef\LTS@tempc{\csliststack{;\@space}\LTS@tempc#1\reserved@e#2}%
\fi
}%
}%
}%
\csv@@parse[;]{#3}%
\ifcsemptyTF\LTS@tempe{}{%
\LTS@err{Color names '\expandcsonce\LTS@tempe' multiply
\MsgBrk submitted to \string\ltsdefinecolorset}\@ehc
}%
\ifcsemptyTF\LTS@tempc{}{%
\LTS@err{Color names '\LTS@tempc' already in use}\@ehc
}%
\ifcsemptyTF\LTS@tempb{}{%
\cptexpandarg{\xglobal\definecolorset{rgb}{#1}{#2}}
{\expandcsonce\LTS@tempb}%
}%
\endgroup
}
\robust@def*\startrecurrentlist#1{%
\gdef\recurlistnr{#1}%
\simplecmdpatch\@item{%
\if@nmbrlist\refstepcounter\@listctr\fi
}{%
\if@nmbrlist
\refstepcounter\@listctr
\ifnum\csname c@\@listctr\endcsname>#1%
\advance\csname c@\@listctr\endcsname-#1%
\fi
\fi
}%
}
\robust@def*\@endrecurlist#1{%
\simplecmdpatch\@item{%
\if@nmbrlist
\refstepcounter\@listctr
\ifnum\csname c@\@listctr\endcsname>#1%
\advance\csname c@\@listctr\endcsname-#1%
\fi
\fi
}{%
\if@nmbrlist\refstepcounter\@listctr\fi
}%
}
\robust@def*\endrecurrentlist{%
\ifdefTF\recurlistnr{}{%
\ltxmsg@err{'\string\startrecurrentlist' wasn't called before
\MsgBrk'\string\endrecurrentlist'}\@ehc
}%
\simpleexpandarg\@endrecurlist\recurlistnr
\gundefcs\recurlistnr
}
% Eg, \uppercasefirstletter{ 0a ahmed musa }
\new@def*\LTS@nouppercaselist{a,an,any,and,or,not,for,from,
if,the,then,them,they,he,she,will,would,shall}
\robust@def*\AddToNoUppercaseList#1{%
\ltsfiltermergecsv[,]\LTS@nouppercaselist{#1}\nofilter
}
\new@def*\uppercasefirstletter#1{%
\begingroup
\@tempcnta\z@pt
\let\LTS@tempa\@empty
\expandafter\upp@rcasefirstletter\romannumeral-`\q#1 \@nil
}
\new@def*\upp@rcasefirstletter#1 #2\@nil{%
\oifinset@sp@TF,{#1}\LTS@nouppercaselist{%
\ifnum\@tempcnta=\z@pt
\upp@rc@sefirletter#1\@nil
\else
\LTS@tempa#1%
\fi
}{%
\upp@rc@sefirletter#1\@nil
}%
\advance\@tempcnta\@ne
\ifblankTF{#2}{%
\endgroup
}{%
\let\LTS@tempa\@space
\upp@rcasefirstletter#2 \@nil
}%
}
\new@def*\upp@rc@sefirletter#1#2\@nil{\uppercase{\LTS@tempa#1}#2}
\AtBeginDocument{\newcounter{LTS@notecnt}[section]}
% For use where \@currentlabel is needed:
\robust@def*\ltsnoteenv{\cpt@testst\LTS@noteenv}
\robust@def*\LTS@noteenv{%
\let\if@notest\ifcpt@st
\stepcounter{LTS@notecnt}%
\protected@edef\@currentlabel{\thesection.\theLTS@notecnt}%
\def\@currentlabelname{note}%
\def\@currentHref{note.\@currentlabel}%
\smallbreak
\textbf{Note~\thesection.\theLTS@notecnt}\enskip
\nobreak\@nobreaktrue
}
\robust@def*\endltsnoteenv{%
\finalhyphendemerits\z@pt
\if@notest\unskip\textbullet\fi
\medbreak\@ignoretrue
}
\robust@def*\ltsnote{%
\stepcounter{LTS@notecnt}%
\smallbreak
\textbf{Note~\thesection.\theLTS@notecnt}\enskip
\nobreak\@nobreaktrue
}
\newenvironment{indentednote}{%
\stepcounter{LTS@notecnt}%
\protected@edef\@currentlabel{\thesection.\theLTS@notecnt}%
\def\@currentlabelname{note}%
\def\@currentHref{note.\@currentlabel}%
\nobreak\@nobreaktrue
\list{}{\listparindent1.5em\relax
\itemindent\listparindent\rightmargin\leftmargin
\parsep\z@pt\relax
\ifcsndefTF{ver@amverbatim.sty}{%
\vbleftmargin\leftmargin
\vbrightmargin\rightmargin
}{}%
}%
\item\hspace*{-\itemindent}%
\textbf{Note~\thesection.\theLTS@notecnt}\enskip
}{%
\endlist\medskip\@ignoretrue
}
\patchcs\@afterheading
{\clubpenalty \@clubpenalty}
{\clubpenalties 2 \@clubpenalty 0}{}{}
\gnewletcs\rsv@afterheading\@afterheading
\lastlinefit500
\robust@def*\docsection{%
\begingroup
\LTS@testst{\LTS@section\section}%
}
\robust@def*\docsubsection{%
\begingroup
\LTS@testst{\LTS@section\subsection}%
}
\robust@def*\docsubsubsection{%
\begingroup
\LTS@testst{\LTS@section\subsubsection}%
}
\robust@def*\docparagraph{%
\begingroup
\LTS@testst{\LTS@section\paragraph}%
}
\robust@def*\LTS@section#1{%
\edef\LTS@tempa{\noexpand#1\ifLTS@st*\fi}%
\cpt@testpnopt\LTS@s@ction{}%
}
\robust@def*\LTS@s@ction(#1){%
\cpt@testltopt{\LTS@s@cti@n{#1}}{}%
}
\robust@def*\LTS@s@cti@n#1<#2>{%
\xdef\@afterheading{%
\ifblankTF{#1}{}{\unexpanded{\label{#1}}}%
\ifblankTF{#2}{}{\unexpanded{\ltsaidxm*{#2}}}%
\expandcsonce\@afterheading
\gletcs\noexpand\@afterheading\noexpand\rsv@afterheading
}%
\expandafter\endgroup\LTS@tempa
}
\new@def*\ltsreddots#1#2{%
\begin{center}%
\def\tempa{\textcolor{red}{\vrule height1ex depth0pt width1ex}}%
\tempa\hspace{#1cm}{#2}\hspace{#1cm}\tempa
\end{center}%
}
\ltxkeys@definekeys*[LTS]{citation}[ctt@]{%
width/\hsize;
author//;
textcolor/black;
fonttype/\normalfont;
leftmargin/\leftmargin;
rightmargin/\rightmargin;
preskip/0ex
}
\ltsprotected\ltsnewcommand\ltscitation[2][]{%
\ltxkeys@launchkeys[LTS]{citation}{#1}%
\begingroup
\sbox\@tempboxa{%
\ctt@fonttype
\textit{\textcolor{\ctt@textcolor}{\ctt@author}}%
}%
\list{}{%
\setlength\leftmargin{\ctt@leftmargin}%
\setlength\rightmargin{\ctt@leftmargin}%
}%
\vspace*{\ctt@preskip}%
\item\relax\ignorespaces
\ctt@fonttype\textcolor{\ctt@textcolor}{#2}%
\hspace*{\fill}\nolinebreak[1]%
\quad\hspace*{\fill}\finalhyphendemerits\z@pt\relax
\usebox{\@tempboxa}%
\endlist
\bigskip
\endgroup
\@ignoretrue
}
\new@def*\fnquote@finalstrut#1{%
\unskip
\ifhmode
\nobreak
\vrule\@width\z@\@height\z@\@depth\dp#1%
\fi
}
\newenvironment{ltsfnquote}[1][0pt]{%
\begin{list}{}{%
\vspace*{-#1}%
\setmanytolength{\topsep,\parskip,\partopsep,\itemsep}{0em}%
}%
\item\relax
}{%
\fnquote@finalstrut\strutbox
\end{list}%
}
\ltxkeys@definekeys*[LTS]{ltsshade}[ltsshd@]{%
width/\hsize;
leftadjust/0em;
indent/0em;
fillcolor/gray!25;
framecolor/black;
framesep/3\p@;
framerule/0.4\p@
}
\robust@def*\LTS@shadedenv{%
\def\FrameCommand{%
\clubpenalty\@m\widowpenalty\@m
\noindent\kern\ltsshd@leftadjust
\fboxrule\ltsshd@framerule\fboxsep\ltsshd@framesep
\fcolorbox{\ltsshd@framecolor}{\ltsshd@fillcolor}%
}%
\parindent\z@pt\finalhyphendemerits\z@pt
\dimensionexpr\dimen@{\ltsshd@width-(\ltsshd@framesep
+\ltsshd@framerule+\ltsshd@indent)}%
\MakeFramed{\hsize\dimen@\FrameRestore\@setminipage}%
}
\newcommand\ltsframeshade[1][]{%
\ifcsndefTF{ver@framed.sty}{%
\ltxkeys@launchkeys[LTS]{ltsshade}{#1}%
\LTS@shadedenv
}{%
\ltxmsg@err{'framed' package not loaded}\@ehc
}%
}
\robust@def*\endltsframeshade{\endMakeFramed\@ignoretrue}
\robust@def*\ltsframewithtitle{\LTS@testst\LTS@framewithtitle}
\robust@def*\LTS@framewithtitle{%
\vskip.5\baselineskip
\begin{ltsframeshade}[width=\fwt@width,fillcolor=\fwt@color,
framesep=\fwt@framesep,framerule=\fwt@framerule,
framecolor=\fwt@framecolor]%
\ifLTS@st\else
\textcolor{\fwt@titlecolor}{\fwt@format{\fwt@title}}%
\\[\fwt@titlevskip]%
\fi
\endgraf
}
\def\endframewithtitle{%
\end{ltsframeshade}\ignorespaces\@ignoretrue
}
\newcommand*\lipsumnopar[2][1]{{\def\lips@par{ }\lipsum[#1-#2]}}
\robust@def*\LTS@lipsumcolors{%
black,red,blue,green,purple,cyan,violet,orange%
}
\robust@def*\AddLipsumColors#1{%
\ltsfiltermergecsv[,]\LTS@lipsumcolors{#1}\nofilter
}
\robust@def*\ltslipsum{%
\ifcsndefTF{ver@lipsum.sty}{%
\ifcsndefTF{ver@xcolor.sty}{%
\LTS@testopt{\LTS@lipsum}{1}%
}{%
\ltxmsg@err{'xcolor' package not loaded}\@ehc
}%
}{%
\ltxmsg@err{'lipsum' package not loaded}\@ehc
}%
}
\robust@def*\LTS@lipsum[#1]{%
\pushnumber\LTS@lipsumnr
\begingroup
\@tempcnta\z@pt
\def\currcolor{}%
\def\do##1,{%
\iftokennilTF{##1}{%
\ifcsemptyTF\currcolor{%
\expandafter\do\LTS@lipsumcolors,\@nil,%
}{}%
}{%
\advance\@tempcnta by1
\let\next\do
\ifnum\@tempcnta=\LTS@lipsumnr
\def\currcolor{##1}%
\def\next####1\@nil,{}%
\fi
\next
}%
}%
\expandafter\do\LTS@lipsumcolors,\@nil,%
\noindent\textcolor{\currcolor}{\lipsum[#1]}%
\endgroup
\smallskip
}
\new@def*\LTS@baselineskip{}
\newenvironment{ltssidetoks}[2][\marginparwidth]{%
\xdef\LTS@baselineskip{\the\dimexpr#2{\LTS@baselineskip}}%
\list{}{\leftmargin-#1}%
\nobreak\@nobreaktrue
\vspace{.5ex}%
\item[]\relax
}{%
\endgraf\nobreak\@nobreaktrue
\def\reserved@a##1##{##1\gdef\LTS@baselineskip}%
\advance\baselineskip-\expandafter\reserved@a\LTS@baselineskip
\endlist
\removelastskip
}
\robust@def*\srefsetup#1{%
\ltxkeys@launchkeys[LTS]{ltsref}{#1}%
}
% Examples:
% \sref[sec:]{y,x,z}
% \sref*[sec:]{y,x,z}
% \srefrange[sec:]{y,x,z}
% \sref will list all the references in ascending order;
% \srefrange will list only the smallest and largest references,
% joined with a hyphen; \sref* is equivalent to \srefrange.
\robust@def*\sref{%
\begingroup
\let\LTS@inrefrng\cptswfalse
\cpt@teststopt\LTS@ref@a{}%
}
\robust@def*\srefrange{%
\begingroup
\let\LTS@inrefrng\cptswtrue
\LTS@testopt\LTS@ref@a{}%
}
\robust@def*\LTS@ref@a[#1]{%
\ifcsndefTF{ver@hyperref.sty}{}{%
\ltxmsg@warn{Package 'hyperref' not loaded:
\MsgBrk'\noexpand\sref' and '\noexpand\srefrange' can't
\MsgBrk extract reference name automatically}%
}%
\if\LTS@inrefrng\else
\ifcpt@st
\let\LTS@inrefrng\cptswtrue
\fi
\fi
\def\refbase{#1}\LTS@ref@b
}
\robust@def*\LTS@ref@b#1{%
\edef\x{\s@expandarg\cpttrimspace{\cptrm-`\q#1}}%
\ifcsemptyTF\x{}{%
\cptexpandarg\LTS@ref@c\x
}%
}
\robust@def*\LTS@ref@c#1{%
\ifcsemptyTF\refbase{%
\def\LTS@reflist{#1}%
}{%
\def\LTS@reflist{}%
\cptfor#1\dofor{%
\edef\LTS@reflist{\csliststack,\LTS@reflist\refbase##1}%
}%
}%
\def\LTS@tempa##1,##2,##3\@nil{%
\ifblankTF{##2}{%
\edef\LTS@tempa{\cpttrimspace{##1}}%
\ifdefTF\autoref\autoref\ref\LTS@tempa
}{%
\expandafter\LTS@ref@d\expandafter{\LTS@reflist}%
}%
}%
\expandafter\LTS@tempa\LTS@reflist,,\@nil
\endgroup
}
\robust@def*\LTS@ref@d#1{%
\let\ifnumtest\ifnnum
\def\LTS@reflist{}\def\LTS@r@flist{}%
\def\putref##1{%
\def\reserved@a####1##1####2####3\LTS@nil{%
\ref{####2}%
}%
\expandafter\reserved@a\LTS@r@flist\LTS@nil
}%
\def\do##1{%
\edef\LTS@reflist{\LTS@reflist{\LTS@getrefnum{##1}}}%
\edef\LTS@r@flist{\LTS@r@flist\LTS@getrefnum{##1}{##1}}%
\ifnumcmpTF\indrisnr>\@ne{%
\ifboolFT{lastindris}{}{%
\ifswitchTF{LTS@inrefrng}{%
\LTS@setrefrange\LTS@reflist
}{%
\def\sortoutputfmt####1{####1,}%
\def\sortendfmt####1{####1}%
\edef\LTS@reflist{\s@expandarg\ltssortnumlt\LTS@reflist}%
\def\do####1{%
\ifnum\indrisnr>\@ne
\iflastindris
\xifstrcmpTF\LTS@lastrefsep{and}{ and }{, }%
\else
,\@space
\fi
\fi
\putref{####1}%
}%
\indrisloop*\LTS@reflist\do
}%
}%
}{%
\LTS@getrefname{##1}\if@tempswa s~\fi
}%
}%
\indrisloop{#1}\do
}
\def\LTS@setrefrange#1{%
\def\sortoutputfmt##1{{##1}}%
\def\sortendfmt##1{{##1}}%
\edef#1{\s@expandarg\ltssortnumlt#1}%
\def\LTS@tempa##1##2\LTS@nil{%
\putref{##1}%
\xifstrcmpTF\LTS@refrangesep{--}{--}{%
~%
\ifnum\indrisnr=\tw@ and\else\LTS@refrangesep\fi
~%
}%
\def\reverse####1####2{%
\expandafter\ifx\expandafter\LTS@nnil\cpt@car####2\car@nil
\expandafter\iofii\else\expandafter\iiofii\fi
{####1}{%
\expandafter\reverse\expandafter{%
\romannumeral-`\q\ifblankTF{####1}{{####2}}{{####2}####1}%
}%
}%
}%
\edef\LTS@tempb{\reverse{}##2\LTS@nnil}%
\def\LTS@tempa####1####2\LTS@nil{%
\putref{####1}%
}%
\expandafter\LTS@tempa\LTS@tempb\LTS@nil
}%
\expandafter\LTS@tempa#1\LTS@nil
}
\def\LTS@getrefnum#1{%
\ifcsndefTF{r@#1}{%
\expandafter\expandafter\expandafter
\cpt@car\csname r@#1\endcsname\car@nil
}{%
00%
}%
}
\def\LTS@getrefname#1{%
\@tempswafalse
\ifcsndefFT{r@#1}{}{%
\expandafter\expandafter\expandafter\LTS@getrefname@a
\csname r@#1\endcsname{}{}{}{}\LTS@nil
}%
}
\def\LTS@getrefname@a#1#2#3#4#5\LTS@nil{%
\ifblankTF{#4}{}{\LTS@getrefname@b#4.\LTS@nil}%
}
\def\LTS@getrefname@b#1.#2\LTS@nil{%
\ifcsndefTF{LTS@#1refname}{%
\@tempswatrue
\csname LTS@#1refname\endcsname
}{%
\ifcsndefTF{#1name}{%
\@tempswatrue
\cptexpanded{\cptsevenxp\cpttrimspaces
\cptthreexp{\csname#1name\endcsname}}%
}{}%
}%
}
\ltxkeys@definekeys*[LTS]{ltsref}[LTS@]{%
equationrefname/Equation/\def\equationautorefname{#1};
footnoterefname/footnote/\def\footnoteautorefname{#1};
itemrefname/item/\def\itemautorefname{#1};
figurerefname/Figure/\def\figureautorefname{#1};
tablerefname/Table/\def\tableautorefname{#1};
partrefname/Part/\def\partautorefname{#1};
appendixrefname/Appendix/\def\appendixautorefname{#1};
chapterrefname/chapter/\def\chapterautorefname{#1};
sectionrefname/section/\def\sectionautorefname{#1};
subsectionrefname/subsection/\def\subsectionautorefname{#1};
subsubsectionrefname/subsubsection/\def\subsubsectionautorefname{#1};
paragraphrefname/paragraph/\def\paragraphautorefname{#1};
subparagraphrefname/subparagraph/\def\subparagraphautorefname{#1};
noterefname/note/\def\noteautorefname{#1};
tablenoterefname/table note/\csndef*{table noteautorefname}{#1};
FancyVerbLinerefname/line/\def\FancyVerbLineautorefname{#1};
macrolinerefname/macro line/\csndef*{macro lineautorefname}{#1};
theoremrefname/Theorem/\def\theoremautorefname{#1};
pagerefname/page/\def\pageautorefname{#1};
lastrefsep/and/\trim@@spaces{#1}\LTS@lastrefsep;
refrangesep/to/\trim@@spaces{#1}\LTS@refrangesep;
}
\def\setupcrefformat{%
\docommalist{algorithm,appendix,chapter,corollary,definition,
enumi,equation,example,figure,footnote,lemma,line,note,part,
proposition,remark,result,section,table,theorem
}{%
\crefformat{##1}{####2##1~####1####3}%
}%
}
\robust@def*\printcommalist{\cpt@testst\lts@printcommalist}
\robust@def*\lts@printcommalist#1{%
\cpt@stchoose{cpt@st}{#1}\lts@tempa\printcommalist
\def\do##1{%
\ifnum\indrisnr>\@ne
\iflastindris\@space and\@space\else,\@space\fi
\fi
##1%
}%
\indrisloop*\lts@tempa\do
}
\robust@def*\ltsnobreakitem{\cpt@teststopt\lts@nobreakitem}
\robust@def*\lts@nobreakitem[#1]#2{%
\item~\nopagebreak\\[-\baselineskip]%
\ifcpt@st
\centerline{\includegraphics[#1]{#2}}%
\else
#2%
\fi
}
\newtog{normallongtable}
\AfterStartOfDocument{%
\ifdefTF\LT@start{%
\patchcs\LT@start
{\vfil\break}
{\iftogTF{normallongtable}{\vfil\break}{}}
{\LTS@info{Patching of \noexpand\longtable succeeded}}
{\LTS@warn{Patching of \noexpand\longtable failed}}%
\patchcs\LT@start
{\penalty\z@}
{\iftogTF{normallongtable}{\penalty\z@}{}}
{\LTS@info{Patching of \noexpand\longtable succeeded}}
{\LTS@warn{Patching of \noexpand\longtable failed}}%
}{}%
}
\robust@def\ltsnewfootnote#1{\newcsndef*{LTS@footnote@#1}}
\newcommand*\usefootnote[1]{%
\footnote{\uselivecsn{LTS@footnote@#1}}%
\AtEndDocument{\letcsntocs{LTS@footnote@#1}\relax}%
}
\AtBeginDocument{\newcounter{LTS@ltablenotecnt}[table]}
\new@def\ltablenotehead#1{\noalign{\LTS@ltablenotehead{#1}}}
\robust@def*\LTS@ltablenotehead{%
\def\ltnotehead{00}%
\LTS@teststopt\LTS@ltablenote{}%
}
\new@def*\LTS@ltablenoteshook{}
\robust@def*\ltablenote{%
\def\ltnotehead{01}%
\LTS@teststopt\LTS@ltablenote{}%
}
\robust@def*\LTS@ltablenote[#1]#2{%
\unskip
\ifblankTF{#1}{}{\label{#1}}%
\begin{LTS@uselt@blenote}{#2}\end{LTS@uselt@blenote}%
}
\robust@def\newltablenote#1{\newcsndef*{LTS@ltablenote@id@#1}}
\robust@def*\useltablenote{%
\def\ltnotehead{01}\LTS@teststopt\LTS@useltablenote{}%
}
\robust@def*\LTS@useltablenote[#1]#2{%
\unskip
\ifcsndefTF{LTS@ltablenote@id@#2}{%
\ifblankTF{#1}{}{\label{#1}}%
\begin{LTS@uselt@blenote}%
{\usename{LTS@ltablenote@id@#2}}%
\end{LTS@uselt@blenote}%
\AtEndDocument{\letcsntocs{LTS@ltablenote@id@#2}\relax}%
}{%
\LTS@err{Table note '#2' is undefined}\@ehc
}%
}
\cptnewvariables{dimen}{ltnotenrwidth}[14pt]
\newenvironment{LTS@uselt@blenote}[1]{%
\if\ltnotehead\else
\stepcounter{LTS@ltablenotecnt}%
\ifcsndefTF{ver@hyperref.sty}{%
\protected@edef\@currentlabel{\thetable.\theLTS@ltablenotecnt}%
\def\@currentlabelname{tablenote}%
\def\@currentHref{table note.\@currentlabel}%
}{%
\let\hyperlink\@secondoftwo
\let\hypertarget\@secondoftwo
}%
\@killglue
\hyperlink{hy@ltablenote\thetable.\theLTS@ltablenotecnt}{%
\textsuperscript{%
\ifnum\theLTS@ltablenotecnt=1 See note~\fi
\thetable.\theLTS@ltablenotecnt
}%
}%
\fi
\xdef\LTS@ltablenoteshook{%
\noindent
\expandcsonce\LTS@ltablenoteshook
\if\ltnotehead
\unexpanded{{\noexpand\normalfont\small#1}}%
\endgraf
\else
\ifLTS@st\else\endgraf\fi
\noexpand\makebox[\the\ltnotenrwidth]\ifLTS@st[r]\else[l]\fi{%
\noexpand
\hypertarget{hy@ltablenote\thetable.\theLTS@ltablenotecnt}{%
\noexpand\textsuperscript{\noexpand
\textcolor{blue}{\thetable.\theLTS@ltablenotecnt}%
}%
}%
\ifLTS@st\else\hfill\fi
}%
\unexpanded{#1}%
\fi
}%
}{%
\@ignoretrue
}
\robust@def*\printltablenotes{%
\begingroup
\clubpenalty\@m\widowpenalty\@m
\finalhyphendemerits\z@pt
\ifdim\parindent=0pt
\leftskip=20pt
\else
\leftskip=\parindent
\fi
\rightskip=\leftskip
\let\ltsfx\ltsftfx
\let\fx\ltsfx
\footnotesize
\endgraf
\centerline{\textbf{Table \thetable\ notes}}%
\endgraf\nobreak\@nobreaktrue
\removelastskip\noindent
\ifcsndefTF{ver@hyperref.sty}{}{%
\let\hyperlink\@secondoftwo
\let\hypertarget\@secondoftwo
}%
\LTS@ltablenoteshook
\endgraf
\endgroup
}
\AfterStartOfDocument{%
\def\LTS@tempa{\ifcsemptyTF\LTS@ltablenoteshook{}\printltablenotes}%
\ifdefTF\longtable{%
\edef\longtable{%
\gdef\noexpand\LTS@ltablenoteshook{}%
\expandcsonce\longtable
}%
\edef\endlongtable{%
\expandcsonce\endlongtable
\expandcsonce\LTS@tempa
}%
}{%
\edef\tabular{%
\gdef\noexpand\LTS@ltablenoteshook{}%
\expandcsonce\tabular
}%
\edef\endtabular{%
\expandcsonce\endtabular
\expandcsonce\LTS@tempa
}%
}%
\ifdefTF\Hy@chapterstring
{\@onelevel@sanitize\Hy@chapterstring}{}%
}
\new@def*\titleurltext{}
\robust@def*\titleurl#1{%
\ifblankTF{#1}{%
\cpt@err{Empty title url}\@ehc
}%
\def\titleurltext{#1}%
\ifpdfTF{}{%
\def\reserved@a##1/##2/##3/##4\LTS@nil{%
\def\titleurltext{##1/##2/##3/}%
}%
\reserved@a#1///\LTS@nil
}%
}
\robust@def*\LTS@titaurefcnterr#1#2{%
\LTS@err{#1 reference counter too large: > \number#2}\@ehc
}
\robust@def*\LTS@titaureflabel#1#2#3{%
\ifcsndefTF{LTS@titaunote@#2}{%
\ifnum\usename{LTS@titaunote@#2}=#3\relax
\else
\LTS@warn{#1 references may be inconsistent}%
\fi
}{%
\csn@xdef{LTS@titaunote@#2}{#3}%
}%
}
\new@def*\LTS@gettitaunotenr#1{%
\ifcsndefFT{LTS@titaunote@#1}{0}{\usename{LTS@titaunote@#1}}%
}
\new@def*\LTS@savenotes#1#2#3#4{%
\def\LTS@s@venotes##1\sep##2\LTS@nil##3{%
\def\nextnote{##2}%
\edef\reserved@a{%
\let\if\intitle\unexpanded{\intitle\cptswtrue}\else
\unexpanded{\intitle\cptswfalse}\fi
}%
\def\reserved@b{\grightaddtocsn{LTS@#1noteshook}}%
\expandafter\reserved@b\expandafter{%
\reserved@a
\advance\usename{LTS@#1notenr}\@ne
\immediate\write\@auxout{%
\string\LTS@titaureflabel{#1}{##3}{\the\usename{LTS@#1notenr}}%
}%
\def\thefootnote{%
\makebox[1em][l]{%
\if\intitle
\ifcase\usename{LTS@#1notenr}\or#2\or#3\or#4\else
\LTS@titaurefcnterr{Title}{3}\fi
\else
\ifnum\usename{LTS@#1notenr}>20\relax
\LTS@titaurefcnterr{Author}{20}%
\else
\the\usename{LTS@#1notenr}%
\fi
\fi
}%
}%
\footnotetext{##1}%
}%
}%
\AtEndDocument{%
\ifcsndefFT{LTS@#1reftotal}{}{%
\ifnum\usename{LTS@#1reftotal}=\usename{LTS@#1notetotal}\relax
\else
\LTS@err{Number of #1 references not equal to
\MsgBrk number of #1 notes}\@ehc
\fi
}%
}%
}
\cptchardef\LTS@titlereftotal=0
\cptchardef\LTS@titlenotetotal=0
\cptchardef\LTS@authorreftotal=0
\cptchardef\LTS@authornotetotal=0
\new@def*\LTS@checknotes#1#2#3{%
\ifblankTF{#2}{%
\ifblankTF{#3}{}{%
\LTS@err{Empty #1 references with nonempty #1 notes}\@ehc
}%
}{%
\ifblankTF{#3}{%
\LTS@err{Empty #1 notes with nonempty #1 references}\@ehc
}{}%
}%
\def\LTS@tempb##1##2##3{%
##3\z@pt
\def\LTS@tempc####1##1####2\LTS@nil{%
\ifblankTF{####2}{%
\advance##3\@ne
}{%
\advance##3\@ne
\LTS@tempc####2\LTS@nil
}%
}%
\LTS@tempc##2##1\LTS@nil
}%
\LTS@tempb,{#2}\@tempcnta
\LTS@tempb\sep{#3}\@tempcntb
\ifnum\@tempcnta=\@tempcntb\else\ltsafterfi
\LTS@err{Number of #1 references doesn't match
\MsgBrk that of #1 notes}\@ehc
\ltsfi
\csnnumadd!{LTS@#1notetotal}\@tempcnta
}
\robust@def*\LTS@gettitaureftotal#1#2{%
\cptelementcount[,]{#2}%
\csnnumadd!{LTS@#1reftotal}\cptelemnr
}
\cptnewvariables{count}[LTS@]{titlenotenr}
% Eg, \titleref{a1,a2}
\robust@def*\titleref#1{%
\LTS@gettitaureftotal{title}{#1}%
\unskip
\textsuperscript{%
\cptfor#1\dofor{%
\ifcase\LTS@gettitaunotenr{##1}\or\ding{'111}%
\or,\ding{'110}\or,\ding{'112}\else
\LTS@titaurefcnterr{Title}{3}\fi\hss
}%
}%
}
% \titlenote[a1,a2]{xxx\sep yyy}
% or \titlenote[a1]{xxx} and \titlenote[a2]{yyy}
\robust@def*\titlenotes{\LTS@testopt\LTS@titlenotes{}}
\newletcs\titlenote\titlenotes
\robust@def*\LTS@titlenotes[#1]#2{%
\ifcsndefTF{ver@pifont.sty}{}{%
\@latex@error{Package 'pifont' not loaded}\@ehc
}%
\begingroup
\LTS@checknotes{title}{#1}{#2}%
\let\intitle\cptswtrue
\LTS@savenotes{title}{\ding{'111}}{\ding{'110}}{\ding{'112}}%
\def\nextnote{#2\sep}%
\cptfor#1\dofor{%
\expandafter\LTS@s@venotes\nextnote\LTS@nil{##1}%
}%
\endgroup
}
\cptnewvariables{count}[LTS@]{authornotenr}
% Eg, \authorref{a1,a2,a3}
\robust@def*\authorref#1{%
\LTS@gettitaureftotal{author}{#1}%
\unskip
\textsuperscript{%
\def\do##1{%
\edef\reserved@a{\LTS@gettitaunotenr{##1}}%
\ifnum\reserved@a>20\relax
\LTS@titaurefcnterr{Author}{20}%
\else
\reserved@a\iflastfox\else,\fi
\fi
\hss
}%
\cfoxloop{#1}\do
}%
}
% Eg, \authornotes[a1,a2]{xxx\sep yyy}
\robust@def*\authornotes{\LTS@testopt\LTS@authornotes{}}
\newletcs\authornote\authornotes
\robust@def*\LTS@authornotes[#1]#2{%
\begingroup
\LTS@checknotes{author}{#1}{#2}%
\cpt@swafalse
\let\intitle\cptswfalse
\LTS@savenotes{author}{}{}{}%
\def\nextnote{#2\sep}%
\cptfor#1\dofor{%
\expandafter\LTS@s@venotes\nextnote\LTS@nil{##1}%
}%
\endgroup
}
% New footnote numbering scheme:
\ltxkeys@definekeys[LTS]{ltsfn}[LTS@]{%
fnmarkwidth/1.4em;
fnmarknrmax/9/
\ifnum#1>9\relax
\def\LTS@fnmarkwidth{1.5em}%
\else
\ifnum#1>99\relax
\def\LTS@fnmarkwidth{2.5em}%
\fi
\fi;
}
\robust@def*\setfnnrwidth#1{%
\ltxkeys@launchkeys[LTS]{ltsfn}{#1}%
}
\cptnewvariables{count}[LTS@]{fncnta,fncntb}
\LTS@fncnta\@ne
\LTS@fncntb\z@pt
\robust@def*\LTS@fnsymbool#1{%
\begingroup
\let\s\ensuremath
\ifcase#1\or\ding{'110}\or\s\dagger\or\s\ddagger\or
\s\mathsection\or\s\mathparagraph\or\s{||}\or\ding{'111}\or
\ding{'122}\or\ding{'106}\or\ding{'121}\or\ding{'112}\or
\ding{'113}\or\ding{'114}\or\s\bullet\else
\@ctrerr\fi
\endgroup
}
\new@def*\lts@verbatimmatcmdhook{}
\robust@def*\ltsverbatimmatcmds#1{%
\ltsfiltermergecsv[,]\lts@verbatimmatcmdhook{#1}\nofilter
}
\ltsverbatimmatcmds{\iflacus,\dolacus,\then}
\robust@def*\ltsfootnote#1{%
\ifcsndefTF{ver@pifont.sty}{}{%
\@latex@error{Package 'pifont' not loaded}\@ehc
}%
\ifcsndefTF{ver@hyperref.sty}{}{%
\let\hyperlink\@secondoftwo
\let\hypertarget\@secondoftwo
}%
\global\advance\LTS@fncntb\@ne
\ifnum\LTS@fncntb>\LTS@fnmarknrmax\relax
\LTS@fncntb\@ne
\global\advance\LTS@fncnta\@ne
\fi
\unskip
\hyperlink{hy@ltsfn\number\LTS@fncnta\number\LTS@fncntb}{%
\textsuperscript{%
\LTS@fnsymbool{\number\LTS@fncnta}\number\LTS@fncntb
}%
}%
\begingroup
\def\thefootnote{%
\ltsprotectedtokens{\hypertarget}%
{hy@ltsfn\number\LTS@fncnta\number\LTS@fncntb}{%
\hb@xt@\LTS@fnmarkwidth{\LTS@fnsymbool
{\number\LTS@fncnta}\number\LTS@fncntb\hss}%
}%
}%
\cptexpandbracenext\cptletmanytocs\lts@verbatimmatcmdhook\relax
\footnotetext{#1}%
\endgroup
}
%% Creating and listing tags in document.
% \begin{document}
% \ltstags{Physics}% Ignored: no section
% \section{Einstein}
% Double tag entry in the same section takes only one:
% \ltstags{Physics, Mathematics, Physics}
% \section{D. E. Knuth}
% \ltstags{Computer Science, Art, Physics}
% \section{Riemann}
% \ltstags{Mathematics, Art}
% \noprinttags{Computer Science, Literature}
% \ltsprinttags
% \end{document}
\new@def*\lts@taghook{}
\robust@def*\ltstags#1{%
\iflacus#1\dolacus\else
\ifnum\c@section=\z@pt\else
\docommalist{#1}{%
\oifinsetTF{##1}\lts@taghook{%
\def\reserved@a####1##1####2####3\@nil{%
\xifinsetTF{\cptoxdetok{\expandafter{\the\c@section}}}%
{\detokenize{####2}}{}{%
\xdef\lts@taghook{####1;##1{####2{\the\c@section}};####3}%
}%
}%
\expandafter\reserved@a\lts@taghook\@nil
}{%
\xdef\lts@taghook{\cptliststack;\lts@taghook##1{{\the\c@section}}}%
}%
}%
\fi
\fi
}
\def\ltsignoretags#1{%
\cptfiltermergecsv\lts@tagignore{#1}\nofilter
}
\robust@def*\ltsprinttags{%
\ifx\protect\@typeset@protect
\def\csv@do##1{%
\defpass\LTS@tempa####1####{%
\defpass\LTS@tempa########1\@nil{%
\oifinset@sp@TF,{####1}\lts@tagignore{}{%
\def\LTS@tempb{########1}%
\cptnumbersort\LTS@tempb<%
\cptexpandbracenext\lts@formattagsecnos\LTS@tempb
\ltstagnameformat{####1}: %
See section\ifnum\LTS@tempc=\@ne\else s\fi~%
\def\do################1{%
\ifnum\indrisnr>\@ne
\iflastindris\@space and\@space\else,\@space\fi
\fi
################1%
}%
\indrisloop*\LTS@tempb\do
\ltstagseparator
}%
}%
}%
##1\@nil
}%
\csv@@parse*[;]\lts@taghook
\else
\@latex@error{Wrong location of '\string\ltsprinttags'}\@ehc
\fi
}
\robust@def*\lts@formattagsecnos#1{%
\begingroup
\@tempcnta\z@pt
\def\LTS@tempb{}%
\def\do##1##2\@nil{%
\ifblankTF{##1}{%
\do##2\@nil
}{%
\advance\@tempcnta\@ne
\edef\LTS@tempb{\cptliststack,\LTS@tempb##1}%
\ifnot@nil{##2}{\do##2\@nil}%
}%
}%
\do#1{\@nil}\@nil
\cptexpanded{\endgroup
\def\noexpand\LTS@tempb{\LTS@tempb}%
\def\noexpand\LTS@tempc{\number\@tempcnta}%
}%
}
\newletcsset{\ltstag=\ltstags,\noprinttags=\ltsignoretags,
\ltstagseparator=\newline,\ltstagnameformat=\textit}
%% Footnotes at end of paragraphs.
% \begin{ltsparnotes}
% xyz\ltsparnote{This is a paragraph note.} abc.
% \end{ltsparnotes}
\newletcs\ltsparnotesnosep\medbreak
\def\defineparnoteskeys{%
\ltxkeys@declarekeys*[PNT]{parnotes}[lts@pnt]{%
cmd/notecolor/black;
cmd/noteformat/\@firstofone;
cmd/notefont/\footnotesize;
cmd/markformat/\@firstofone;
cmd/vskip/\medskipamount;
cmd/interskip/.5em;
}%
}
\protected\def\declareparnotesformat#1{%
\ifdefTF\PNT@parnotes@notecolor{}\defineparnoteskeys
\ltxkeys@setkeys[PNT]{parnotes}{#1}%
}
\newcommand*\lts@pnthook{}
\newcount\lts@pntcnta
\robust@def*\ltsparnote#1{%
\ifdefTF\PNT@parnotes@notecolor{}{%
\LTS@err{You haven't called the command
\MsgBrk'\string\defineparnoteskeys'}\@ehc
}%
\ifxTF\protect\@typeset@protect{%
\global\advance\lts@pntcnta\@ne
\xdef\lts@pnthook{%
\expandcsonce\lts@pnthook
\begingroup
\noindent
\expandcsonce\lts@pntnotefont
\noexpand\color{\lts@pntnotecolor}%
\expandcsonce\lts@pntmarkformat{%
\noexpand\textsuperscript{\number\lts@pntcnta}%
}%
\expandcsonce\lts@pntnoteformat{\unexpanded{~#1}}%
\noexpand\hspace{\lts@pntinterskip}%
\endgroup
}%
\ifvmode\else\unskip\fi
\lts@pntmarkformat{\textsuperscript{\number\lts@pntcnta}}%
}{}%
}
\protected\def\lts@pntprint{%
\lts@pnthook
\global\lts@pntcnta\z@
\gdef\lts@pnthook{}%
\lts@pntorigpar
\vspace{\lts@pntvskip}%
\@afterindentfalse\@afterheading
}
\newenvironment{ltsparnotes}{%
\let\lts@pntorigpar\par
\def\par{%
\lts@pntorigpar
\ifxTF\lts@pnthook\@empty{}{%
\vspace{\lts@pntvskip}%
\parskip\z@
\lts@pntprint
}%
}%
}{%
\ifxTF\lts@pnthook\@empty{}{%
\lts@pntorigpar
\vspace{\lts@pntvskip}%
\parskip\z@
\lts@pntprint
}%
\lts@pntorigpar
% \par returns to its default definition outside the 'parnotes'
% environment.
\@ignoretrue
}
%% Define counters that have the property that they're printed only
% when/if they're called more than once in a run.
% Eg,
% \DefineDiscCounterKeys
% \DefineDiscCounters[numbertype=\arabic]{counterone,countertwo}
% \begin{document}
% \begin{enumerate}
% \item \showcounterone \showcounterone \showcounterone \resetcounterone
% \item \showcounterone[numbertype=\arabic]
% \showcounterone[numbertype=\alph]\showcounterone[numbertype=\Alph]%
% \resetcounterone
% \item \showcounterone \resetcounterone
% \end{enumerate}
\def\DefineDiscCounterKeys{%
\ltxkeys@declarekeys*[DC]{disccount}[disc@]{%
cmd/format/\@firstofone;
cmd/numbertype/\arabic/
\ifescapedTF{##1}{%
\xifinsetTF{,\detokenize{##1},}{%
,\detokenize{\arabic,\alph,\Alph},%
}{}{%
\@latex@error{Invalid number type '\detokenize{##1}'}\@ehc
}%
}{%
\@latex@error{Number type '\detokenize{##1}' must be escaped}\@ehc
};
}%
}
\newcounter{disccounter@aux}
\AtBeginDocument{%
\ifdefTF\disccounter@hook{}{\def\disccounter@hook{}}%
}
\newcommand*\discc@unter@aux{\the\numexpr\thedisccounter@aux-20000\relax}
\robust@def*\DefineDiscCounters{\cpt@testopt\disc@definecounters{}}
\robust@def*\disc@definecounters[#1]#2{%
\ifdefTF\DC@disccount@format{}{%
\LTS@err{You haven't called the command
\MsgBrk'\string\DefineDiscCounterKeys'}\@ehc
}%
\cptexpandargonce{\ltxkeys@setkeys[DC]{disccount}}{#1}%
\setcounter{disccounter@aux}{0}%
\docommalist{#2}{%
\newcounter{##1}%
\expandafter\newcommand\csname show##1\endcsname[1][]{%
\stepcounter{##1}%
\stepcounter{disccounter@aux}%
\cptexpandargonce{\ltxkeys@setkeys[DC]{disccount}}{####1}%
\xifinsetTF{,##1@reset@\discc@unter@aux,}%
{,\disccounter@hook,}{}{\disc@format{\disc@numbertype{##1}}}%
}%
\csn@def{reset##1}{%
\ifnum\csname c@##1\endcsname=\@ne
\xifinsetTF{,##1@reset@\discc@unter@aux,}{,\disccounter@hook,}{}{%
\xdef\disccounter@hook{%
\ifcsemptyTF\disccounter@hook{}{\disccounter@hook,}%
##1@reset@\discc@unter@aux
}%
}%
\fi
\setcounter{##1}{0}%
}%
}%
}
\AtEndDocument{%
\if@filesw
\immediate\write\@auxout{%
\gdef\string\disccounter@hook{\disccounter@hook}%
}%
\else
\@latex@warning@no@line{File '\jobname.aux' not open}%
\fi
}
\newcommand*\discbraced[1]{{\tt\string{#1\string}}}
\robust@def*\ltsgarbagetext{\cpt@testopt\lts@garbagetext{5}}
\robust@def*\lts@garbagetext[#1]{%
\begingroup
\chardef\nr1
\loop
\noindent Some sample text here. Some more sample text.
And more sample text.
\pushnumber\nr
\ifnum\nr<#1\relax
\repeat
\endgroup
}
\endinput