%% %% This is file `dtxdescribe.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% dtxdescribe.dtx (with options: `package') %% This is a generated file. %% Copyright 2016–2022 Brian Dunn %% %% 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 2005/12/01 or later. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{dtxdescribe} [2024/01/20 v1.09 Describe additional object types in source files.] \AtBeginDocument{ \IfPackageLoadedTF{makeidx}{}{ \IfPackageLoadedTF{splitidx}{}{ \RequirePackage{makeidx} \makeindex }} } \RequirePackage{etoolbox}[2011/01/03]% \RequirePackage{xparse} \RequirePackage{calc} \RequirePackage{xcolor} \definecolor{myurlcolor}{rgb}{0,0,.7} \definecolor{mylinkcolor}{rgb}{.7,0,0} \RequirePackage{caption} \RequirePackage{newfloat} \RequirePackage{fancyvrb} \RequirePackage{xstring} \AtBeginDocument{ \IfPackageLoadedTF{hyperref}{ \pdfstringdefDisableCommands{% \def\quad{ }% \def\\{ }% \def\pkg#1{#1}% \def\ctr#1{#1}% \def\bool#1{#1}% \def\optn#1{#1}% \def\env#1{#1}% \def\cs#1{\textbackslash#1}% \def\,{ }% \def\LuaLaTeX{LuaLaTeX}% \def\XeLaTeX{XeLaTeX}% \def\TeX{TeX}% \def\LaTeX{LaTeX}% \def\LaTeXe{LaTeX2e}% \def\LuaTeX{LuaTeX}% \def\LuaLaTeX{LuaLaTeX}% \def\XeTeX{XeTeX}% \def\AmS{AMS}% \def\Dash{ --- }% \def\dash{ -- }% \def\Slash{/}% \def\prog#1{\detokenize{#1}}% \def\progcode#1{#1}% \def\filenm#1{\detokenize{#1}}% \def\brand#1{#1}% \def\acro#1{#1}% \def\ODT{ODT}% \def\SVG{SVG}% \def\PNG{PNG}% \def\GIF{GIF}% \def\JPG{JPG}% \def\EPS{EPS}% \def\PDF{PDF}% \def\DVI{DVI}% \def\UTF{UTF}% \def\URL{URL}% \def\element#1{#1}% \def\attribute#1{#1}% \def\attrib#1{#1}% \def\HTML{HTML}% \def\HTMLfive{HTML5}% \def\CSS{CSS}% \def\CSSthree{CSS3}% \def\EPUB{EPUB}% \def\TOC{TOC}% \def\LOF{LOF}% \def\LOT{LOT}% } }% yes hyperref {% no hyperref \newcommand*{\hyperpage}[1]{#1} } } \RequirePackage{pict2e} \setlength{\unitlength}{1pt} \newcommand*{\warningsign}{% \begin{picture}(10,9) \put(4,1){\scriptsize!} \put(0,0){\line(500,866){5}} \put(10,0){\line(-500,866){5}} \put(0,0){\line(1,0){10}} \end{picture} } \begingroup \catcode`\|=0 \catcode`\\=12 |gdef|DTXD@backslash{\} |endgroup \IfPackageLoadedTF{doc}{ \IfPackageLoadedTF{hypdoc}{ \AddToHook{begindocument/before}[doc/hyperref]{% \ifdoc@hyperref \else \def\hdclindex#1#2{% \ifx\@nil#2\@nil\else\csname #2\expandafter\endcsname\fi% }% \fi } }{}% hypdoc loaded }{}% doc loaded \AtBeginDocument{ \IfPackageLoadedTF{doc}{ \IfPackageLoadedTF{hypdoc}{ \IfPackageLoadedTF{splitidx}{ \renewcommand*{\@wrsindex}[2][]{% \ifx\relax#1\relax% \if@splitidx% \@wrsindex[idx]{#2}% \else% \def\@tempa{#2}% \if@verbindex\@onelevel@sanitize\@tempa\fi% \@wrindex{\@tempa}% \fi% \else% \def\@tempa{#2\encapchar hdpindex{}}% dtxdescribe \csname index@#1@hook\endcsname% \expandafter\ifx\csname @@wrsindex\endcsname\relax% \@@@wrsindex{#1}{{\@tempa}{\thepage}}% \else% \def\@tempb{\@@wrsindex{#1}}% \expandafter\@tempb\@tempa||\\% \fi% \endgroup% \@esphack% \fi% } \def\HD@guesstoclevel#1{1} \preto\PrintChanges{\def\HD@guesstoclevel#1{0}} \newcounter{DTXD@indexnumber} \extendtheindex {% \addtocounter{DTXD@indexnumber}{1}% \def\HD@guesstoclevel##1{0}% } {} {} {} \def\HD@@@bfseries\hfil#1\hfil{% \ifx\\#1\\% \else% \raisebox{\baselineskip}[0pt]{% \kern-\HD@margin\relax% \pdfbookmark[\HD@toclevel@subindex]{#1}% dtxdescribe {HD.#1.\arabic{DTXD@indexnumber}}% dtxdescribe \kern\HD@margin\relax% }% \fi% \hfil#1\hfil% }% }{}% splitidx loaded }{}% hypdoc loaded }{}% doc loaded }% AtBeginDocument \IfPackageLoadedTF{doc}{ \newcommand*{\DTXD@gobble}{2} }{ \newcommand*{\DTXD@gobble}{0} } \setlength{\marginparsep}{1em} \setlength{\marginparpush}{.7ex} \setlength{\parindent}{0em} \setlength{\parskip}{2ex} \ifdef{\IndexMin} {\setlength{\IndexMin}{40ex}} {\newlength{\IndexMin}} \@ifclassloaded{ltxdoc}{}{ \def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} \def\cmd@to@cs#1#2{\char\number`#2\relax} \DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} \providecommand\marg[1]{% {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} \providecommand\oarg[1]{% {\ttfamily[}\meta{#1}{\ttfamily]}} \providecommand\parg[1]{% {\ttfamily(}\meta{#1}{\ttfamily)}} \providecommand\url{\texttt} } \AtBeginDocument{ \IfPackageLoadedTF{doc}{}{% not doc \newenvironment*{macro}[1]{% \PackageError{dtxdescribe} {The 'macro' environment is only\MessageBreak available when using the doc package\MessageBreak with a .dtx source file} {This environment only makes sense for .dtx source.} }{} \newenvironment*{environment}[1]{% \PackageError{dtxdescribe} {The 'environment' environment is only\MessageBreak available when using the doc package\MessageBreak with a .dtx source file} {This environment only makes sense for .dtx source.} }{} \def\MacroFont{\fontencoding\encodingdefault \fontfamily\ttdefault \fontseries\mddefault \fontshape\updefault \small}% \@ifundefined{actualchar}{\def\actualchar{@}}{} \@ifundefined{quotechar}{\def\quotechar{"}}{} \@ifundefined{levelchar}{\def\levelchar{!}}{} \@ifundefined{encapchar}{\def\encapchar{|}}{} \@ifundefined{verbatimchar}{\def\verbatimchar{+}}{} \setlength\marginparpush{0pt} \setlength\marginparwidth{8pc} \reversemarginpar \DeclareRobustCommand\meta[1]{% \ensuremath\langle \ifmmode \expandafter \nfss@text \fi {% \meta@font@select \edef\meta@hyphen@restore {\hyphenchar\the\font\the\hyphenchar\font}% \hyphenchar\font\m@ne \language\l@nohyphenation #1\/% \meta@hyphen@restore }\ensuremath\rangle } \def\meta@font@select{\itshape} }% not doc }% AtBeginDocument \providecommand*{\PrintEnvName}{} \renewcommand*{\PrintEnvName}[1] {\strut{\scriptsize{}Env}\quad\MacroFont#1\ } \newcommand*{\DTXD@printtype}[1] {\raggedleft\strut{\scriptsize\sffamily#1}\quad\MacroFont} \IfPackageLoadedTF{doc}{}{% not doc package \providecommand{\usage}{} \renewcommand{\usage}[1]{\textit{\hyperpage{#1}}} }% not doc package \let\DTXD@origwrindex\@wrindex \newcommand*{\DTXD@margintag}[3]{% \@ifundefined{@captype}{% not float? \leavevmode% \marginpar{% {% \hbadness=10000% \hfuzz=5em% \DTXD@printtype{% #3% margintag \ifblank{#1}{}{ [#1]}% category }% \texttt{#2}% name }% }% marginpar }{}% not float? } \newcommand*{\DTXD@index}[5]{% \@bsphack% \begingroup% \DTXD@origwrindex{% #2\actualchar{\protect\ttfamily#2} % name (#4)% index tag \ifblank{#1}{}{ [#1]}% \encapchar #5}% \begingroup% \DTXD@origwrindex{% #4:\levelchar% index tag \ifblank{#1}{}{[#1]:\levelchar}% #2\actualchar{\protect\ttfamily#2}% name \encapchar #5}% \ifblank{#1}{}{% category given \begingroup% \DTXD@origwrindex{% #1\actualchar[#1]:\levelchar% category #2\actualchar{\protect\ttfamily#2} % name (#4)% index tag \encapchar #5}% }% category given \@esphack% \ignorespaces% } \newcommand*{\DTXD@margintagindex}[5]{% \DTXD@margintag{#1}{#2}{#3}% \DTXD@index{#1}{#2}{#3}{#4}{#5}% } \begingroup\lccode`\|=`\\ \lowercase{\endgroup\def\removebs#1{\if#1|\else#1\fi}} \newcommand*{\DTXD@macroname}[1]{\expandafter\removebs\string#1} \newcommand*{\DTXD@verbatimcmd}[1]{% \string\verb\quotechar*\verbatimchar\string#1\verbatimchar% } \newcommand*{\DTXD@cmdmargintagindex}[5]{% \@bsphack% \@ifundefined{@captype}{% not float? \leavevmode% \marginpar{% {% \hbadness=10000% \hfuzz=5em% \DTXD@printtype{% #3% margin tag \ifblank{#1}{}{ [#1]}% category }% \cmd{#2}% name }% }% marginpar }{}% not float? \begingroup% \DTXD@origwrindex{% \ifblank{#1}{}{#1\actualchar[#1]:\levelchar}% category \DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2} % name (#4)% index tag \encapchar #5}% \begingroup% \DTXD@origwrindex{% #4:\levelchar% index tag \ifblank{#1}{}{[#1]:\levelchar}% category \DTXD@verbatimcmd{#2}% name \encapchar #5}% \@esphack% \ignorespaces% } \ExplSyntaxOn \IfPackageLoadedTF{doc}{ \newcommand*{\DTXD@category}{} \keys_define:nn {doc} { c .cs_set:Np = \DTXD@category, unknown .code:n = {% \renewcommand*{\DTXD@category}{\l_keys_key_str}% }, } }{}% doc loaded \ExplSyntaxOff \IfPackageLoadedTF{doc}{ \def\@doc@describe#1#2{% dtxdescribe \ifdoc@noprint\else% \@ifundefined{@captype}{% not float? dtxdescribe \marginpar{\raggedleft% \strut% \doc@providetarget% \@nameuse{PrintDescribe#1}{#2}% \ifdefvoid{\DTXD@category}{}{% dtxdescribe \space{\footnotesize[\mbox{\DTXD@category}]}% }% }% }{}% \fi% \ifdoc@noindex\else% \@nameuse{Special#1Index}{#2}% \fi% \@esphack% \endgroup% \ignorespaces% } }{}% doc loaded \IfPackageLoadedTF{doc}{% \def\@NewDocElement#1#2#3{% \doc@macrolikefalse% \doc@topleveltrue% \def\doc@idxtype{#3}% \def\doc@idxgroup{#3s}% \let\doc@printtype\@empty% \csname keys_set:nn\endcsname{doc}{#1}% \ifx\doc@printtype\@empty% \@temptokena{}% \else% \@temptokena\expandafter{\expandafter% \textnormal\expandafter{\expandafter% \space\expandafter% (\doc@printtype)}}% \fi% \@nameedef{Print#2Name}##1{% {\noexpand\MacroFont% \ifdoc@macrolike% \noexpand\string##1% dtxdescribe \else% \noexpand\detokenize\expandafter{##1}% dtxdescribe \fi% \the\@temptokena% }}% \expandafter\let\csname PrintDescribe#2\expandafter\endcsname% \csname Print#2Name\endcsname% \edef\doc@expr{% \ifdoc@macrolike% \noexpand\doc@createspecialmacrolikeindexes% \else% \noexpand\doc@createspecialindexes% \fi% {#2}% }% \expandafter\expandafter\expandafter% \doc@expr% \expandafter\expandafter\expandafter% {\expandafter\doc@idxtype\expandafter}\expandafter% {\doc@idxgroup}% \doc@createdescribe{#2}% \ifdoc@macrolike% \doc@createenv{TT}{#2}{#3}% \else% \doc@createenv{TF}{#2}{#3}% \fi } \newcommand*{\DTXDbreak}{\space\penalty200} \newcommand*{\DTXD@printobjectname}[2]{% #1% \actualchar% \string\verb% % \quotechar% *% \verbatimchar% #2% \verbatimchar% } \newcommand*{\DTXD@maybecategory}{% \ifdefvoid{\DTXD@category}% {}% {% \string\DTXDbreak% [% \string\verb% \noexpand\quotechar% *% \verbatimchar\DTXD@category\verbatimchar% ]}% } \newcommand*{\DTXD@categorylevelname} \newcommand*{\DTXD@maybecategorylevel}[1]{% \ifdefvoid{\DTXD@categorylevelname}% {}% {% \index{% \DTXD@categorylevelname% \noexpand\actualchar% \string\verb% % to fool emacs highlighting \noexpand\quotechar% *% \noexpand\verbatimchar% [\DTXD@category]:% \verbatimchar% \noexpand\levelchar% \noexpand\DTXD@printobjectname{\DTXD@gtempa@nobackslash}{\@gtempa}% \ifblank{#1}{}{\string\DTXDbreak (#1)}% \noexpand\doc@handleencap{usage}% }% index }% } \newcommand*{\DTXD@findcategorylevelname}{% \edef\DTXD@categorylevelname{\DTXD@category}% \edef\DTXD@categorylevelname{\detokenize\expandafter{\DTXD@categorylevelname}}% \IfBeginWith{\DTXD@categorylevelname}{\DTXD@backslash}% {\StrGobbleLeft{\DTXD@categorylevelname}{1}[\DTXD@categorylevelname]}% {}% } \newcommand*{\DTXD@gtempa@nobackslash}{} \newcommand*{\DTXD@findgtempa}[1]{% \edef\@gtempa{\detokenize{#1}}% \IfEndWith{\@gtempa}{ }{\StrGobbleRight{\@gtempa}{1}[\@gtempa]}{}% \IfBeginWith{\@gtempa}{\DTXD@backslash}% {\StrGobbleLeft{\@gtempa}{1}[\DTXD@gtempa@nobackslash]}% {\edef\DTXD@gtempa@nobackslash{\@gtempa}}% } \def\doc@createspecialindexes#1#2#3{% \@temptokena{\space (#2)}% \@temptokenb{#3:}% \@nameedef{SpecialMain#1Index}##1{% \noexpand\DTXD@findgtempa{##1}% \noexpand\@bsphack% \noexpand\DTXD@findcategorylevelname% dtxdescribe \ifdoc@toplevel% \noexpand\special@index{% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \ifx\@nil#2\@nil\else \the\@temptokena \fi% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\encapchar main% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \ifx\@nil#3\@nil\else% \noexpand\special@index{% \the\@temptokenb\noexpand\levelchar% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\encapchar main% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \noexpand\@esphack}% \@nameedef{Special#1Index}##1{% \noexpand\DTXD@findgtempa{##1}% \noexpand\@bsphack% \noexpand\DTXD@findcategorylevelname% dtxdescribe \ifdoc@toplevel% \noexpand\doc@providetarget% \noexpand\index{% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \ifx\@nil#2\@nil\else \the\@temptokena \fi% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\doc@handleencap{usage}% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \ifx\@nil#3\@nil\else% \noexpand\index{% \the\@temptokenb\noexpand\levelchar% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\doc@handleencap{usage}% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \noexpand\@esphack}} \def\doc@createspecialmacrolikeindexes#1#2#3{% \@temptokena{\space (#2)}% \@temptokenb{#3:}% \@nameedef{Code#1Index}##1##2{% \noexpand\DTXD@findgtempa{##2}% \noexpand\@bsphack% \noexpand\DTXD@findcategorylevelname% dtxdescribe \noexpand\ifdoc@noindex\noexpand\else% \ifdoc@toplevel% \noexpand\special@index{% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \ifx\@nil#2\@nil\else \the\@temptokena \fi% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\encapchar ##1% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \ifx\@nil#3\@nil\else% \noexpand\special@index{% \the\@temptokenb\noexpand\levelchar% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\encapchar ##1% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \noexpand\fi% \noexpand\@esphack}% \@nameedef{SpecialMain#1Index}##1{% \expandafter\noexpand\csname Code#1Index\endcsname% {main}{##1}}% \@nameedef{Special#1Index}##1{% \noexpand\DTXD@findgtempa{##1}% \noexpand\@bsphack% \noexpand\DTXD@findcategorylevelname% dtxdescribe \noexpand\ifdoc@noindex\noexpand\else% \ifdoc@toplevel% \noexpand\doc@providetarget% \noexpand\index{% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \ifx\@nil#2\@nil\else \the\@temptokena \fi% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\doc@handleencap{usage}% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \ifx\@nil#3\@nil\else% \noexpand\index{% \the\@temptokenb\noexpand\levelchar% \noexpand\DTXD@printobjectname% dtxdescribe {\noexpand\DTXD@gtempa@nobackslash}% {\noexpand\@gtempa}% \noexpand\DTXD@maybecategory% dtxdescribe \noexpand\doc@handleencap{usage}% }% \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe \fi% \noexpand\fi% \noexpand\@esphack}} }{}% doc loaded \IfPackageLoadedTF{doc}{}{% not doc \providecommand*{\DescribeMacro}{} \renewcommand*{\DescribeMacro}[2][]{% \@bsphack% \@ifundefined{@captype}{% not float? \leavevmode% \marginpar{% {% \hbadness=10000% \hfuzz=5em% \raggedleft% \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% category \cmd{#2}% name }% }% marginpar }{}% not float? \begingroup% \DTXD@origwrindex{% \DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}% name \ifblank{#1}{}{\levelchar[#1]}% category \encapchar usage% }% \ifblank{#1}% {}% no category {% category given \begingroup% \DTXD@origwrindex{% #1\actualchar[#1]:\levelchar% \DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}% \encapchar usage}% }% category given \@esphack% \ignorespaces% } }% not doc \IfPackageLoadedTF{doc}{}{% not doc \providecommand*{\DescribeEnv}{} \renewcommand*{\DescribeEnv}[2][] {\DTXD@margintagindex{#1}{#2}{Env}{environment}{usage}} }% not doc \IfPackageLoadedTF{doc}{}{% not doc \newcommand*{\DTXD@filename}{} \newcommand*{\DTXD@filemarginparindex}[5]{% \renewcommand{\DTXD@filename}{\detokenize{#2}}% \StrSubstitute{\DTXD@filename}{\detokenize{_}}{\detokenize{\_}}[\DTXD@filename]% \DTXD@margintag{#1}{#2}{#3}% \DTXD@index{#1}{\DTXD@filename}{#3}{#4}{#5}% \endgroup% \ignorespaces% } }% not doc \IfPackageLoadedTF{doc}{% doc \RenewDocElement[macrolike = true , idxtype = , idxgroup = , printtype = ]{Macro}{macro} \RenewDocElement[macrolike = false , idxtype = env. , idxgroup = environments , printtype = \textit{env.} ]{Env}{environment} }{}% doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=file, idxgroup=Files, printtype=\textit{file} ]{File}{file} }{% not doc \newcommand*{\DTXD@DescribeFile}[2][]{% \DTXD@filemarginparindex{#1}{#2}{File}{file}{usage}% } \newcommand*{\DescribeFile}{% \begingroup\catcode`\_=12 \DTXD@DescribeFile% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=program, idxgroup=Programs, printtype=\textit{Prog} ]{Program}{program} }{% not doc \newcommand*{\DTXD@DescribeProgram}[2][]{% \DTXD@filemarginparindex{#1}{#2}{Prog}{program}{usage}% } \newcommand*{\DescribeProgram}{% \begingroup\catcode`\_=12 \DTXD@DescribeProgram% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=command, idxgroup=Commands, printtype=\textit{Cmd} ]{Command}{command} }{% not doc \newcommand*{\DTXD@DescribeCommand}[2][]{% \DTXD@filemarginparindex{#1}{#2}{Cmd}{command}{usage}% } \newcommand*{\DescribeCommand}{% \begingroup\catcode`\_=12 \DTXD@DescribeCommand% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=package, idxgroup=Packages, printtype=\textit{Pkg} ]{Package}{package} }{% not doc \newcommand*{\DTXD@DescribePackage}[2][]{% \DTXD@filemarginparindex{#1}{#2}{Pkg}{package}{usage}% } \newcommand*{\DescribePackage}{% \begingroup\catcode`\_=12 \DTXD@DescribePackage% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=class, idxgroup=Classes, printtype=\textit{Cls} ]{Class}{class} }{% not doc \newcommand*{\DTXD@DescribeClass}[2][]{% \DTXD@filemarginparindex{#1}{#2}{Cls}{class}{usage}% } \newcommand*{\DescribeClass}{% \begingroup\catcode`\_=12 \DTXD@DescribeClass% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=option, idxgroup=Options, printtype=\textit{Opt} ]{Option}{option} }{% not doc \newcommand*{\DescribeOption}[2][] {\DTXD@margintagindex{#1}{#2}{Opt}{option}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=argument, idxgroup=Arguments, printtype=\textit{Arg} ]{Argument}{argument} }{% not doc \newcommand*{\DescribeArgument}[2][] {\DTXD@margintagindex{#1}{#2}{Arg}{argument}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=boolean, idxgroup=Booleans, printtype=\textit{bool} ]{Boolean}{boolenv} }{% not doc \newcommand*{\DescribeBoolean}[2][] {\DTXD@margintagindex{#1}{#2}{Bool}{boolean}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=true, toplevel=true, idxtype=length, idxgroup=Lengths, printtype=\textit{Len} ]{Length}{length} }{% not doc \newcommand*{\DescribeLength}[2][] {\DTXD@cmdmargintagindex{#1}{#2}{Len}{length}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=counter, idxgroup=Counters, printtype=\textit{Ctr} ]{Counter}{counter} }{% not doc \newcommand*{\DescribeCounter}[2][] {\DTXD@margintagindex{#1}{#2}{Ctr}{counter}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=true, toplevel=true, idxtype=hook, idxgroup=Hooks, printtype=\textit{Hook} ]{Hook}{hook} }{% not doc \newcommand*{\DescribeHook}[2][] {\DTXD@margintagindex{#1}{#2}{Hook}{hook}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=socket, idxgroup=Sockets, printtype=\textit{Socket} ]{Socket}{socket} }{% not doc \newcommand*{\DescribeSocket}[2][] {\DTXD@margintagindex{#1}{#2}{Socket}{socket}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=plug, idxgroup=Plugs, printtype=\textit{Plug} ]{Plug}{plug} }{% not doc \newcommand*{\DescribePlug}[2][] {\DTXD@margintagindex{#1}{#2}{Plug}{plug}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=key, idxgroup=Keys, printtype=\textit{Key} ]{Key}{key} }{% not doc \newcommand*{\DescribeKey}[2][] {\DTXD@margintagindex{#1}{#2}{Key}{key}{usage}} }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=object, idxgroup=Objects, printtype=, ]{Object}{object} }{% not doc \newcommand*{\DescribeObject}[2][]{% \@ifundefined{@captype}{% not float? \@bsphack% \leavevmode% \marginpar{% \hbadness=10000% \hfuzz=5em% \raggedleft% \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }% \texttt{#2}% }% }{}% not float? \ifblank{#1}% {% \begingroup% \DTXD@origwrindex{% #2\actualchar{\protect\ttfamily#2}% \encapchar usage% }% }% {% \begingroup% \DTXD@origwrindex{% #2\actualchar{\protect\ttfamily#2} [#1]% \encapchar usage% }% \begingroup% \DTXD@origwrindex{% #1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}% \encapchar usage% }% }% \@esphack% \ignorespaces% } }% not doc \IfPackageLoadedTF{doc}{% doc \NewDocElement[ macrolike=false, toplevel=true, idxtype=other, idxgroup=Other, printtype=, ]{Other}{other} }{% not doc \newcommand*{\DescribeOther}[2][]{% \@ifundefined{@captype}{% not float? \@bsphack% \leavevmode% \marginpar{% \hbadness=10000% \hfuzz=5em% \raggedleft% \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }% #2% }% }{}% not float? \ifblank{#1}% {% \begingroup% \DTXD@origwrindex{#2\encapchar usage}% }% {% \begingroup% \DTXD@origwrindex{#2 [#1]\encapchar usage}% \begingroup% \DTXD@origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}% }% \@esphack% \ignorespaces% } }% not doc \newcommand*{\DescribeDefaultcolor}{green!50!black} \newcommand{\DescribeDefault}[1]{% \margintag{% \footnotesize% \textcolor{\DescribeDefaultcolor}{% Default: \texttt{#1}% }% }% } \newcommand{\ItemDescribeMacro}[2][]{% \item[\cmd{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeMacro[#1]{#2}% } \newcommand{\ItemDescribeEnv}[2][]{% \item[\env{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeEnv[#1]{#2}% } \newcommand{\ItemDescribeArgument}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeArgument[#1]{#2}% } \newcommand{\ItemDescribeBoolean}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeBoolean[#1]{#2}% } \newcommand{\ItemDescribeLength}[2][]{% \item[\cmd{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeLength[#1]{#2}% } \newcommand{\ItemDescribeCounter}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeCounter[#1]{#2}% } \newcommand{\ItemDescribeHook}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeHook[#1]{#2}% } \newcommand{\ItemDescribeSocket}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeSocket[#1]{#2}% } \newcommand{\ItemDescribePlug}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribePlug[#1]{#2}% } \newcommand{\ItemDescribeKey}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeKey[#1]{#2}% } \newcommand{\DTXD@ItemDescribePackage}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribePackage[#1]{#2}% \endgroup% } \newcommand{\ItemDescribePackage}{% \begingroup\catcode`\_=12 \DTXD@ItemDescribePackage% } \newcommand{\DTXD@ItemDescribeClass}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeClass[#1]{#2}% \endgroup% } \newcommand{\ItemDescribeClass}{% \begingroup\catcode`\_=12 \DTXD@ItemDescribeClass% } \newcommand{\ItemDescribeOption}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeOption[#1]{#2}% } \newcommand{\DTXD@ItemDescribeFile}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeFile[#1]{#2}% \endgroup% } \newcommand{\ItemDescribeFile}{% \begingroup\catcode`\_=12 \DTXD@ItemDescribeFile% } \newcommand{\DTXD@ItemDescribeProgram}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeProgram[#1]{#2}% \endgroup% } \newcommand{\ItemDescribeProgram}{% \begingroup\catcode`\_=12 \DTXD@ItemDescribeProgram% } \newcommand{\DTXD@ItemDescribeCommand}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeCommand[#1]{#2}% \endgroup% } \newcommand{\ItemDescribeCommand}{% \begingroup\catcode`\_=12 \DTXD@ItemDescribeCommand% } \newcommand{\ItemDescribeObject}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeObject[#1]{#2}% } \newcommand{\ItemDescribeOther}[2][]{% \item[\texttt{#2}:]% \setlength{\parskip}{1.5ex}% \DescribeOther[#1]{#2}% } \newcommand*{\margintagcolor}{blue!70!black} \newcommand{\margintag}[1]{% \@ifundefined{@captype}{% not float? \marginpar{\raggedleft\textcolor{\margintagcolor}{#1}}% \ignorespaces% }{}% not float? } \newcommand*{\watchoutcolor}{red!50!black} \newcommand{\watchout}[1][]{% \@ifundefined{@captype}{% not float? \marginpar{% \raggedleft% \textcolor{\watchoutcolor}{\warningsign\normalsize\quad#1}% }% \ignorespaces% }{}% not float? } \NewDocumentCommand{\shownesting}{s O{1} m m}{ \IfBooleanF{#1}{ \par\smallskip } \fbox{ \begin{minipage}{#2\linewidth-2em} \hbadness=10000\relax% #3\par\smallskip \hspace{1em} \begin{minipage}{\linewidth-1.5em} #4 \end{minipage} \end{minipage} } } \definecolor{DTXD@examplerulecolor}{rgb}{.9,.9,.9} \newcommand*{\dtxexamplecodename}{Code:} \newcommand*{\dtxexampleresultname}{Result:} \NewDocumentEnvironment{dtxexample}{s +O{} m} {% start dtxexample \VerbatimOut[gobble=\DTXD@gobble,tabsize=4]{dtxexample_cut.tex}% }% start dtxexample {% end dtxexample \endVerbatimOut \par \addvspace{\bigskipamount} \IfBooleanTF{#1}% {% minipage \minipage{\linewidth}% \captionsetup{type=dtxexamplefloat}% }% {% float \begin{dtxexamplefloat}% }% \hrule\medskip \caption{#3} \textcolor{DTXD@examplerulecolor}{\smallskip\hrule} \smallskip {\scriptsize\itshape\dtxexamplecodename} \VerbatimInput[tabsize=4]{dtxexample_cut.tex} \unskip \textcolor{DTXD@examplerulecolor}{\hrule} \smallskip {\scriptsize\itshape\dtxexampleresultname} \ifstrempty{#2} {} {{\itshape\small #2}} \IfBooleanTF{#1}% {\endminipage}% {\end{dtxexamplefloat}}% } % end dtxexample \AfterEndEnvironment{dtxexample} {% \par\unskip\input{dtxexample_cut.tex}% \medskip\hrule% } \DeclareFloatingEnvironment[ fileext=lox, listname={List of Examples}, name=Example, placement=hbp ]{dtxexamplefloat} \captionsetup*[dtxexamplefloat]{ format=hang, font=bf, justification=raggedright, singlelinecheck=false, skip=0pt, position=top, } \AtBeginDocument{ \ifdef{\crefname}{ \crefname{dtxexamplefloat}{example}{examples} }{} } \newenvironment{noindmacro}[1] { \setlength{\parskip}{\marginparpush} \leavevmode\par\DTXD@margintag{}{\cmd{#1}}{} } {\unskip} \newenvironment{noindenvironment}[1] { \setlength{\parskip}{\marginparpush} \leavevmode\par\DTXD@margintag{}{#1}{Env} } {\unskip} \newcommand*{\fquad}{\hspace*{1em}} \newcommand*{\fqquad}{\hspace*{2em}} \newcommand*{\fqqquad}{\hspace*{3em}} \DefineVerbatimEnvironment{sourceverb}{Verbatim} {gobble=\DTXD@gobble,tabsize=4,xleftmargin=2em} \BeforeBeginEnvironment{sourceverb}{\vspace*{-.5\parskip}} \DefineVerbatimEnvironment{fsourceverb}{Verbatim} {gobble=\DTXD@gobble,tabsize=4,xleftmargin=2em,frame=lines} \BeforeBeginEnvironment{fsourceverb}{\vspace*{-.5\parskip}} \newenvironment{sourcedisplay} { \leavevmode \par \fqquad\minipage{\linewidth-4em} \ttfamily } {% \endminipage \par } \newenvironment{UIdisplay} { \leavevmode \par \fqquad\minipage{\linewidth-4em} \sffamily\bfseries } { \endminipage \par } \newcommand*{\userentryname}{Enter~$\Rightarrow$} \newcommand{\userentry}[1]{% \par \fqquad% \begin{minipage}{\linewidth-2em} {\footnotesize \userentryname}\quad\cmds{#1} \end{minipage} \par } \newenvironment{docsidebar}[1][] {% \quote\unskip\medskip \setlength{\parskip}{1.5ex}% \ifblank{#1}{}{\textit{#1}\newline}% \rule[.5\bigskipamount]{\linewidth}{.4pt}% \newline% } {% \leavevmode\par \rule[\bigskipamount]{\linewidth}{.4pt} \endquote\unskip } \providerobustcmd*{\pkg}[1]{\mbox{\textsf{#1}}} \providerobustcmd*{\cs}[1]{\texttt{\char`\\#1}} \providerobustcmd*{\env}[1]{\mbox{\texttt{#1}}} \providecommand\marg[1]{% {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} \providecommand\oarg[1]{% {\ttfamily[}\meta{#1}{\ttfamily]}} \providecommand\parg[1]{% {\ttfamily(}\meta{#1}{\ttfamily)}} \providerobustcmd*{\ctr}[1]{\mbox{\texttt{#1}}} \providerobustcmd*{\bool}[1]{\mbox{\texttt{#1}}} \providerobustcmd*{\optn}[1]{\mbox{\texttt{#1}}} \providerobustcmd*{\TOC}{\acro{TOC}} \providerobustcmd*{\LOF}{\acro{LOF}} \providerobustcmd*{\LOT}{\acro{LOT}} \providerobustcmd*{\cmds}[1]{\mbox{\textbf{\texttt{#1}}}} \providerobustcmd*{\progcode}[1]{\mbox{\texttt{#1}}} \newcommand*{\DTXD@prog}[1]{% \mbox{\textsf{\textsl{\detokenize{#1}}}}% \endgroup% } \providerobustcmd*{\prog}{% \begingroup% \catcode`\_=12% \DTXD@prog% } \newcommand*{\DTXD@filenm}[1]{% \mbox{\texttt{\detokenize{#1}}}% \endgroup% } \providerobustcmd*{\filenm}{% \begingroup% \catcode`\_=12% \DTXD@filenm% } \providerobustcmd*{\UI}[1]{\textbf{\textsf{#1}}} \providerobustcmd*{\ODT}{\acro{ODT}} \providerobustcmd*{\SVG}{\acro{SVG}} \providerobustcmd*{\PNG}{\acro{PNG}} \providerobustcmd*{\GIF}{\acro{GIF}} \providerobustcmd*{\JPG}{\acro{JPG}} \providerobustcmd*{\EPS}{\acro{EPS}} \providerobustcmd*{\PDF}{\acro{PDF}} \providerobustcmd*{\DVI}{\acro{DVI}} \providerobustcmd*{\UTF}{\acro{UTF}} \providerobustcmd*{\URL}{\acro{URL}} \providerobustcmd*{\element}[1]{\texttt{<#1>}} \providerobustcmd*{\attrib}[1]{\mbox{\texttt{#1}}} \providerobustcmd*{\attribute}[1]{\mbox{\texttt{#1}}} \providerobustcmd*{\HTML}{\acro{HTML}} \providerobustcmd*{\HTMLfive}{\HTML\textsc{5}} \providerobustcmd*{\CSS}{\acro{CSS}} \providerobustcmd*{\CSSthree}{\CSS\textsc{3}} \providerobustcmd*{\EPUB}{\acro{EPUB}} \providerobustcmd*{\TikZ}{Ti\emph{k}Z} \providerobustcmd*{\CTAN}{\acro{CTAN}} \providerobustcmd*{\TDS}{\acro{TDS}} \providerobustcmd*{\MathML}{Math\acro{ML}} \providerobustcmd*{\MathJax}{\brand{MathJax}} \providerobustcmd*{\brand}[1]{\textsc{#1}} \providerobustcmd*{\acro}[1]{\textsc{\lowercase{#1}}} \providerobustcmd*{\supregistered}{\textsuperscript{\textregistered}} \providerobustcmd*{\dviTeX}{\mbox{\DVI\,\TeX}} \providerobustcmd*{\dviLaTeX}{\mbox{\DVI\,\LaTeX}} \providerobustcmd*{\pdfTeX}{\mbox{\PDF\,\TeX}} \providerobustcmd*{\pdfLaTeX}{\mbox{\PDF\,\LaTeX}} \providerobustcmd*{\LuaTeX}{\mbox{Lua\TeX}} \providerobustcmd*{\LuaLaTeX}{\mbox{Lua\LaTeX}} \providerobustcmd*{\XeTeXrevE} {\hspace{-.1667em}\raisebox{-.5ex}{E}\hspace{-.125em}} \AtBeginDocument{ \IfPackageLoadedTF{graphics}{ \renewrobustcmd*{\XeTeXrevE} {\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}\hspace{-.125em}} }{} } \providerobustcmd*{\XeTeX}{\mbox{X\XeTeXrevE\TeX}} \providerobustcmd*{\XeLaTeX}{\mbox{X\XeTeXrevE\LaTeX}} \providerobustcmd*{\AmS}{% \leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex% \hbox{$\mathcal M$}\kern-.2em\mathcal S$}% } \providerobustcmd*{\LyX}{\textsf{LyX}} \providerobustcmd*{\BibTeX}{\mbox{B\textsc{ib}\TeX}} \providerobustcmd*{\MakeIndex}{\prog{MakeIndex}} \providerobustcmd*{\ConTeXt}{\mbox{Con\TeX{}t}} \providerobustcmd*{\MiKTeX}{\mbox{MiK\TeX}} \DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax} \def\endash{–} \def\emdash{—} \newcommand{\thinbrspace}{% \hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}% } \newcommand{\thinthinbrspace}{% \hspace{.08333em}\penalty\exhyphenpenalty\hspace{0pt}% } \newrobustcmd{\Dash}{\unskip\thinspace\emdash\thinbrspace} \newrobustcmd{\dash}{\unskip\thinspace\endash\thinbrspace} \newrobustcmd{\Slash}{\unskip\hspace{.08333em}/\thinthinbrspace} \endinput %% %% End of file `dtxdescribe.sty'.