% This package is provided 'as is' in the event that someone % wants to compile the documentation that comes with my packages. % It is not intended for any other purpose, although you may freely % copy the code here to another file and modify it for your own purposes. % There's no guarantee that it will work with other packages. % % Copyright 2022-2024 Nicola Talbot % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license of (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{nlctuserguide}[2024/11/09 v1.11 (NLCT)] \newcommand{\nlctdoc@loadxr}{} \DeclareOption{xr}{\renewcommand{\nlctdoc@loadxr}{\RequirePackage{xr-hyper}}} \newcommand{\nlct@ns@ref@cs}{\vref} \newcommand{\nlctnovref}{\renewcommand{\nlct@ns@ref@cs}{\ref}} \newcommand{\nlctusevref}{\renewcommand{\nlct@ns@ref@cs}{\vref}} \DeclareOption{vref}{\nlctusevref} \DeclareOption{novref}{\nlctnovref} \newif\ifnlctdoc@symgroup \nlctdoc@symgrouptrue \DeclareOption{atsymgroup}{\nlctdoc@symgrouptrue} \DeclareOption{noatsymgroup}{\nlctdoc@symgroupfalse} \newcommand{\nlctdocatnum}[1]{% \nlctdoc@symgrouptrue\renewcommand{\@nlctdoc@atnum}{#1}% \ifluatex \renewcommand{\bibglsothergroup}{\nlctdocsymbolgrouplabel}% \renewcommand{\bibglsothergrouptitle}{\nlctdocsymbolgrouptitle}% \fi } \newcommand{\@nlctdoc@atnum}{630000} \DeclareOption{deephierarchy}{\setcounter{secnumdepth}{5}} \newcommand{\nlct@definesymbols}{% \nlct@definefontsymbols } \newcommand{\nlct@definefontsymbols}{% % requires stix or boisk \newrobustcmd{\tabsym}{% \BeginAccSupp{method=hex,unicode,ActualText=21B9}% \ensuremath{\barleftarrowrightarrowbar}% \EndAccSupp{}% } % requires stix \newrobustcmd{\upsym}{% \BeginAccSupp{method=hex,unicode,ActualText=2B71}% \ensuremath{\baruparrow}% \EndAccSupp{}% } } \newcommand{\nlct@definetikzsymbols}{% \RequirePackage{tikz}% \usetikzlibrary{arrows.meta}% \newsavebox\tabsbox \sbox\tabsbox{% \resizebox{!}{8pt}{% \begin{tikzpicture}[thick] \draw[arrows={Bar[width=8pt]Triangle[width=6pt,length=5pt]-}] (0,0) -- (14pt,0); \draw[arrows={-Triangle[width=6pt,length=5pt]Bar[width=8pt]}] (0,-7pt) -- (14pt,-7pt); \end{tikzpicture}% }% } \newrobustcmd{\tabsym}{% \BeginAccSupp{method=hex,unicode,ActualText=21B9}% \thinspace \usebox\tabsbox \thinspace \EndAccSupp{}% }% \newrobustcmd{\upsym}{% \BeginAccSupp{method=hex,unicode,ActualText=2B71}% \begin{tikzpicture} \draw[arrows={-To[width=6pt,length=5pt]Bar[width=8pt]}] (0,0) -- (0,2ex); \end{tikzpicture} \EndAccSupp{}% }% } \DeclareOption{fontsymbols}{% \renewcommand{\nlct@definesymbols}{% \nlct@definefontsymbols }% } \DeclareOption{tikzsymbols}{% \renewcommand{\nlct@definesymbols}{% \nlct@definetikzsymbols }% } \newcommand{\nlct@indexmarks}{} \newcommand{\nlctpostindexname}[1]{} \DeclareOption{noindexmarks}{\renewcommand{\nlct@indexmarks}{}} \DeclareOption{indexmarks}{% \renewcommand{\nlct@indexmarks}{% \@ifpackageloaded{scrbase}% {% \RequirePackage{scrlayer-scrpage}% \lofoot[\nlctindexfirstmark]{\nlctindexfirstmark}% \lofoot[\nlctindexfirstmark]{\nlctindexfirstmark}% \refoot[\nlctindexlastmark]{\nlctindexlastmark}% \rofoot[\nlctindexlastmark]{\nlctindexlastmark}% \renewcommand{\nlctpostindexname}[1]{\glsxtrbookindexmarkentry{##1}}% }% {}% }% } % default options: \PassOptionsToPackage{ record=nameref, indexcounter, floats, symbols, accsupp, nosuper, stylemods={mcols,bookindex,topic,longextra} }{glossaries-extra} \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries-extra}} \ProcessOptions \RequirePackage{iftex} \RequirePackage{etoolbox} \nlct@indexmarks \nlct@definesymbols \newcommand{\nlct@ifattachsupported}[2]{#2} \newcommand{\nlct@doifattachsupported}[1]{\nlct@ifattachsupported{#1}{}} \ifPDFTeX \RequirePackage[T1]{fontenc} \renewcommand{\nlct@ifattachsupported}[2]{#1} % \strong is provided by fontspec \providecommand*{\strong}[1]{\textbf{#1}} \else \RequirePackage{fontspec} % v1.11 changed font from Linux Libertine O to Liberation \setmainfont{FreeSerif} \setsansfont{FreeSans}[Scale=.9] \setmonofont{FreeMono}[Scale=1.1] \ifluatex \newcommand{\nlctdocsymbolgrouplabel}[3]{% #3\directlua{if '#2'=='\@nlctdoc@atnum' then tex.print("@") else tex.print("glssymbols") end}} \newcommand{\nlctdocsymbolgrouptitle}[3]{% \directlua{if '#2'=='\@nlctdoc@atnum' then tex.print("@") else tex.print("\\glssymbolsgroupname") end}} \ifnlctdoc@symgroup \newcommand{\bibglsothergroup}{\nlctdocsymbolgrouplabel} \newcommand{\bibglsothergrouptitle}{\nlctdocsymbolgrouptitle} \else \newcommand{\bibglsothergroup}[3]{glssymbols} \newcommand{\bibglsothergrouptitle}[3]{\glssymbolsgroupname} \fi \renewcommand{\nlct@ifattachsupported}[2]{#1} \RequirePackage{luatex85}% need \pdfxform for attachfile \fi \fi \RequirePackage{fontawesome} \RequirePackage{twemojis} \RequirePackage{pifont} \RequirePackage{amsfonts} \RequirePackage{textcomp} \RequirePackage{array} \RequirePackage{upquote} \RequirePackage{etoolbox} \RequirePackage{hologo} \RequirePackage{varioref} \RequirePackage{xcolor} \newcommand*{\nlct@doifkoma}[1]{\nlct@ifkoma{#1}{}} \newcommand*{\nlct@ifkoma}[2]{#2} \@ifclassloaded{scrreprt}{\let\nlct@ifkoma\@firstoftwo} { \@ifclassloaded{scrartcl}{\let\nlct@ifkoma\@firstoftwo} {\@ifclassloaded{scrbook}{\let\nlct@ifkoma\@firstoftwo}{}} } \nlct@doifkoma{% \RequirePackage{scrhack} \ifnum\c@secnumdepth>3 \RedeclareSectionCommand[beforeskip=10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp]{paragraph} \fi \ifnum\c@secnumdepth>4 \RedeclareSectionCommand[beforeskip=10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp]{subparagraph} \fi } \RequirePackage[breakable,skins,listings]{tcolorbox} \nlctdoc@loadxr \RequirePackage{hyperref} \hypersetup{hidelinks} \RequirePackage{mfirstuc}[2022/10/14] % Requires glossaries-extra v1.49+ \RequirePackage{glossaries-extra}[2022/10/14] \nlct@doifattachsupported{\RequirePackage{attachfile}} \renewcommand{\thepart}{\Roman{part}} \renewcommand{\theHpart}{\Roman{part}} \newglossary*{index}{\indexname} \newcommand*{\thispackagename}{\jobname} \newcommand*{\thispackage}{\styfmt{\thispackagename}} \newcommand*{\examplesdir}{\jobname-examples} \newcommand{\nlct@v@version}{} \newcommand{\nlct@version}{} \newcommand{\nlct@date}{} \ExplSyntaxOn \NewDocumentCommand \versiondate { m m } { \tl_set:Nx \nlct@version { \tl_trim_spaces:n { #1 } } \tl_set:Nx \nlct@date { \tl_trim_spaces:n { #2 } } \tl_if_empty:NF \nlct@version { \tl_set:Nx \nlct@v@version { version ~ \nlct@version } } \tl_if_empty:NF \nlct@date { \tl_put_right:Nx \nlct@v@version { ~ \nlct@date } } \date{\nlct@v@version} } \ExplSyntaxOff \newcommand{\htmlavailable}{This document is also available as \href{\jobname.html}{HTML (\filefmt{\jobname.html})}.} \ExplSyntaxOn \renewcommand{\title}[1]{\gdef\@title{#1}\hypersetup{pdftitle={\text_purify:n{#1}}}} \ExplSyntaxOff \newrobustcmd{\visiblespace}{% \texttt{\verbvisiblespace}% } \newcommand{\TeXLive}{\TeX\ Live} \newcommand{\MikTeX}{Mik\TeX} \newrobustcmd*{\texdocref}[1]{% \begin{terminal}\href{https://www.tug.org/texdoc/}{texdoc} #1\end{terminal}\noindent\ignorespaces} % \tugboat{title}{year}{volume}{number}{pdf} \newrobustcmd{\tugboat}[5]{\href{https://tug.org/TUGboat/tb#2-#4/#5}{\qt{#1} \emph{TUGboat}, Volume~#3 (#2), No.~#4}} \newrobustcmd{\urlfootref}[2]{\href{#1}{#2}\glsxtrdopostpunc{\footnote{\url{#1}}}} \MFUexcl{\urlfootref} \newrobustcmd{\texfaq}[2]{\href{https://texfaq.org/#1}{#2}} \MFUexcl{\texfaq} \newrobustcmd*{\CTANpkg}[1]{% \href{https://ctan.org/pkg/#1}{CTAN}% \glsxtrdopostpunc{\footnote{\href{https://ctan.org/pkg/#1}{\nolinkurl{ctan.org/pkg/#1}}}}% } \MFUexcl{\CTANpkg} \newcommand*{\ctanmirrordocnofn}[2]{% \href{http://mirrors.ctan.org/#1.pdf}{#2}% } \newrobustcmd*{\ctanmirrornofn}[2]{% \href{http://mirrors.ctan.org/#1}{#2}% } \MFUexcl{\ctanmirrornofn} \newrobustcmd*{\ctanmirror}[2]{% \href{http://mirrors.ctan.org/#1}{#2}% \glsxtrdopostpunc{\footnote{\href{http://mirrors.ctan.org/#1}{\nolinkurl{mirrors.ctan.org/#1}}}}% } \MFUexcl{\ctanmirror} \newrobustcmd*{\ctanref}[2]{\href{https://ctan.org/#1}{#2}% \glsxtrdopostpunc{\footnote{\href{https://ctan.org/#1}{\nolinkurl{ctan.org/#1}}}}% } \MFUexcl{\ctanref} \newrobustcmd*{\ctanpkg}[1]{\href{https://ctan.org/pkg/#1}{\nolinkurl{ctan.org/pkg/#1}}} \MFUexcl{\ctanpkg} \newrobustcmd*{\ctanpkgmirror}[2]{% \href{http://mirrors.ctan.org/pkg/#1}{#2}% \glsxtrdopostpunc{\footnote{\href{http://mirrors.ctan.org/pkg/#1}{\nolinkurl{mirrors.ctan.org/pkg/#1}}}}% } \MFUexcl{\ctanpkgmirror} \newrobustcmd*{\ctansupportmirror}[2]{% \href{http://mirrors.ctan.org/support/#1}{#2}% \glsxtrdopostpunc{\footnote{\href{http://mirrors.ctan.org/support/#1}{\nolinkurl{mirrors.ctan.org/support/#1}}}}% } \MFUexcl{\ctansupportmirror} \newrobustcmd{\texseref}[2]{\href{https://tex.stackexchange.com/#1}{#2}% \glsxtrdopostpunc{\footnote{\href{http://tex.stackexchange.com/#1}{\nolinkurl{tex.stackexchange.com/#1}}}}% } \MFUexcl{\texseref} \newrobustcmd*{\dickimawhrefnofn}[2]{% \href{https://www.dickimaw-books.com/#1}{#2}% } \MFUexcl{\dickimawhrefnofn} \newrobustcmd*{\dickimawhref}[2]{% \href{https://www.dickimaw-books.com/#1}{#2}% \glsxtrdopostpunc{\protect\footnote{\href{https://www.dickimaw-books.com/#1}{\nolinkurl{dickimaw-books.com/#1}}}}% } \MFUexcl{\dickimawhref} \newcommand*{\blog}[2]{% \dickimawhref{blog/#1}{#2}% } \MFUexcl{\blog} \newcommand*{\gallery}[1]{% \dickimawhref{gallery}{#1}% } \MFUexcl{\gallery} \newcommand*{\galleryurl}[1]{% \dickimawhrefnofn{gallery/#1}{\nolinkurl{dickimaw-books.com/gallery/#1}}% } \MFUexcl{\galleryurl} \newcommand*{\galleryref}[2]{% \dickimawhref{gallery/#1}{#2}% } \MFUexcl{\galleryref} \newcommand*{\gallerytopic}[1]{% \dickimawhref{gallery/\##1}{\styfmt{#1} gallery}% } \MFUexcl{\gallerytopic} \newcommand*{\gallerypage}[2]{% \galleryref{index.php?label=#1}{#2}% } \MFUexcl{\gallerypage} \newcommand*{\faqspkg}[1]{% \dickimawhref{faq.php?category=#1}{\styfmt{#1} FAQ}% } \MFUexcl{\faqspkg} \newcommand*{\faqpage}[2]{% \dickimawhref{faq.php?category=#1}{#2}% } \MFUexcl{\faqspage} \newcommand*{\faqitem}[2]{% \dickimawhref{faq.php?itemlabel=#1}{#2}% } \MFUexcl{\faqitem} \newcommand*{\menufmt}[1]{\textsf{#1}} \newcommand*{\menusep}{\,\ding{220}\,} \newrobustcmd*{\menu}[1]{% \def\nlct@menusep{}% \menufmt {% \@for\@menu@item:=#1\do{% \nlct@menusep\@menu@item \let\nlct@menusep\menusep }% }% } \newcommand{\refslistsep}{, } \newcommand{\refslistlastsep}{ \& } \newcommand*{\@refslist}[4]{% \bgroup \renewcommand{\DTLlistformatitem}{\ref}% \renewcommand*{\DTLlistformatsep}{#2}% \renewcommand*{\DTLlistformatlastsep}{#3}% #1\DTLformatlist{#4}% \egroup } \newcommand*{\s@refslist}[4]{% \bgroup \renewcommand{\DTLlistformatitem}{\ref*}% \renewcommand*{\DTLlistformatsep}{#2} \renewcommand*{\DTLlistformatlastsep}{#3}% #1\DTLformatlist{#4}% \egroup } \newcommand*{\@ref@numname}[1]{\ref{#1} (\nameref{#1})} \newcommand*{\s@ref@numname}[1]{\ref*{#1} (\nameref*{#1})} \newcommand*{\@numname@refslist}[4]{% \bgroup \let\DTLlistformatitem\@ref@numname \renewcommand*{\DTLlistformatsep}{#2}% \renewcommand*{\DTLlistformatlastsep}{#3}% #1\DTLformatlist{#4}% \egroup } \newcommand*{\s@numname@refslist}[4]{% \bgroup \let\DTLlistformatitem\s@ref@numname \renewcommand*{\DTLlistformatsep}{#2}% \renewcommand*{\DTLlistformatlastsep}{#3}% #1\DTLformatlist{#4}% \egroup } \newcommand{\sectionrefprefix}{\S} \newrobustcmd{\sectionref}{\@ifstar\s@sectionref\@sectionref} \MFUblocker{\sectionref} \newcommand*{\@sectionref}[1]{\sectionrefprefix\ref{#1}} \newcommand*{\s@sectionref}[1]{\sectionrefprefix\ref*{#1}} \newcommand{\Sectionrefprefix}{\S} \newrobustcmd{\Sectionref}{\@ifstar\s@Sectionref\@sectionref} \newcommand*{\@Sectionref}[1]{\Sectionrefprefix\ref{#1}} \newcommand*{\s@Sectionref}[1]{\Sectionrefprefix\ref*{#1}} \MFUaddmap{\sectionref}{\Sectionref} \MFUaddmap{\sectionrefprefix}{\Sectionrefprefix} \newcommand{\sectionsrefprefix}{\S\S} \newrobustcmd{\sectionsref}{% \@ifstar {\s@refslist{\sectionsrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\sectionsrefprefix}{\refslistsep}{\refslistlastsep}}% } \MFUblocker{\sectionsref} \newcommand{\Sectionsrefprefix}{\S\S} \newrobustcmd{\Sectionsref}{% \@ifstar {\s@refslist{\Sectionsrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\Sectionsrefprefix}{\refslistsep}{\refslistlastsep}}% } \MFUaddmap{\sectionsref}{\Sectionsref} \MFUaddmap{\sectionsrefprefix}{\Sectionsrefprefix} \newcommand{\tablerefprefix}{Table~} \newcommand{\Tablerefprefix}{Table~} \newrobustcmd*{\tableref}{\@ifstar\s@tableref\@tableref} \newrobustcmd*{\Tableref}{\@ifstar\s@Tableref\@Tableref} \newcommand*{\@tableref}[1]{\tablerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@tableref}[1]{\tablerefprefix\ref*{#1}} \newcommand*{\@Tableref}[1]{\Tablerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@Tableref}[1]{\Tablerefprefix\ref*{#1}} \MFUaddmap{\tableref}{\Tableref} \newcommand{\tablesrefprefix}{tables~} \newcommand{\Tablesrefprefix}{Tables~} \newrobustcmd{\tablesref}{% \@ifstar {\s@refslist{\tablesrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\tablesrefprefix}{\refslistsep}{\refslistlastsep}}% } \newrobustcmd{\Tablesref}{% \@ifstar {\s@refslist{\Tablesrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\Tablesrefprefix}{\refslistsep}{\refslistlastsep}}% } \MFUaddmap{\tablesref}{\Tablesref} \newcommand{\figurerefprefix}{figure~} \newcommand{\Figurerefprefix}{Figure~} \newrobustcmd*{\figureref}{\@ifstar\s@figureref\@figureref} \newrobustcmd*{\Figureref}{\@ifstar\s@Figureref\@Figureref} \newcommand*{\@figureref}[1]{\figurerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@figureref}[1]{\figurerefprefix\ref*{#1}} \newcommand*{\@Figureref}[1]{\Figurerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@Figureref}[1]{\Figurerefprefix\ref*{#1}} \MFUaddmap{\figureref}{\Figureref} \newcommand{\figuresrefprefix}{figures~} \newcommand{\Figuresrefprefix}{Figures~} \newrobustcmd{\figuresref}{% \@ifstar {\s@refslist{\figuresrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\figuresrefprefix}{\refslistsep}{\refslistlastsep}}% } \newrobustcmd{\Figuresref}{% \@ifstar {\s@refslist{\Figuresrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\Figuresrefprefix}{\refslistsep}{\refslistlastsep}}% } \MFUaddmap{\figuresref}{\Figuresref} \providecommand{\examplerefprefix}{Example~} \providecommand{\Examplerefprefix}{Example~} \newrobustcmd*{\exampleref}{\@ifstar\s@exampleref\@exampleref} \newcommand*{\@exampleref}[1]{\examplerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@exampleref}[1]{\examplerefprefix\ref*{#1}} \newrobustcmd*{\examplenameref}[1]{\exampleref{#1} (\nameref{#1})} \newrobustcmd*{\Exampleref}{\@ifstar\s@Exampleref\@Exampleref} \newcommand*{\@Exampleref}[1]{\Examplerefprefix\nlct@ns@ref@cs{#1}} \newcommand*{\s@Exampleref}[1]{\Examplerefprefix\ref*{#1}} \MFUaddmap{\exampleref}{\Exampleref} \newcommand{\examplesrefprefix}{examples~} \newcommand{\Examplesrefprefix}{Examples~} \newrobustcmd{\examplesref}{% \@ifstar {\s@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}% } \newrobustcmd{\examplesnameref}{% \@ifstar {\s@numname@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}% {\@numname@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}% } \newrobustcmd{\Examplesref}{% \@ifstar {\s@refslist{\Examplesrefprefix}{\refslistsep}{\refslistlastsep}}% {\@refslist{\Examplesrefprefix}{\refslistsep}{\refslistlastsep}}% } \MFUaddmap{\examplesref}{\Examplesref} \newrobustcmd{\mExampleref}[1]{\Exampleref{#1}\examplemarginref{#1}} \newrobustcmd{\mexampleref}[1]{\exampleref{#1}\examplemarginref{#1}} \newrobustcmd{\examplemarginref}[1]{% \marginpar{\footnotesize\hyperref[#1]{\codesym}\ref{#1}\plabel{#1-backref}}% } \newcommand*{\plabel}[2][]{\protected@edef\@currentlabelname{#1}\label{#2}} \newcommand*{\pref}[2][]{on page~\pageref{#2}} \newcommand*{\phyperref}[2]{\hyperref[#2]{#1} on page~\pageref{#2}} \newcommand*{\dash}{\,---\,} \newcommand{\Slash}{\,\slash\,}% v1.11 \newcommand*{\tick}{\ding{51}} \newcommand*{\yes}{\ding{52}} \newcommand*{\no}{\ding{56}} \newrobustcmd{\advantagefmt}[1]{\textcolor{green}{#1}} \newrobustcmd{\disadvantagefmt}[1]{\textcolor{red}{#1}} \newcommand*{\proyes}{\advantagefmt{\yes}} \newcommand*{\prono}{\disadvantagefmt{\no}} \newcommand*{\conyes}{\disadvantagefmt{\yes}} \newcommand*{\conno}{\advantagefmt{\no}} \newcommand{\unlimited}{$\infty$} {\catcode`\^^I12\relax \gdef\nlctliteraltabchar{^^I} } \newcommand{\fnsymmark}[1]{\rlap{#1}} \newcommand{\asteriskmarker}{\textasteriskcentered} \newcommand{\daggermarker}{\textdagger} \newcommand{\doubledaggermarker}{\textdaggerdbl} \newcommand{\sectionmarker}{\textsection} \newcommand{\lozengemarker}{$\lozenge$} \newcommand{\pilcrowmarker}{\textparagraph} \newcommand{\hashmarker}{\#} \newcommand{\referencemarker}{{\fontfamily{cmr}\selectfont\textreferencemark}} \newcommand{\vdoubleasteriskmarker}{\shortstack{*\\[-1.5ex]*}} \newcommand{\starmarker}{$\star$} \newcommand{\florettemarker}{\ding{94}} \newcommand{\fnsymmarker}[1]{% \ifcase#1\relax \or \asteriskmarker \or \daggermarker \or \doubledaggermarker \or \sectionmarker \or \lozengemarker \or \pilcrowmarker \or \hashmarker \or \referencemarker \or \vdoubleasteriskmarker \or \starmarker \or \florettemarker \else \number#1 \fi } \newrobustcmd*{\fnsym}{\@ifstar\s@fnsym\@fnsym} \newcommand{\@fnsym}[1]{% \tablefnmark {% \fnsymmark {% \fnsymmarker{#1}% }% }% } \newcommand{\s@fnsym}[1]{% \tablefnmark {% \fnsymmarker{#1}% }% } \newcommand{\tablefns}[1]{\par \parbox{0.8\linewidth} {\raggedright \smallskip\hrulefill\par\smallskip \par#1% }\par } \newcommand*{\tablefnmark}[1]{\textsuperscript{#1}} \newcommand{\tablefnfmt}[1]{{\footnotesize#1\par}} \newrobustcmd{\tablefntext}[2]{\tablefnfmt{\tablefnmark{#1}#2}} \newrobustcmd{\fnsymtext}[2]{\tablefntext{\fnsymmarker{#1}}{#2}} \newcommand{\settabcolsep}[1]{\setlength{\tabcolsep}{#1}} \newcommand*{\docref}[2]{#1 (\href{#2.pdf}{\nolinkurl{#2.pdf}})} \newcommand*{\qtdocref}[2]{\qt{#1} (\href{#2.pdf}{\nolinkurl{#2.pdf}})} % \altdocref{text}{pdf}{html} \newcommand*{\altdocref}[3]{#1 (\href{#2.pdf}{\nolinkurl{#2.pdf}})} % \xrsectionref{label}{html file}{html title} \newcommand*{\xrsectionref}[3]{Section~\ref{#1}} \newcommand{\deflist@item}[1]{\item[]#1} \newenvironment{itemdesc}{\par\nobreak\ignorespaces}{\ignorespacesafterend} \newenvironment{deflist} {\begin{description}\let\itemtitle\deflist@item} {\end{description}\ignorespacesafterend} \newcommand*{\warningsym}{\faExclamationTriangle} \newcommand*{\warningtext}{Warning} \newcommand*{\warningdesc}{a warning} \newcommand*{\importantsym}{\faInfo} \newcommand*{\importanttext}{Important} \newcommand*{\importantdesc}{an important message} \newcommand*{\informationsym}{\faInfoCircle} \newcommand*{\informationtext}{Information} \newcommand*{\informationdesc}{prominent information} \newcommand*{\definitionsym}{\faThumbTack} \newcommand*{\definitiontext}{Definition} \newcommand*{\definitiondesc}{the syntax and usage of a command, environment or option etc} \newcommand*{\valuesettingsym}{\faSliders} \newcommand*{\valuesettingtext}{Setting} \newcommand*{\valuesettingdesc}{an option that takes a value} \newcommand*{\novaluesettingsym}{\faBars} \newcommand*{\novaluesettingtext}{Valueless Setting} \newcommand*{\novaluesettingdesc}{an option that doesn't take a value} \newcommand*{\toggleonsettingsym}{\faToggleOn} \newcommand*{\toggleonsettingtext}{Toggle (On)} \newcommand*{\toggleonsettingdesc}{a boolean option that is initially true} \newcommand*{\toggleoffsettingsym}{\faToggleOff} \newcommand*{\toggleoffsettingtext}{Toggle (Off)} \newcommand*{\toggleoffsettingdesc}{a boolean option that is initially false} \newcommand*{\optionvaluesym}{\faTag} \newcommand*{\optionvaluetext}{Option Value Definition} \newcommand*{\optionvaluedesc}{the definition of an option value} \newcommand*{\countersym}{\textnumero} \newcommand*{\countertext}{Counter} \newcommand*{\counterdesc}{a counter is being described} \definecolor{banned}{rgb}{0.8,0,0} \newrobustcmd{\deprecatedorbannedfmt}[1]{\textcolor{banned}{#1}} \newcommand*{\deprecatedsym}{\deprecatedorbannedfmt{\faTrashO}} \newcommand*{\deprecatedtext}{Deprecated} \newcommand*{\deprecateddesc}{a command, environment or option that is now deprecated} \newcommand*{\bannedsym}{\deprecatedorbannedfmt{\faBan}} \newcommand*{\bannedtext}{Don't use} \newcommand*{\banneddesc}{a command, environment or option that should not be used with \thispackage} \newcommand*{\terminalsym}{\faTerminal} \newcommand*{\terminaltext}{Terminal} \newcommand*{\terminaldesc}{a command-line application invocation that needs to be entered into a \href{https://www.dickimaw-books.com/latex/novices/html/terminal.html}{terminal or command prompt}} \newcommand*{\codesym}{\faFileTextO} \newcommand*{\codetext}{Input} \newcommand*{\codedesc}{\LaTeX\ code to insert into your document} \newrobustcmd*{\badcodesym}{\faFileTextO\llap{\deprecatedorbannedfmt{\scriptsize\faBan}}} \newcommand*{\badcodetext}{Problematic Input} \newcommand*{\badcodedesc}{problematic code which should be avoided} \newrobustcmd*{\unicodesym}{\faFileO\llap{\textsl{\tiny Uni}}} \newcommand*{\unicodetext}{Unicode Input} \newcommand*{\unicodedesc}{code that requires a native Unicode engine (\XeLaTeX\ or \LuaLaTeX)} \newcommand*{\resultsym}{\faFilePdfO} \newcommand*{\resulttext}{Result} \newcommand*{\resultdesc}{how the example code should appear in the PDF} \newcommand*{\transcriptsym}{\twemoji{1f50e}} \newcommand*{\transcripttext}{Transcript} \newcommand*{\transcriptdesc}{Text in a transcript or log file or written to STDOUT or STDERR} \newcommand*{\symbolentry}[1]{% @icon{sym.#1,name={\expandafter\expandonce\csname #1text\endcsname},^^J symbol={\expandafter\noexpand\csname #1sym\endcsname},^^J description={\expandafter\expandonce\csname #1desc\endcsname}^^J }^^J } \newcommand*{\symboldefinitions}{% \symbolentry{warning} \symbolentry{important} \symbolentry{information} \symbolentry{definition} \symbolentry{optionvalue} \symbolentry{valuesetting} \symbolentry{novaluesetting} \symbolentry{toggleonsetting} \symbolentry{toggleoffsetting} \symbolentry{counter} \symbolentry{deprecated} \symbolentry{banned} \symbolentry{terminal} \symbolentry{transcript} \symbolentry{code} \symbolentry{badcode} \symbolentry{unicode} \symbolentry{result} } \newlength\boxtitleshift \setlength{\boxtitleshift}{-2.5mm} \newcounter{icon} \newcommand*{\icon}[1]{\stepcounter{icon}\glssymbol[counter=icon]{sym.#1}} \newcommand*{\icontext}[1]{\stepcounter{icon}\glstext[counter=icon]{sym.#1}} \newtcolorbox{warning}[1][]{breakable, before upper={\parindent12pt\noindent}, title={\icon{warning}}, coltitle=red,colbacktitle=red!20!white, colframe=red,colback=red!5!white, enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1} \newtcolorbox{important}[1][]{breakable,title={\icon{important}}, before upper={\parindent12pt\noindent}, coltitle=red,colbacktitle=red!20!white, colframe=red,colback=red!5!white, enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1} \newtcolorbox{information}[1][]{breakable,title={\icon{information}}, before upper={\parindent12pt\noindent}, coltitle=teal,colbacktitle=teal!20!white, colframe=teal,colback=teal!5!white, enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1} \definecolor{defbackground}{rgb}{1,1,0.75} \definecolor{optiondefbackground}{rgb}{1,1,0.89} \definecolor{optionvaluedefbackground}{rgb}{1,1,0.96} \newcommand{\nlctdefaultafter}{\par\noindent\ignorespacesafterend} \newcommand{\nlctpinnedafter}{\nlctdefaultafter} % v1.11 \newcommand{\nlctpinnedbefore}{\allowbreak\par\noindent} % v1.11 \newtcolorbox{pinnedbox}[1][]{unbreakable,title={\icon{definition}}, coltitle=black,colbacktitle=defbackground, colframe=black,colback=defbackground,halign=flush left, enhanced,attach boxed title to top right={yshift=\boxtitleshift}, after={\nlctpinnedafter},before={\nlctpinnedbefore}, #1 } \newcommand{\nlctdefnafter}{\nopagebreak\nlctdefaultafter} % v1.11 \newcommand{\nlctdefnbefore}{\allowbreak\par\noindent} % v1.11 \newtcolorbox{defnbox}[1][]{unbreakable, colframe=black,colback=defbackground,halign=flush left, after={\nlctdefnafter},before={\nlctdefnbefore}, #1 } \newcommand{\nlctsettingsafter}{\nopagebreak\nlctdefaultafter} % v1.11 \newcommand{\nlctsettingsbefore}{\allowbreak\par\noindent} % v1.11 \newtcolorbox{settingsbox}[1][]{title={\icon{valuesetting}},unbreakable, coltitle=black,colbacktitle=defbackground!20!white, colframe=black,colback=defbackground!20!white,halign=flush left, enhanced,attach boxed title to top right={yshift=\boxtitleshift}, after={\nlctsettingsafter}, before={\nlctsettingsbefore}, #1 } \newtcolorbox{terminal}{unbreakable,title={\icon{terminal}}, colframe=black, enhanced,attach boxed title to top right={yshift=\boxtitleshift}, after={\nlctdefaultafter}, halign=flush left,fontupper=\ttfamily,before upper={\frenchspacing\obeylines} } \newtcolorbox{transcript}{unbreakable,title={\icon{transcript}}, colframe=black, enhanced,attach boxed title to top right={yshift=\boxtitleshift}, after={\nlctdefaultafter}, halign=flush left,fontupper=\ttfamily,before upper={\frenchspacing\obeylines} } \newcommand{\code@cmd}[1]{\char`\\ #1} \newcommand{\cmd}[1]{\texttt{\code@cmd{#1}}} \newcommand{\code@cbeg}[1]{\cmd{begin}\marg{#1}} \newcommand{\code@cend}[1]{\cmd{end}\marg{#1}} {\obeylines\newcommand{\code@comment}[1]{% \mbox{\textcolor{comment}{\glspercentchar\ #1}}\@ifnextchar {}{\par}}\global\let\code@comment\code@comment\newcommand{\code@comment@dbsp}[1]{% \mbox{\textcolor{comment}{\glspercentchar\ #1}}\@ifnextchar {}{\par}\dbspace}\global\let\code@comment@dbsp\code@comment@dbsp} \newcommand{\araraline}[1]{\glspercentchar\ arara: #1} \newcommand{\araracont}{\araraline{-\/-> }} \newcommand{\commentnl}[1]{\comment{#1}\nl} \newcommand*{\setupcodeenvfmts}{% \let\cbeg\code@cbeg \let\cend\code@cend \let\comment\code@comment \let\commentdbsp\code@comment@dbsp \def\nl{\mbox{}\newline}% \def\nlsp{\nl\null\space}% \def\dbspace{\mbox{}\space\space}% \def\dbdbspace{\dbspace\dbspace}% \def\dbdbdbspace{\dbspace\dbspace\dbspace}% \def\nldbsp{\nl\null\dbspace}% \def\nldbdbsp{\nl\null\dbdbspace}% \def\nldbdbdbsp{\nl\null\dbdbdbspace}% \renewcommand*{\envfmt}[1]{##1}% \renewcommand*{\styfmt}[1]{##1}% \renewcommand*{\clsfmt}[1]{##1}% \renewcommand*{\ctrfmt}[1]{##1}% \renewcommand*{\csfmtfont}[1]{\textcolor{cs}{##1}}% \let\fmtorcode\@secondoftwo \let\code\@firstofone } \newcommand*{\initcodeenv}{% \GlsXtrStartUnsetBuffering \setupcodeenvfmts \obeylines\frenchspacing\@vobeyspaces \parindent\z@\parfillskip\@flushglue } \newcommand{\codefont}{\ttfamily} % inline \newcommand{\code}[1]{\texorpdfstring{\@code{#1}}{#1}} \newrobustcmd{\@code}[1]{{\setupcodeenvfmts\codefont\obeyspaces #1}} \definecolor{codebackground}{gray}{0.95} \newtcolorbox{codebox}[1][]{title={\icon{code}}, enhanced,breakable,attach boxed title to top right={yshift=\boxtitleshift}, halign=flush left,fontupper=\codefont,colback=codebackground, before upper={% \preto\glslinkpresetkeys{\setkeys{glslink}{format=glsignore}}% \initcodeenv }, after upper={\GlsXtrDiscardUnsetBuffering}, after={\nlctdefaultafter}, #1 } \newtcolorbox{codebox*}[1][]{title={\icon{code}}, enhanced,breakable, attach boxed title to top right={yshift=\boxtitleshift}, halign=flush left,fontupper=\codefont,colback=codebackground, before upper={\initcodeenv}, after upper={\GlsXtrDiscardUnsetBuffering}, after={\nlctdefaultafter}, #1 } \newenvironment{badcodebox}% {\begin{codebox}[title={\icon{badcode}}]} {\end{codebox}\noindent\ignorespacesafterend} \newenvironment{unicodebox}% {\begin{codebox}[title={\icon{unicode}}]} {\end{codebox}\noindent\ignorespacesafterend} \newtcolorbox{compactcodebox}[1][]{% halign=flush left,fontupper=\codefont,colback=codebackground, before upper={% \renewcommand{\glslinkpresetkeys}{\setkeys{glslink}{format=glsignore}}% \initcodeenv}, after upper={\GlsXtrDiscardUnsetBuffering}, after={\nlctdefaultafter}, #1 } \newtcolorbox{compactcodebox*}[1][]{% halign=flush left,fontupper=\codefont,colback=codebackground, before upper={\initcodeenv}, after upper={\GlsXtrDiscardUnsetBuffering}, after={\nlctdefaultafter}, #1 } \newcommand*{\result@attachtag}{} \newtcolorbox{resultbox}[1][]{title={\icon{result}}, coltitle=black,colbacktitle=white, colframe=black,colback=white, after={\nlctdefaultafter}, enhanced,breakable,attach boxed title to top right={yshift=\boxtitleshift},#1} \newtcolorbox{coderesult}[1][]{skin=bicolor, title={\icon{code} \icon{result}}, attach boxed title to top center={yshift=\boxtitleshift}, sidebyside, sidebyside align=top, colbacklower=white, fontupper=\codefont, before upper={% \renewcommand{\glslinkpresetkeys}{\setkeys{glslink}{format=glsignore}}% \initcodeenv}, after upper={\GlsXtrDiscardUnsetBuffering}, halign upper=flush left,halign lower=justify, valign upper=top,valign lower=top, before lower={\let\nlct@ex@title@attachments\nlct@ex@narrow@title@attachments}, after lower={\noindent}, #1 } \newtcolorbox{coderesult*}[1][]{skin=bicolor, title={\icon{code} \icon{result}}, attach boxed title to top center={yshift=\boxtitleshift}, sidebyside, sidebyside align=top, colbacklower=white, fontupper=\codefont, before upper={\initcodeenv}, after upper={\GlsXtrDiscardUnsetBuffering}, after lower={\noindent}, valign upper=top,valign lower=top, halign upper=flush left,halign lower=justify, #1 } \newenvironment{unicoderesult}% {\begin{coderesult}[title={\icon{unicode} \icon{result}}]} {\end{coderesult}\noindent\ignorespacesafterend} \newenvironment{unicoderesult*}% {\begin{coderesult*}[title={\icon{unicode} \icon{result}}]} {\end{coderesult*}\noindent\ignorespacesafterend} \newcommand*{\summarylocfont}{\footnotesize} \newcommand*{\summarylocinnersep}{.3333em} \newcommand*{\summarylocwidth}{\marginparwidth-.6666em} \definecolor{summaryloc}{rgb}{.75,.936,1} % LightBlue1 \newcommand*{\summaryloc}[1]{% \ifdefempty\summarylocwidth {% \tikz[baseline=(N.base)] \node[fill=summaryloc,rounded corners,font=\summarylocfont] (N) {#1};% }% {% \smash {% \tikz[baseline=(N.west)] \node[anchor=west, outer sep=0pt, inner sep=\summarylocinnersep, fill=summaryloc, text width=\summarylocwidth, align=flush left, rounded corners,font=\summarylocfont ] (N) {#1};% }% }% } \newcommand{\summarymarginpar}[1]{\marginpar{#1}} \ifdef\@ptsize { \ifboolexpr{ test {\ifdefstring\@ptsize{1}} or test {\ifdefstring\@ptsize{11}} or test {\ifdefstring\@ptsize{11pt}} } {% \newcommand{\@nlct@example@fontsize}{11pt}% } { \ifboolexpr{ test {\ifdefstring\@ptsize{2}} or test {\ifdefstring\@ptsize{12}} } {% \newcommand{\@nlct@example@fontsize}{12pt}% } { \newcommand{\@nlct@example@fontsize}{10pt} } } } { \newcommand{\@nlct@example@fontsize}{10pt} } \newcommand{\@nlct@example@clsname}{article} \newcommand{\@nlct@example@fontsize@prefix}{} \newcommand{\@nlct@update@example@fontsize@prefix}{% \ifdefstring{\@nlct@example@clsname}{scrreport} {\renewcommand{\@nlct@example@fontsize@prefix}{fontsize=}}% {% \ifdefstring{\@nlct@example@clsname}{scrbook} {\renewcommand{\@nlct@example@fontsize@prefix}{fontsize=}}% {% \ifdefstring{\@nlct@example@clsname}{scrarticle} {\renewcommand{\@nlct@example@fontsize@prefix}{fontsize=}}% {% \renewcommand{\@nlct@example@fontsize@prefix}{} }% }% }% } \newcommand{\setexamplefontsize}[1]{% \renewcommand{\@nlct@example@fontsize}{#1pt}% \ifnum#1>12\relax \renewcommand{\@nlct@example@clsname}{extarticle}% \else \ifnum#1<10\relax \renewcommand{\@nlct@example@clsname}{extarticle}% \else \renewcommand{\@nlct@example@clsname}{article}% \fi \fi } \newcommand*{\nlct@create@example@preamble}{% \string\documentclass[\@nlct@example@fontsize@prefix\@nlct@example@fontsize]{\@nlct@example@clsname}^^J% \string\pagestyle{\@nlct@example@pagestyle}^^J} \newcommand*{\setexamplepreamble}[1]{\edef\create@example@preamble{\detokenize{#1}^^J}} \newcommand*{\addtoexamplepreamble}[1]{\eappto\create@example@preamble{\detokenize{#1}^^J}} \newwrite\nlct@exampleout \define@choicekey{nlctexample}{fontsize}% {8,9,10,11,12,14,17,20}% {\setexamplefontsize{#1}} \define@key{nlctexample}{class}{\renewcommand{\@nlct@example@clsname}{#1}} \newcommand{\@nlct@example@pagestyle}{empty} \define@key{nlctexample}{pagestyle}{\renewcommand{\@nlct@example@pagestyle}{#1}} \define@key{nlctexample}{graphicsopts}{% \renewcommand*{\create@example@graphicsopts}{#1}} \newcommand*{\create@example@graphicsopts}{} \define@key{nlctexample}{pages}{% \renewcommand*{\create@example@pages}{#1}} \newcommand*{\create@example@pages}{} \define@key{nlctexample}{pagesep}{% \renewcommand*{\create@example@pages@sep}{#1}} \newcommand{\create@example@pages@sep}{1em} \define@key{nlctexample}{pagesperrow}{% \renewcommand*{\create@example@pages@perrow}{#1}} \newcommand{\create@example@pages@perrow}{\@nlct@num} \define@key{nlctexample}{tex}{\renewcommand*{\create@example@tex}{#1}} \newcommand*{\create@example@tex}{arara --working-directory \examplesdir} \newcommand*{\nlct@create@example@precls}{% \glspercentchar\space arara\string: pdflatex^^J% \glspercentchar\space arara\string: pdfcrop^^J% } \define@key{nlctexample}{arara}{% \ifdefstring{\examplesdir}{.}% {\renewcommand*{\create@example@tex}{arara}}% {\renewcommand*{\create@example@tex}{arara --working-directory \examplesdir}}% \renewcommand*{\nlct@create@example@precls}{}% \@for\nlct@thisitem:=#1\do{% \eappto\nlct@create@example@precls{\glspercentchar\space arara\string: \expandafter\detokenize\expandafter{\nlct@thisitem}^^J}% }% } \providecommand{\examplename}{Example} \let\Examplename\examplename \newcommand*{\example@attachdesc}{\Examplename\space \theexample} \define@key{nlctexample}{description}{% \renewcommand*{\example@attachdesc}{#1}% } \newcommand*{\example@title}{} \define@key{nlctexample}{title}{% \renewcommand*{\example@title}{#1}% } \newcommand{\nlctpostexampletitle}{\par} \define@choicekey{nlctexample}{titleskip}% [\nlct@titleskip@val\nlct@titleskip@nr]% {none,thin,small,medium}% {% \ifcase\nlct@titleskip@nr\relax \renewcommand{\nlctpostexampletitle}{\endgraf}% \or \renewcommand{\nlctpostexampletitle}{\vspace{1pt plus 1pt}\endgraf}% \or \renewcommand{\nlctpostexampletitle}{\smallskip\endgraf}% \or \renewcommand{\nlctpostexampletitle}{\medskip\endgraf}% \fi } \newcommand{\example@do@label}{% \ifdefempty\nlct@example@label {}% {% \ifdefempty\example@title{}% {\protected@edef\@currentlabelname{\example@title}}% \label{\nlct@example@label}% \example@do@extag }% } \newcommand{\example@label@info}{} \newcommand{\nlct@example@label}{} \define@key{nlctexample}{label}{% \renewcommand{\example@label@info}{\glspercentchar\space Label: "#1"^^J}% \renewcommand*{\nlct@example@label}{#1}% } % v1.11+ \newcommand{\example@do@extag}{} \newcommand{\nlctextag}[1]{% \protected@write\@auxout{}{\string\nlctdoc@extag{#1}{\nlct@example@label}}% } \ExplSyntaxOn \newcommand{\nlctdoc@extag}[2]{ \clist_map_inline:nn { #1 } { \seq_if_exist:cF { g__nlctdoc_example_tag_ ##1 _seq } { \seq_new:c { g__nlctdoc_example_tag_ ##1 _seq } } \seq_gput_right:cn { g__nlctdoc_example_tag_ ##1 _seq } { #2 } } } \int_new:N \l_nlctdoc_extag_item_threshold_int \int_set:Nn \l_nlctdoc_extag_item_threshold_int { 4 } % Syntax: \exampletagref{tag}{trailing punctuation} \NewDocumentCommand \exampletagref { m m } { \seq_if_exist:cTF { g__nlctdoc_example_tag_ #1 _seq } { \seq_if_empty:cTF { g__nlctdoc_example_tag_ #1 _seq } { ??\PackageWarning { nlctuserguide } { No ~ labels ~ found ~ for ~ tag ~ `#1' } } { \exp_args:Ncx \__nlctdoc_examplerefs:Nnn { g__nlctdoc_example_tag_ #1 _seq } { \seq_count:c { g__nlctdoc_example_tag_ #1 _seq } } { #2 } } } { ??\PackageWarning { nlctuserguide } { No ~ reference ~ found ~ for ~ tag ~ `#1' } } } \cs_new:Nn \__nlctdoc_examplerefs:Nnn { \int_compare:nNnTF { #2 } = { \c_one_int } { \exp_args:Nx \examplenameref { \seq_item:Nn #1 { \c_one_int } } #3 } { \int_compare:nNnTF { #2 } < { \l_nlctdoc_extag_item_threshold_int } { \exp_args:Nx \examplesnameref { \seq_use:Nn #1 { , } } #3 } { \exampletagrefprelist \begin{itemize} \seq_map_indexed_inline:Nn #1 { \item \ref{ ##2 } \exampletagreflistpretitle \nameref{ ##2 } \int_compare:nNnTF { ##1 } = { #2 } { #3 } { \exampletagreflistsep } } \end{itemize} } } } \ExplSyntaxOff \newcommand{\exampletagreflistsep}{;} \newcommand{\exampletagreflistpretitle}{. } \newcommand{\exampletagrefprelist}{the following examples:} \define@key{nlctexample}{tag}{% \renewcommand{\example@do@extag}{\nlctextag{#1}}% } \newcommand{\nlct@exbacklink}{} \define@key{nlctexample}{link}{% \renewcommand{\nlct@exbacklink}{#1}% } \newcounter{example} \newcommand{\exampleattachtexicon}{\faPaperclip\textsuperscript\faFileTextO} \newcommand{\exampleattachpdficon}{\faPaperclip\textsuperscript\faFilePdfO} \newcommand{\exampledownloadtexicon}{\faDownload\textsuperscript\faFileTextO} \newcommand{\exampledownloadpdficon}{\faDownload\textsuperscript\faFilePdfO} \newcommand{\codepar}{\par\mbox{}\par} \newcommand{\glscmd}[1]{\glsentrytext{#1}} \newcommand{\nlctexamplelets}{% \let\gls\glsentrytext \let\glssymbol\glsentrysymbol \let\glscmd\glsentrytext \let\env\@firstofone \let\ctr\@firstofone \let\texorpdfstring\@secondoftwo \def\starredcs##1{\glsentrytext{##1}*}% \def\cmd##1{\glsbackslash##1}% \def\csfmt##1{\glsbackslash##1}% \def\cbeg##1{\glsbackslash begin{##1}}% \def\cend##1{\glsbackslash end{##1}}% \def\comment##1{\glspercentchar\space ##1^^J}% \def\commentnl##1{\glspercentchar\space ##1^^J}% \def\commentdbsp##1{\glspercentchar\space ##1^^J\dbspace}% \def\%{\glspercentchar}% \edef\#{\expandafter\@gobble\string\#}% % v1.10: \edef\${\expandafter\@gobble\string\$}% \edef\_{\expandafter\@gobble\string\_}% \def\-{}% \def\codepar{^^J^^J}% \def\marg##1{\glsopenbrace##1\glsclosebrace}% \def\oarg##1{[##1]}% % v1.11: \def\nl{^^J}% \def\nlsp{^^J\space}% \def\dbspace{\space\space}% \def\dbdbspace{\dbspace\dbspace}% \def\dbdbdbspace{\dbspace\dbspace\dbspace}% \def\nldbsp{^^J\dbspace}% \def\nldbdbsp{^^J\dbdbspace}% \def\nldbdbdbsp{^^J\dbdbdbspace}% \let\tabsym\nlctliteraltabchar \let\visiblespace\space } \newcommand{\@create@example@write}{\@create@example@write@detok} \newcommand{\createexamplefirstline}{% \nlct@ifattachsupported {\glspercentchar\space This file is embedded in \jobname.pdf \nlct@v@version^^J}% {\glspercentchar\space This file is an example from \jobname.pdf \nlct@v@version^^J}% } \newcommand{\@create@example@write@detok}[2]{% \immediate\write\nlct@exampleout{% \createexamplefirstline \glspercentchar\space \Examplename\space \theexample\space\example@title^^J% \example@label@info \nlct@create@example@precls \nlct@create@example@preamble \detokenize{#1}^^J\string\begin{document}^^J\detokenize{#2}^^J% \string\end{document}}% } \newcommand{\@create@example@write@nodetok}[2]{% {\nlctexamplelets\immediate\write\nlct@exampleout{% \createexamplefirstline \glspercentchar\space \Examplename\space \theexample\space\example@title^^J% \example@label@info \nlct@create@example@precls\nlct@create@example@preamble #1^^J\string\begin{document}^^J#2^^J% \string\end{document}}% }% } \newcommand{\example@image}[2][]{% \settowidth{\dimen@}{\expandafter\includegraphics\expandafter [\create@example@graphicsopts,#1]{#2}}% \ifdim\dimen@>\linewidth\preto\create@example@graphicsopts{width=\linewidth,}\fi \s@example@image[#1]{#2}% } \newcommand{\s@example@image}[2][]{% \vtop {% \vskip0pt \hbox{\expandafter\includegraphics\expandafter [\create@example@graphicsopts,#1]{#2}}% }% } \newcommand{\nlctexampleimagelist}{% \examplesdir/\nlct@example@filebasename-crop.pdf,% \examplesdir/\nlct@example@filebasename.pdf% } \newcommand*{\nlct@include@exampleimage}{% \@for\nlct@image@file:=\nlctexampleimagelist\do {% \IfFileExists{\nlct@image@file}% {% \ifdefempty\create@example@pages {\example@image{\nlct@image@file}}% {% \ifdefempty\create@example@graphicsopts {% \DTLnumitemsinlist{\create@example@pages}{\@nlct@num}% \edef\create@example@graphicsopts{width=\the\dimexpr(\linewidth-\create@example@pages@sep*(\create@example@pages@perrow-1))/\create@example@pages@perrow} }{}% \@for\@nlct@page:=\create@example@pages\do{\hfil \s@example@image[page=\@nlct@page]{\nlct@image@file}\hfil}% }% \@endfortrue }% {}% }% \if@endfor \else \PackageWarning{nlctuserguide}% {Missing example file `\nlct@example@filebasename.pdf'}% [missing \nlct@example@filebasename.pdf] \fi } % \createexample[options]{preamble code}{document code} \newcommand{\createexample}{% \@nlct@update@example@fontsize@prefix \@ifstar {\let\@create@example@write\@create@example@write@nodetok\@createexample}% {\let\@create@example@write\@create@example@write@detok\@createexample}} \newcommand{\listofexamplesname}{List of Examples} \newcommand{\listofexampleslabel}{\label{sec:listofexamples}} % v1.11: \newcommand{\listofexamplesheader}{% \par If an example shows the icon \exampleattachtexicon\ then the source code is embedded in the PDF as an attachment. If your PDF viewer supports attachments, you can extract the self-contained example file to try it out for yourself. Alternatively, you can click on the download icon \exampledownloadtexicon\ which will try downloading the example source code from your closest CTAN mirror, but make sure that this user manual matches the version on CTAN first. You can also try using: \texdocref{-l \jobname-example\meta{nnn}} where \meta{nnn} is the example number zero-padded to three digits to find out if the example files are installed on your device.\par \bigskip } \ifdef\chapter { \ifdef\titlepagestyle{\renewcommand{\titlepagestyle}{empty}}{} \pagenumbering{alph} \newcommand{\listofexamples}{% \@ifstar{\chapter*{\listofexamplesname}\@starttoc{loe}}% {\chapter{\listofexamplesname}\listofexampleslabel\listofexamplesheader\@starttoc{loe}}} } { \newcommand{\listofexamples}{% \@ifstar{\section*{\listofexamplesname}\@starttoc{loe}}% {\section{\listofexamplesname}\listofexampleslabel\listofexamplesheader\@starttoc{loe}}} } \newcommand{\l@example}{\l@table} \newcommand\nlctexamplefilebasename{% \jobname-example\ifnum\c@example<10 00\else \ifnum\c@example<100 0\fi\fi\the\c@example}% \newcommand{\nlctexampledisablecmds}{} \newcommand{\nlctexampletag}{\Examplename~\theexample} \newcommand{\nlctbacklink}[1]{% \ifdefempty\nlct@exbacklink {% \ifdefempty\nlct@example@label{}% {% \ifcsdef{r@\nlct@example@label-backref}% {\hyperref[\nlct@example@label-backref]{\upsym}}% {}% }% }% {\hyperref[\nlct@exbacklink]{\upsym}}% #1% } \newcommand{\nlctexampletitlefmt}[1]{% \nlctexampletitlefont \raggedright\exhyphenpenalty 0 % space intended \nlctbacklink{\nlctexampletag}\ifstrempty{#1}{}{: #1}\par } \newcommand{\nlct@ex@title@attachments}[2]{% \nlctexampletitlebox{#1}\hfill#2% } \newcommand{\nlct@ex@narrow@title@attachments}[2]{% \nlctexampletitlefmt{#1}\hfill#2% } \newcommand{\nlctexampletitlebox}[2][0.8\linewidth]{% \parbox[t]{#1}{\nlctexampletitlefmt{#2}}} \newcommand{\nlctexampletagattachfont}{\small} \newcommand{\nlctexampletitlefont}{\nlctexampletagattachfont} \newcommand{\nlctexampleenvtitlefont}{\bfseries\large} \newcommand{\addtolistofexamples}[1]{% \addcontentsline{loe}{example}{\protect\numberline{\theexample}#1}% } \newif\ifnlctattachpdf \nlctattachpdffalse \newif\ifnlctdownloadlinks \nlctdownloadlinkstrue \newcommand*{\nlctdownloadlink}[1]{http://mirrors.ctan.org/macros/latex/contrib/\thispackagename/#1} \newcommand{\@loe@disable@cmds}{% \def\dequals{\protect\dequals}% \def\dhyphen{\protect\dhyphen}% \def\dunderscore{\protect\dunderscore}% \def\cmd##1{\protect\csfmt{##1}}% \def\code##1{\protect\code{##1}}% \def\optfmt##1{\protect\optfmt{##1}}% \def\styfmt##1{\protect\styfmt{##1}}% \def\clsfmt##1{\protect\clsfmt{##1}}% \def\envfmt##1{\protect\envfmt{##1}}% \def\appfmt##1{\protect\appfmt{##1}}% } \ExplSyntaxOn \newcommand{\example@filesize}[1]{ \file_size:n { \examplesdir / \nlct@example@filebasename #1 } } \newcommand{\example@filetimestamp}[1]{ \file_timestamp:n { \examplesdir / \nlct@example@filebasename #1 } } \newcommand\nlct@run[1]{ \sys_if_shell_unrestricted:TF { \sys_shell_now:e { #1 } } { \PackageInfo { nlctuserguide } { Not ~ running ~ ` #1 ' \MessageBreak Unrestricted ~ shell ~ not ~ enabled. ~ Execute ~ outside ~ of ~ TeX ~ and ~ rerun } } } \ExplSyntaxOff \newcommand{\@createexample}[3][]{% \begin{minipage}[t]{\linewidth}% \raggedright \refstepcounter{example}% \setkeys{nlctexample}{#1}% \example@do@label \let\nlct@org@cmd\cmd \def\cmd##1{\csfmt{##1}}% \def\glscmd##1{\noexpand\glsfmttext{##1}}% \protected@edef\example@tex@title{\example@title}% \@loe@disable@cmds \addtolistofexamples{\example@title}% \def\cmd##1{\string\\##1}% \let\glscmd\cmd \let\code\@firstofone \let\optfmt\@firstofone \let\styfmt\@firstofone \let\clsfmt\@firstofone \let\envfmt\@firstofone \let\appfmt\@firstofone \let\opt\@firstofone \let\app\@firstofone \let\sty\@firstofone \let\cls\@firstofone \let\glslink\@secondoftwo \let\texorpdfstring\@secondoftwo \let\codebackslash\glsbackslash \let\-\@empty \def\TeX{TeX}% \def\LaTeX{LaTeX}% \def\dequals{=}% \def\dhyphen{-}% \def\dunderscore{\_}% \def\newline{^^J}% \nlctexampledisablecmds \protected@edef\example@pdf@title{\example@title}% \protected@edef\example@attachdesc{\example@attachdesc}% \def\cmd##1{\glsbackslash ##1}% \protected@edef\example@title{\example@title}% \let\cmd\nlct@org@cmd \xdef\nlct@example@filebasename{\nlctexamplefilebasename}% \immediate\openout\nlct@exampleout=\examplesdir/\nlct@example@filebasename.tex \@create@example@write{#2}{#3}% \immediate\closeout\nlct@exampleout \nlct@run{\create@example@tex\space\nlct@example@filebasename.tex}% \nlct@ifattachsupported {% \bgroup \nlct@ex@title@attachments {\example@tex@title}% {% \nlctexampletagattachfont \textattachfile[mimetype={application/x-tex}, author={\@pdfauthor},color={0 0 0}, size={\example@filesize{.tex}}, created={\example@filetimestamp{.tex}}, modified={\example@filetimestamp{.tex}}, subject={\example@pdf@title\space (source code)}, description={\example@attachdesc\space (source code)}]% {\examplesdir/\nlct@example@filebasename.tex}{\exampleattachtexicon}% \ifnlctdownloadlinks \space \href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.tex}}{\exampledownloadtexicon} \fi \ifnlctattachpdf \IfFileExists{\examplesdir/\nlct@example@filebasename.pdf} {% \space \textattachfile[mimetype={application/pdf}, author={\@pdfauthor},color={0 0 0}, size={\example@filesize{.pdf}}, created={\example@filetimestamp{.pdf}}, modified={\example@filetimestamp{.pdf}}, subject={\example@pdf@title\space (PDF)}, description={\example@attachdesc\space (PDF)}]% {\examplesdir/\nlct@example@filebasename.pdf}{\exampleattachpdficon}% }% {}% \ifnlctdownloadlinks \space \href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.pdf}}{\exampledownloadpdficon} \fi \else \ifnlctdownloadlinks \space \href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.pdf}}{\exampledownloadpdficon} \fi \fi }% \nlctpostexampletitle \egroup\noindent }% {% \nlctexampletitlebox{\example@tex@title}\hfill \ifnlctdownloadlinks \href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.tex}}{\exampledownloadtexicon} \quad \href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.pdf}}{\exampledownloadpdficon} \nlctpostexampletitle \egroup\noindent \fi } \nlct@include@exampleimage \par \end{minipage}% } \newenvironment{example}[2]{% \par\vskip10pt\noindent \refstepcounter{example}\label{#2}% {% \def\cmd##1{\csfmt{##1}}% \let\nlctexampletitlefont\nlctexampleenvtitlefont \nlctexampletitlefmt{#1}% }% {% \@loe@disable@cmds \addtolistofexamples{#1}% }% \nopagebreak\par\vskip10pt\nopagebreak } {% \nopagebreak\begin{center}\rule{2in}{1pt}\end{center}% } \renewcommand{\fps@figure}{htbp} % put break before dash to avoid confusion with a hyphen \newcommand{\dhyphen}{% \texorpdfstring {\discretionary{}{}{}\texttt{-}}% {-}% } % Redefine \- (used in entry names) so that hyphenation in command names, % switches, options etc., uses a serif hyphen to reduce confusion with an % actual hyphen in the code. \renewrobustcmd{\-}{% \discretionary {{\rmfamily\char\ifnum\hyphenchar\font<0 \defaulthyphenchar\else\hyphenchar\font\fi }}% {}{}% } \newcommand{\dequals}{% \texorpdfstring {\discretionary{}{}{}\texttt{=}\discretionary{}{}{}}% {=}% } \newcommand{\dcomma}{% \texorpdfstring {\texttt{,}\discretionary{}{}{}}% {,}% } \newcommand{\dcolon}{% \texorpdfstring {\texttt{:}\discretionary{}{}{}}% {:}% } \newcommand{\dfullstop}{% \texorpdfstring {\texttt{.}\discretionary{}{}{}}% {.}% } \newcommand{\dunderscore}{% \texorpdfstring {\discretionary{}{}{}\texttt{\_}\discretionary{}{}{}}% {\_}% } \newcommand\dsb{\dunderscore} \pdfstringdefDisableCommands{% \def\dhyphen{-}% \def\dcolon{:}% \def\dcomma{,}% \def\dequals{=}% \def\dfullstop{.}% \def\dunderscore{\_}% \let\-\empty \let\csfmtfont\@firstofone \let\NoCaseChange\@firstofone } \definecolor{cs}{rgb}{.328,.436,.1} % dark green \definecolor{styopt}{rgb}{.408,.132,.545} % DarkOrchid4 \definecolor{csopt}{rgb}{.408,.132,.545} % DarkOrchid4 \definecolor{comment}{rgb}{0.37,0.37,0.37}% grey \definecolor{style1}{rgb}{.32,.545,.545} % DarkSlateGray4 \definecolor{style2}{rgb}{.21,.392,.545} % SteelBlue4 \definecolor{style3}{rgb}{0,0,.545} % Blue4 \definecolor{style4}{rgb}{.332,.1,.545} % Purple4 \definecolor{style5}{rgb}{.28,.235,.545} % SlateBlue4 \definecolor{style6}{rgb}{.545,.352,.17} % Tan4 \newcommand{\sidenote}[1]{\leavevmode\marginpar{\footnotesize#1}} \newcommand*{\csfmtfont}[1]{\ifmmode \mbox{\texttt{#1}}\else\texttt{#1}\fi} \newcommand*{\csfmtcolourfont}[1]{\texttt{\textcolor{cs}{#1}}} \newcommand*{\csfmt}[1]{\csfmtfont{\codebackslash #1}} \newcommand*{\cspuncfmt}[1]{\csfmt{#1}} % v1.11 \MFUblocker{\csfmt}% v1.11 \MFUblocker{\cspuncfmt}% v1.11 \newcommand{\codebackslash}{\texorpdfstring{\char`\\}{\string\\}} \newcommand{\csmetafmt}[3]{% \texorpdfstring {\csfmt{#1\ifstrempty{#1}{}{\-}\meta{#2}\ifstrempty{#3}{}{\-}#3}}% {\string\\#1\string<#2\string>#3}% } \newcommand{\csmetametafmt}[5]{% \texorpdfstring{\csfmt{#1\meta{#2}#3\meta{#4}#5}}{\string\\#1\string<#2\string>#3\string<#4\string>#5}% } \newcommand{\starredcs}[1]{\gls{#1}[\csfmtfont{*}]} \newcommand{\starredenv}[1]{\gls{env.#1}[\envfmt{*}]} % v1.11 \newcommand{\thectr}[1]{\glslink{ctr.#1}{\csfmt{the#1}}} % v1.11 \newcommand{\theHctr}[1]{\glslink{ctr.#1}{\csfmt{theH#1}}} % v1.11 \newcommand*{\glscsname}[2][]{\glslink[#1]{#2}{\csfmtfont{#2}}} % v1.11 \NewDocumentCommand{\predcs}{O{}m}{% \glsxtrifhasfield{explsuffix}{#2}% {% \let\explsuffix\glscurrentfieldvalue \gls[#1]{#2}% }% {\gls[#1]{#2}}% } \NewDocumentCommand{\condcsT}{O{}m}{% {% \def\explTFsuffix{T}% \gls[#1]{#2}% }% } \NewDocumentCommand{\condcsF}{O{}m}{% {% \def\explTFsuffix{F}% \gls[#1]{#2}% }% } \newcommand*{\@expfunclink}[3]{\glslink[#3]{#2}{\csfmt{#1}}} \NewDocumentCommand{\expfunc}{O{}mm}{% \ifglsentryexists{#2}% {% \glsxtrifhasfield{base}{#2}% {% \expandafter\@expfunclink\expandafter{\glscurrentfieldvalue:#3}{#2}{#1}% }% {% \gls[#1]{#2}% }% }% {\gls[#1]{#2:#3}}% } \glsxtraddlabelprefix{dual.} \glsxtraddlabelprefix{idx.} \glsxtraddlabelprefix{idx.sym.} \glsxtraddlabelprefix{} \newcommand{\idx}{\dgls} \newcommand{\idxpl}{\dglspl} \newcommand{\Idx}{\dGls} \newcommand{\Idxpl}{\dGlspl} \newcommand{\idxc}{\dglslink} \newdglsfield{name}{\idxn} \newdglsfield{first}{\idxf} \newcommand{\optionlistprefix}{opt.} \newcommand{\optionlistitemformat}[1]{\glsentrytext{#1}} \newcommand{\optionlisttag}{Option} \newcommand{\optionlisttags}{Options} \newrobustcmd{\option}[1]{% \glslink{\optionlistprefix#1}% {\optionlisttag\glsxtrtaggedlistsep\optionlistitemformat{\optionlistprefix#1}}% } \newrobustcmd{\optionsto}[2]{% \optionlisttags\glsxtrtaggedlistsep \glslink{\optionlistprefix#1}% {\optionlistitemformat{\optionlistprefix#1}}% \thinspace\textendash\thinspace \glslink{\optionlistprefix#2}% {\optionlistitemformat{\optionlistprefix#2}}% } \newrobustcmd{\options}[1]{% {\def\andname{and}% \let\glsseeitemformat\optionlistitemformat \glsxtrtaggedlist{\optionlisttag}{\optionlisttags}{\optionlistprefix}{#1}% }% } \newrobustcmd{\optionsor}[1]{% {\def\andname{or}% \let\glsseeitemformat\optionlistitemformat \glsxtrtaggedlist{\optionlisttag}{\optionlisttags}{\optionlistprefix}{#1}% }% } \newcommand*{\stytext}[1]{\glsfmttext{pkg.#1}} \newcommand*{\clstext}[1]{\glsfmttext{cls.#1}} \newcommand*{\opttext}[1]{\glsfmttext{opt.#1}} \newcommand*{\envtext}[1]{\glsfmttext{env.#1}} \newcommand*{\ctrtext}[1]{\glsfmttext{ctr.#1}} \newcommand*{\actext}[1]{\glsfmttext{dual.#1}} \newcommand*{\exttext}[1]{\glsfmttext{ext.#1}} \newcommand*{\apptext}[1]{\glsfmttext{app.#1}} \newcommand*{\switchtext}[1]{\glsfmttext{switch.#1}} \glsxtrnewgls{pkg.}{\sty} \glsxtrnewgls{cls.}{\cls} \glsxtrnewgls{opt.}{\opt} \glsxtrnewgls{env.}{\env} \glsxtrnewgls{ctr.}{\ctr} \glsxtrnewgls{dual.}{\ac} \glsxtrnewgls[format=glsignore]{ext.}{\ext} \glsxtrnewgls{app.}{\app} \glsxtrnewgls{switch.}{\switch} \glsxtrnewgls{idx.mod.}{\cmdmod} \newdglsfield{symbol}{\sym} \newcommand{\optval}[2]{% \texorpdfstring {\gls{opt.#1}\optfmt{\dequals#2}}% {\glsentrytext{opt.#1}=#2}% } \newcommand{\optvalm}[2]{% \texorpdfstring {\gls{opt.#1}\optfmt{\dequals\marg{#2}}}% {\glsentrytext{opt.#1}=\marg{#2}}% } \newcommand{\opteqvalref}[2]{% \texorpdfstring {\gls!{opt.#1}\optfmt{\dequals}\gls{optval.#1.#2}}% {\glsentrytext{opt.#1}=\glsentrytext{optval.#1.#2}}% } \newcommand{\optvalref}[2]{% \texorpdfstring {\gls{optval.#1.#2}}% {\glsentrytext{optval.#1.#2}}% } \newcommand{\optvalrefeq}[3]{% \texorpdfstring {\gls{optval.#1.#2}\optfmt{\dequals#3}}% {\glsentrytext{optval.#1.#2}=#3}% } \newcommand{\childoptval}[3]{% \texorpdfstring {\gls{optval.#1.#2}\optfmt{\dequals#3}}% {\glsentrytext{optval.#1.#2}=#3}% } \newcommand{\qt}[1]{\texorpdfstring{``#1''}{"#1"}} \newcommand{\qtt}[1]{\qt{\,\texttt{#1}\,}} \newcommand{\booktitle}[1]{\emph{#1}} \newcommand*{\fmtorcode}[2]{#1{#2}} \newcommand*{\appfmt}[1]{\texorpdfstring{\texttt{#1}}{#1}} \newcommand*{\styfmt}[1]{\texorpdfstring{\textsf{#1}}{#1}} \newcommand*{\clsfmt}[1]{\texorpdfstring{\textsf{#1}}{#1}} \newcommand*{\envfmt}[1]{\texorpdfstring{\textsf{#1}}{#1}} \newcommand*{\optfmt}[1]{\texorpdfstring{\texttt{#1}}{#1}} \newcommand*{\csoptfmt}[1]{\texorpdfstring{\textcolor{cs}{\optfmt{#1}}}{#1}} \newcommand*{\styoptfmt}[1]{\texorpdfstring{\textcolor{styopt}{\optfmt{#1}}}{#1}} \newcommand*{\clsoptfmt}[1]{\texorpdfstring{\textcolor{styopt}{\optfmt{#1}}}{#1}} \newcommand*{\ctrfmt}[1]{\texorpdfstring{\textsf{#1}}{#1}} \edef\longswitch{\string-\/\string-} \edef\pdflongswitch{\string-\string-} \newcommand*{\longargfmt}[1]{% \texorpdfstring{\texttt{\longswitch #1}}{\pdflongswitch#1}% } \newcommand*{\shortargfmt}[1]{\texorpdfstring{\texttt{-#1}}{\string-#1}} % \defsemanticcmd[colour]{cs}{font-cs}{prefix} \newcommand*{\defsemanticcmd}[4][]{% \ifstrempty{#1}% {% \ifstrempty{#3}% {% \newcommand#2[1]{#4##1}% } {% \newcommand#2[1]{\texorpdfstring{\fmtorcode#3{#4##1}}{#4##1}}% }% }% {% \ifstrempty{#3}% {% \newcommand#2[1]{\texorpdfstring{{\color{#1}#4##1}}{#4##1}}% }% {% \newcommand#2[1]{\texorpdfstring{\fmtorcode#3{\color{#1}#4##1}}{#4##1}}% }% }% } \newcommand{\faded}[1]{\texorpdfstring{\textcolor{gray}{#1}}{#1}} \newrobustcmd*{\texmeta}[1]{{\normalfont$\langle$\emph{#1}$\rangle$}} \newcommand*{\meta}[1]{% \texorpdfstring{\ifmmode\text{\texmeta{#1}}\else\texmeta{#1}\fi}{\string<#1\string>}% } \newcommand*{\oarg}[1]{\discretionary{}{}{}[#1]} \newcommand*{\oargm}[1]{\oarg{\meta{#1}}} % To prevent lonely [ and ] from upsetting the syntax highlighter: \newrobustcmd*{\nlctopensqbracket}{[} \newrobustcmd*{\nlctclosesqbracket}{]} % To prevent lonely ( and ) from upsetting the syntax highlighter: \newrobustcmd*{\nlctopenparen}{(} \newrobustcmd*{\nlctcloseparen}{)} \newcommand*{\marg}[1]{\texorpdfstring {\discretionary{}{}{}\char`\{#1\char`\} \discretionary{}{}{}}% {\{#1\}}% } \newcommand*{\margm}[1]{\marg{\meta{#1}}} \newcommand*{\metaboolean}{\meta{boolean}} \newcommand*{\keyval}{\meta{key}\dequals\meta{value}} \newcommand*{\keyvallist}{\meta{key\dequals value list}} \newcommand*{\keyeqvalue}[2]{#1=#2} \newcommand*{\keyeqvaluem}[2]{#1=\marg{#2}} \newcommand*{\file}[1]{% \texorpdfstring {\gls{file.#1}}% {#1}% } \newcommand{\homedir}{\string~}% v1.11 \newcommand{\homefilefmt}[1]{\filefmt{\homedir\slash#1}} \newcommand*{\filefmt}[1]{\texorpdfstring{\texttt{#1}}{#1}} \newcommand*{\extfmt}{\filefmt} % \metafilefmt{prefix}{val}{suffix} -> prefixsuffix \newcommand*{\metafilefmt}[3]{% \filefmt{#1}\discretionary{}{}{}\meta{#2}\discretionary{}{}{}\filefmt{#3}% } % \metametafilefmt{prefix}{val1}{mid}{val2}{suffix} -> % prefixmidsuffix \newcommand*{\metametafilefmt}[5]{% \filefmt{#1}\discretionary{}{}{}\meta{#2}\discretionary{}{}{}\filefmt{#3}% \discretionary{}{}{}\meta{#4}\discretionary{}{}{}\filefmt{#5}% } \newcommand*{\BibTeX}{\hologo{BibTeX}} \newcommand*{\eTeX}{\hologo{eTeX}} \newcommand*{\XeLaTeX}{\hologo{XeLaTeX}} \newcommand*{\LuaLaTeX}{\hologo{LuaLaTeX}} \newcommand*{\pdfLaTeX}{\hologo{pdfLaTeX}} \newcommand*{\LuaTeX}{\hologo{LuaTeX}} \newcommand*{\XeTeX}{\hologo{XeTeX}} \newcommand*{\pdfTeX}{\hologo{pdfTeX}} \ifdef\GlsXtrSetPlusModifier {\GlsXtrSetPlusModifier{format=glsnumberformat}}{} \ifdef\GlsXtrSetAltModifier {\GlsXtrSetAltModifier{!}{format=glsignore}}{} \newcommand{\@@mainmatteronly@op}[1]{% \glsxtrtitleorpdforheading{#1}{}{}% } \newcommand{\@mainmatteronly}[1]{% \texorpdfstring{\protect\@@mainmatteronly{#1}}{}% } \let\mainmatteronly\@mainmatteronly \let\@@mainmatteronly\@@mainmatteronly@op \ifdef\frontmatter { \appto\frontmatter{% \GlsXtrSetDefaultNumberFormat{glsignore}% \let\mainmatteronly\@gobble \let\@@mainmatteronly\@gobble } } {% } \ifdef\mainmatter { \appto\mainmatter{% \GlsXtrSetDefaultNumberFormat{glsnumberformat}% \let\mainmatteronly\@mainmatteronly \let\@@mainmatteronly\@@mainmatteronly@op } } {} \ifdef\backmatter { \appto\backmatter{% \def\theHchapter{backmatter.\arabic{chapter}}% \setupglossaries{numberedsection=nolabel}}% } {} \ifdef\appendix { \ifdef\chapter { \appto\appendix{% \renewcommand{\Hy@chapapp}{chapter}% } } {} } {} \ifdef\abstract {} { \providecommand{\abstractname}{Abstract} \newenvironment{abstract}{\begin{center}\textbf{\abstractname}\end{center}\quotation}{\endquotation} } \newcommand{\cmddefbookmarkleveloffset}{1} \newcommand*{\setcounterlevels}[2]{% \edef\cmddefbookmarklevel{\number\numexpr#1+\cmddefbookmarkleveloffset }% \def\cmddefcounter{#2}% \let\pkgdefbookmarklevel\cmddefbookmarklevel \def\pkgdefcounter{#2}% \let\clsdefbookmarklevel\cmddefbookmarklevel \def\clsdefcounter{#2}% \def\currentcounterlevel{#1}% \def\currentcounter{#2}% } \ifdef\chapter { \nlct@ifkoma { \AddtoDoHook{heading/preinit/chapter}{\setcounterlevels{0}{chapter}} } { \preto\chapter{\setcounterlevels{0}{chapter}} } \setcounterlevels{0}{chapter} } { \setcounterlevels{1}{section} } \nlct@ifkoma { \AddtoDoHook{heading/preinit/part}{\setcounterlevels{-1}{part}} \AddtoDoHook{heading/preinit/section}{\setcounterlevels{1}{section}} \AddtoDoHook{heading/preinit/subsection}{\setcounterlevels{2}{subsection}} \AddtoDoHook{heading/preinit/subsubsection}{\setcounterlevels{3}{subsubsection}} \AddtoDoHook{heading/preinit/paragraph}{\setcounterlevels{4}{paragraph}} \AddtoDoHook{heading/preinit/subparagraph}{\setcounterlevels{4}{subparagraph}} } { \preto\part{\setcounterlevels{-1}{part}} \preto\section{\setcounterlevels{1}{section}} \preto\subsection{\setcounterlevels{2}{subsection}} \preto\subsubsection{\setcounterlevels{3}{subsubsection}} \preto\paragraph{\setcounterlevels{4}{paragraph}} \preto\subparagraph{\setcounterlevels{4}{subparagraph}} } \newcommand{\mainfmt}[1]{\glsnumberformat{#1}} % \createtarget{label}{text} \newcommand*{\createtarget}[2]{% \glstarget{#1}{#2}\xGlsXtrSetField{#1}{target}{\glolinkprefix #1}% } \renewcommand*{\GlsXtrStandaloneEntryName}[1]{% \createtarget{#1}{\glossentryname{#1}}% } \renewcommand*{\GlsXtrStandaloneEntryOther}[2]{% \createtarget{#1}{\glossentrynameother{#1}{#2}}% } % \targetorhyperlink{label}{text} \newcommand*{\targetorhyperlink}[2]{% \glsxtrifhasfield*{target}{#1}% {% \glshyperlink[{#2}]{#1}% }% {% \createtarget{#1}{#2}% }% } \newcommand*{\linkedentryname}[1]{% {\setkeys{printgloss}{target=true}\targetorhyperlink{#1}{\glossentryname{#1}}}% } \newrobustcmd{\aliasref}[1]{\glshyperlink{#1}} \newrobustcmd{\initvalref}[1]{\ifglsentryexists{#1}{\glshyperlink{#1}}{\cmd{#1}}} \newrobustcmd{\initvalopt}[2]{% \ifstrempty{#1}% {\ifglsentryexists{opt.#2}{\glshyperlink{opt.#2}}{\optfmt{#2}}}% {\ifglsentryexists{opt.#1.#2}{\glshyperlink{opt.#1.#2}}{\optfmt{#2}}}% } \newcommand*{\optvaldefcounter}{} \newcommand*{\inlineidxdef}[1]{% \mainmatteronly{\mainglsadd{idx.#1}{}}% \glsxtrglossentry{idx.#1}% } \newcommand*{\Inlineidxdef}[1]{% \bgroup \let\glossentryname\Glossentryname \mainmatteronly{\mainglsadd{idx.#1}{}}% \glsxtrglossentry{idx.#1}% \egroup } % v1.09: added idx. prefix to \glsunset \newrobustcmd*{\inlineidxfdef}[1]{% \mainmatteronly{\mainglsadd{idx.#1}{}}% \glsxtrglossentryother{}{idx.#1}{first}% \glsunset{idx.#1}% } % v1.09: added idx. prefix to \glsunset \newrobustcmd*{\inlineidxpdef}[1]{% \mainmatteronly{\mainglsadd{idx.#1}{}}% \glsxtrglossentryother{}{idx.#1}{plural}% \glsunset{idx.#1}% } \newrobustcmd*{\inlineswitchdef}[1]{% \mainmatteronly{\mainglsadd{switch.#1}{}}% \glsxtrglossentry{switch.#1}% } \newrobustcmd*{\inlineglsdef}[2][cmddef]{% \mainglsadd{#2}{#1}% \glsxtrglossentry{#2}% } \newrobustcmd*{\inlineoptdef}[2][optdef]{% \mainglsadd{opt.#2}{#1}% \glsxtrglossentry{opt.#2}% } % v1.10 \newrobustcmd*{\inlinepkgdef}[2][pkgdef]{% \mainglsadd{pkg.#2}{#1}% \glsxtrglossentry{pkg.#2}% } % v1.11 \newrobustcmd*{\inlinefiledef}[2][filedef]{% \mainglsadd{file.#2}{#1}% \glsxtrglossentry{file.#2}% } % v1.11 \newrobustcmd*{\inlineappdef}[2][appdef]{% \mainglsadd{app.#2}{#1}% \glsxtrglossentry{app.#2}% } \newcommand*{\mainglsadd}[3][]{% \ifstrempty{#3}% {\def\mainglsaddcounter{}}% {% \ifcsdef{#3counter}% {\letcs\mainglsaddcounter{#3counter}}% {\let\mainglsaddcounter\currentcounter}% }% \ifdefempty\mainglsaddcounter{}{\glsadd[counter=\mainglsaddcounter,format=mainfmt]{#2}}% \glsadd[format=mainfmt,#1]{#2}% } % standalone targets \newcommand{\entrydefsection}{\section} \newcommand{\entrysec}[2][\entrydefsection]{% #1{\glsxtrglossentry{#1}% \glsxtrtitleorpdforheading{\mainglsadd{#1}{entrydef}}{}{}}% } % doesn't display any text but creates the target and principle % location \newrobustcmd{\maindef}[2][]{% \glsdoifexists{#2}% {% \mainglsadd[#1]{#2}{maindef}\createtarget{#2}{\strut}% }% } \newrobustcmd*{\cmddef}{\@ifstar\s@cmddef\@cmddef} \newcommand*{\@cmddef}[2][]{% \vskip 1sp plus 2ex\relax \pdfbookmark[\cmddefbookmarklevel]{\glsentryname{#2}}{csdef.#2}% \nopagebreak\s@cmddef[#1]{#2}% \nopagebreak\ignorespaces } \newcommand*{\cmdnotefmt}[1]{\mbox{#1}} \newcommand*{\cmddefsyntax}[2]{% \mainglsadd[#1]{#2}{cmddef}% \texttt{\glsxtrglossentry{#2}\syntax{#2}}% } \newcommand*{\optdefsyntax}[2]{% \mainglsadd[#1]{opt.#2}{optdef}% \texttt{\glsxtrglossentry{opt.#2} \glsxtrifhasfield{syntax}{opt.#2}{\dequals\glscurrentfieldvalue}{}}% } \newcommand{\@cmddef@init}{% \let\csfmtfont\@firstofone \def\cmdfont##1{\textbf{\texttt{##1}}}% \def\explTFsuffix{\@explboolsyntaxfmt{TF}}% } \newcommand*{\s@cmddef}[2][]{% \def\cmdtitle{\icon{definition}}% \def\postnote{}% \ifnotdefaultstatus{#2}{\def\cmdtitle{\statussym}\def\postnote{\hfill\statustext}}{}% \begin{pinnedbox}[title=\cmdtitle] \@cmddef@init \gathermodifiers{#2}% \gathervariants{#2}% \cmddefsyntax{#1}{#2}% \def\tagsep{\hfill}% \ifdefempty\nlctmodifierlist {% \ifdefempty\nlctvariantlist {}% {\tagsep\summarytagfmt{\nlctvarianttag}\nlctvariantlist\relax \let\tagsep\space }% }% {\tagsep\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist\relax \let\tagsep\space }% \glsxtrifhasfield{initvalue}{#2} {\tagsep\summarytagfmt{initial}\texttt{\glscurrentfieldvalue}}% {}% \ifdefempty\nlctmodifierglslist{}% {\@for\@nlct@label:=\nlctmodifierglslist\do {\par\cmddefsyntax{#1}{\@nlct@label}}}% \glsxtrifhasfield{explsuffix}{#2}% {% \let\explsuffix\glscurrentfieldvalue \let\explTFsuffix\relax \let\TFsyntax\relax \par\texttt{\glsentryname{#2}% \syntax{#2}}% }% {}% \glsxtrifhasfield*{note}{#2}% {% \ifx\cmdnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\cmdnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{pinnedbox}% \noindent\ignorespaces } \newcommand{\gathermodifiers}[1]{% \protected@edef\nlctcmddeflabel{#1}% \def\nlctmodifiertag{}% \def\nlctmodifierlist{}% \def\nlctmodifierglslist{}% \glsxtrforcsvfield*{#1}{modifiers}{\cmddefmodifierhandler}% } \newcommand{\cmddefmodifierhandler}[1]{% \ifglsentryexists{\nlctcmddeflabel#1}% {% \ifdefempty\nlctmodifierglslist {\eappto\nlctmodifierglslist{\nlctcmddeflabel#1}}% {\eappto\nlctmodifierglslist{,\nlctcmddeflabel#1}}% }% {% \ifdefempty\nlctmodifierlist {\def\nlctmodifiertag{modifier}}% {\def\nlctmodifiertag{modifiers}\appto\nlctmodifierlist{ }}% \ifglsentryexists{idx.mod.#1}% {\eappto\nlctmodifierlist{\noexpand\gls{idx.mod.#1}}}% {\eappto\nlctmodifierlist{#1}}% }% } \newcommand{\gathervariants}[1]{% \protected@edef\nlctcmddeflabel{#1}% \def\nlctvarianttag{}% \def\nlctvariantlist{}% \def\nlctvariantglslist{}% \glsxtrforcsvfield*{#1}{variants}{\cmddefvarianthandler}% } \newcommand{\cmddefvarianthandler}[1]{% \ifglsentryexists{\nlctcmddeflabel:#1}% {% \ifdefempty\nlctvariantglslist {\eappto\nlctvariantglslist{\nlctcmddeflabel#1}}% {\eappto\nlctvariantglslist{,\nlctcmddeflabel#1}}% }% {% \ifdefempty\nlctvariantlist {\def\nlctvarianttag{variant}}% {\def\nlctvarianttag{variants}\appto\nlctvariantlist{ }}% \eappto\nlctvariantlist{\noexpand\code{#1}}% }% } \newrobustcmd*{\envdef}{\@ifstar\s@envdef\@envdef} \newcommand*{\@envdef}[2][]{% \pdfbookmark[\cmddefbookmarklevel]{\glsentryname{env.#2}}{env.#2}% \nopagebreak\s@envdef[#1]{#2}% } \newsavebox\entrynamebox \newcommand{\enventryname}[1]{% \createtarget{#1}% {% \texttt {% \sbox\entrynamebox {% \csfmt{begin}% \marg{\glossentryname{#1}}% \glsxtrifhasfield{syntax}{#1}{\glscurrentfieldvalue}{}% \meta{content}\csfmt{end}\marg{\glsentryname{#1}}% }% \settowidth\dimen@{\usebox\entrynamebox}% \ifdim\dimen@>0.8\linewidth \csfmt{begin}% \marg{\glossentryname{#1}}% \glsxtrifhasfield{syntax}{#1}{\glscurrentfieldvalue}{}% \endgraf\meta{content}\endgraf\csfmt{end}\marg{\glsentryname{#1}}% \else \usebox\entrynamebox \fi }% }% } \newcommand*{\s@envdef}[2][]{% \def\envtitle{\icon{definition}}% \def\postnote{}% \ifnotdefaultstatus{env.#2}{\def\envtitle{\statussym}\def\postnote{\statustext}}{}% \begin{pinnedbox}[title=\envtitle] \let\GlsXtrStandaloneEntryName\enventryname \def\envfmt##1{\textbf{\texttt{##1}}}% \mainglsadd[#1]{env.#2}{cmddef}% \glsxtrglossentry{env.#2}% \glsxtrifhasfield*{note}{env.#2}% {% \ifx\cmdnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\cmdnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{pinnedbox}% \noindent\ignorespaces } \newrobustcmd*{\pkgdef}{\@ifstar\s@pkgdef\@pkgdef} \newcommand*{\@pkgdef}[2][]{% \pdfbookmark[\pkgdefbookmarklevel]{\glsentryname{pkg.#2}.sty}{pkgdef.#2}% \nopagebreak\s@pkgdef[#1]{#2}% } \newcommand{\pkgentryname}[1]{% \createtarget{#1}% {% \texttt {% \csfmt{usepackage}% \glsxtrifhasfield{syntax}{#1}{[\glscurrentfieldvalue]}{}% \marg{\glossentryname{#1}}% }% }% } \newcommand{\pkgnotefmt}[1]{#1} \newcommand*{\s@pkgdef}[2][]{% \def\pkgtitle{\icon{definition}}% \def\postnote{}% \ifnotdefaultstatus{pkg.#2}{\def\pkgtitle{\statussym}\def\postnote{\statustext}}{}% \begin{pinnedbox}[title=\pkgtitle] \let\GlsXtrStandaloneEntryName\pkgentryname \def\styfmt##1{\textbf{\texttt{##1}}}% \mainglsadd[#1]{pkg.#2}{pkgdef}% \glsxtrglossentry{pkg.#2}% \glsxtrifhasfield*{note}{pkg.#2}% {% \ifx\pkgnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\pkgnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{pinnedbox}% \noindent\ignorespaces } \newrobustcmd*{\clsdef}{\@ifstar\s@clsdef\@clsdef} \newcommand*{\@clsdef}[2][]{% \pdfbookmark[\clsdefbookmarklevel]{\glsentryname{cls.#2}.sty}{clsdef.#2}% \nopagebreak\s@clsdef[#1]{#2}% } \newcommand{\clsentryname}[1]{% \createtarget{#1}% {% \texttt {% \csfmt{documentclass}% \glsxtrifhasfield{syntax}{#1}{[\glscurrentfieldvalue]}{}% \marg{\glossentryname{#1}}% }% }% } \newcommand*{\s@clsdef}[2][]{% \def\clstitle{\icon{definition}}% \def\postnote{}% \ifnotdefaultstatus{cls.#2}{\def\clstitle{\statussym}\def\postnote{\statustext}}{}% \begin{pinnedbox}[title=\clstitle] \let\GlsXtrStandaloneEntryName\clsentryname \def\clsfmt##1{\textbf{\texttt{##1}}}% \mainglsadd[#1]{cls.#2}{clsdef}% \glsxtrglossentry{cls.#2}% \glsxtrifhasfield*{note}{cls.#2}% {% \ifx\pkgnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\pkgnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{pinnedbox}% \noindent\ignorespaces } \ExplSyntaxOn \newcommand*{\defaultoptdefbookmarklevel}{ \int_eval:n { \currentcounterlevel + \c_one_int } } \ExplSyntaxOff \newcommand*{\optdefbookmarklevel}{\defaultoptdefbookmarklevel} \newrobustcmd*{\optiondef}{\@ifstar\s@optiondef\@optiondef} \NewDocumentCommand{\@optiondef}{ t+ o m }{% \IfBooleanTF{#1}% {% \edef\optdefbookmarklevel{\defaultoptdefbookmarklevel}% }% {% \IfValueTF{#2}% {% \edef\optdefbookmarklevel{\number#2}% }% {% \glsifcategory{opt.#3}{commandoption}% {% \edef\optdefbookmarklevel{\number\numexpr\cmddefbookmarklevel+1 }% }% {% \edef\optdefbookmarklevel{\defaultoptdefbookmarklevel}% }% }% }% \pdfbookmark[\optdefbookmarklevel]{\glsentryname{opt.#3}}{optdef.#3}% \nopagebreak\s@optiondef{#3}% } \newcommand{\optnotefmt}[1]{#1} \newcommand{\optiondefhook}{}% v1.11 \newcommand*{\s@optiondef}[1]{% \bgroup \optiondefhook \getinitordefval{opt.#1}% \def\postnote{}% \ifnotdefaultstatus{opt.#1}% {\appto\settingstitle{\statussym}\def\postnote{\statustext}}% {}% \begin{settingsbox}[title=\settingstitle, colback=optiondefbackground, colbacktitle=optiondefbackground ]% \def\optfmt##1{\textbf{\texttt{##1}}}% \mainglsadd{opt.#1}{optdef}\glsxtrglossentry{opt.#1}% \glsxtrifhasfield{syntax}{opt.#1}{\texttt{=\glscurrentfieldvalue}}{}% \ifdefempty\initordefval{}{\hfill\initordefval}% \glsxtrifhasfield*{note}{opt.#1}% {% \ifx\optnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\optnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{settingsbox}% \egroup \noindent\ignorespaces } \newrobustcmd*{\optionvaldef}{\@ifstar\s@optionvaldef\@optionvaldef} \newcommand*{\@optionvaldef}[2]{% \edef\optvaldefbookmarklevel{\number\numexpr\optdefbookmarklevel+1 }% \pdfbookmark[\optvaldefbookmarklevel]{\glsentryname{optval.#1.#2}}{optvaldef.#1.#2}% \nopagebreak\s@optionvaldef{#1}{#2}% } \newcommand*{\s@optionvaldef}[2]{% \begin{settingsbox}[title={\icon{optionvalue}}, colback=optionvaluedefbackground, colbacktitle=optionvaluedefbackground ]% \def\optfmt##1{\textbf{\texttt{##1}}}% \mainglsadd{optval.#1.#2}{optvaldef}% \gls!{opt.#1}\dequals\glsxtrglossentry{optval.#1.#2}% \def\summary@sep{\hfill}% \glsxtrifhasfield*{alias}{optval.#1.#2}% {% \summary@sep\summarytagfmt{alias}% \expandafter\aliasref\expandafter{\glscurrentfieldvalue}% \def\summary@sep{ }% }{}% \ifnotdefaultstatus{optval.#1.#2}{\summary@sep\statussym}{}% \glsxtrifhasfield{note}{optval.#1.#2}% {% \ifx\optnotefmt\@gobble \else \par\hfill\optnotefmt\glscurrentfieldvalue \fi }{}% \end{settingsbox}% \noindent\ignorespaces } \newrobustcmd*{\inlineoptionvaldef}[2]{% \bgroup \ttfamily \mainglsadd{optval.#1.#2}{optvaldef}% \textbf{\glsxtrglossentry{optval.#1.#2}}% \glsxtrifhasfield{syntax}{optval.#1.#2}{\dhyphen\glscurrentfieldvalue}{}% \ifnotdefaultstatus{optval.#1.#2}{~\statussym}{}% :\space \glsxtrifhasfield{alias}{optval.#1.#2}% {% Synonym of \expandafter\aliasref\expandafter{\glscurrentfieldvalue}.% }% {% \glossentrydesc{optval.#1.#2}\glspostdescription \glsxtrifhasfield{seealso}{optval.#1.#2}% {% See also \glsxtrseelist{\glscurrentfieldvalue}.% }% {}% }% \egroup } \newcommand{\appnotefmt}[1]{#1} \newrobustcmd*{\appdef}[1]{% \getinitordefval{app.#1}% \def\postnote{}% \begin{terminal}% \def\appfmt##1{\textbf{##1}}% \mainglsadd{app.#1}{appdef}\glsxtrglossentry{app.#1}% \glsxtrifhasfield{syntax}{app.#1}{\space \glscurrentfieldvalue}{}% \glsxtrifhasfield*{note}{app.#1}% {% \ifx\appnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\appnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{terminal}% \noindent\ignorespaces } \newrobustcmd*{\switchdef}[1]{% \getinitordefval{switch.#1}% \def\postnote{}% \ifnotdefaultstatus{switch.#1}% {\appto\settingstitle{\statussym}\def\postnote{\statustext}}% {}% \begin{settingsbox}[title={\settingstitle}]% \mainglsadd{switch.#1}{switchdef}\glsxtrglossentry{switch.#1}% \glsxtrifhasfield{syntax}{switch.#1}{\space \glscurrentfieldvalue}{}% \glsxtrifhasfield*{note}{switch.#1}% {% \ifx\switchnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\switchnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{settingsbox}% \noindent\ignorespaces } \newrobustcmd{\mirrorsamplefile}[1]{% \ctanmirrornofn{macros/latex/contrib/\thispackagename/\filedownloadsubpath/#1}{\nolinkurl{#1}}% } \newcommand{\filedownloadsubpath}{samples/} \newcommand{\filedownloadlink}[1]{\href{\nlctdownloadlink{\filedownloadsubpath #1}}{\faDownload}} \newcommand{\filetag}[1]{\faFileO\ifnlctdownloadlinks\filedownloadlink{#1}\fi\ } \newcommand*{\filedef}[1]{% \par\medskip \bgroup \raggedright \filetag{#1}% \ttfamily \mainglsadd{file.#1}{filedef}% \glsxtrglossentry{file.#1}% \egroup \par\medskip\ignorespaces } \newrobustcmd*{\summarytagfmt}[1]{\textnormal{\em #1:} } \newcommand*{\getinitordefval}[1]{% \let\currentsyntax\@empty \def\settingstitle{\icon{valuesetting}}% \def\initordefval{}% \glsxtrifhasfield*{alias}{#1}% {% \edef\initordefval{\summarytagfmt{alias}% \noexpand\aliasref{\expandonce\glscurrentfieldvalue}% \noexpand\global\noexpand\let\noexpand\do@alias\noexpand\@secondoftwo }% }% {}% \glsxtrifhasfield*{syntax}{#1}% {% \let\currentsyntax\glscurrentfieldvalue \glsxtrifhasfield*{defaultvalue}{#1}% {% \ifdefempty\initordefval{}{\appto\initordefval{; }}% \eappto\initordefval{\summarytagfmt{default}% \noexpand\optfmt{\expandonce\glscurrentfieldvalue}}% }% {}% \glsxtrifhasfield*{initvalue}{#1}% {% \ifdefempty\initordefval{}{\appto\initordefval{; }}% \eappto\initordefval{\summarytagfmt{initial}% \noexpand\optfmt{\expandonce\glscurrentfieldvalue\relax}}% \ifx\currentsyntax\metaboolean \ifdefstring\glscurrentfieldvalue{true} {% \def\settingstitle{\icon{toggleonsetting}}% }% {% \ifdefstring\glscurrentfieldvalue{false} {% \def\settingstitle{\icon{toggleoffsetting}}% }% {}% }% \fi }% {% %\ifdefempty\initordefval{}{\appto\initordefval{; }}% %\appto\initordefval{\textit{initial:} none}% }% }% {\def\settingstitle{\icon{novaluesetting}}}% } \newcommand*{\ctrdefbookmarklevel}{\cmddefbookmarklevel} \newrobustcmd*{\ctrdef}{\@ifstar\s@ctrdef\@ctrdef} \newcommand*{\@ctrdef}[1]{% \let\ctrdefbookmarklevel\cmddefbookmarklevel \pdfbookmark[\ctrdefbookmarklevel]{#1}{ctrdef.#1}% \nopagebreak\s@ctrdef{#1}% } \newcommand*{\s@ctrdef}[1]{% \def\settingstitle{\icon{counter}}% \ifnotdefaultstatus{ctr.#1}% {\appto\settingstitle{\statussym}\def\postnote{\statustext}}% {}% \begin{pinnedbox}[title=\settingstitle]% \def\ctrfmt##1{\textbf{\texttt{##1}}}% \mainglsadd{ctr.#1}{ctrdef}\glsxtrglossentry{ctr.#1}% \glsxtrifhasfield*{note}{ctr.#1}% {% \ifx\cmdnotefmt\@gobble \ifdefempty\postnote{}{\preto\postnote{\hfill}}% \else \par\hfill\cmdnotefmt\glscurrentfieldvalue \ifdefempty\postnote{}{\preto\postnote{\space}}% \fi }% {\ifdefempty\postnote{}{\preto\postnote{\hfill}}}% \postnote \end{pinnedbox}% \noindent\ignorespaces } % Defining .bib entries \newwrite\nlctuserguidebib \newcommand{\glsbibwriteentry}[3]{% {% \edef\dhyphen{\string-}\let\-\empty\let\dsb\empty \protected@edef\entrylabel{#2}% \let\dhyphen\empty\let\dsb\dunderscore \immediate\write\nlctuserguidebib{@#1{\entrylabel#3}}% }% } \newcommand{\glsbibwritefield}[2]{,^^J#1={\detokenize{#2}}} \glsaddstoragekey{modifiers}{}{\modifiers} \glsaddstoragekey{variants}{}{\variants} \glsaddstoragekey{base}{}{\fnbase} \glsaddstoragekey{explsuffix}{}{\explsuffixfield} \glsaddstoragekey{syntax}{}{\syntax} \glsaddstoragekey{defaultvalue}{}{\optdefval} \glsaddstoragekey{initvalue}{}{\optinitval} \glsaddstoragekey{status}{default}{\entrystatus} \glsaddstoragekey{note}{}{\note} \glsaddstoragekey{providedby}{}{\providedbyinfo} \glsaddstoragekey{pdftitlecasename}{}{\pdftitlecasename} \glsaddstoragekey{extra}{}{\glsextra} \glsaddstoragekey{defaultkeys}{}{\defaultkeys} \renewcommand{\glslinkpresetkeys}{% \glsxtrifhasfield*{defaultkeys}{\glslabel} {\expandafter\setupglslink\expandafter{\glscurrentfieldvalue}}% {}% } \newcommand{\conditionsyntax}{ \meta{true}\csfmt{else} \meta{false}\csfmt{fi}} \newrobustcmd{\@explboolsyntaxfmt}[1]{\underline{\emph{#1}}} \newcommand{\explsuffix}{} \newcommand{\explTFsuffix}{TF} \newcommand{\TFsyntax}{\margm{true} \margm{false}} \newrobustcmd{\initvalnotefmt}[1]{\textrm{\em #1}} \newcommand{\nlctuserguidebibextrapreamble}{} \newcommand*{\nlctuserguidegls}[2][]{% \bgroup \let\field\glsbibwritefield \def\common{\field{defaultkeys}{format=glsignore}}% \def\syntax{\glsbibwritefield{syntax}}% \def\parent{\glsbibwritefield{parent}}% \def\inpackage##1{\glsbibwritefield{parent}{pkg.##1}}% \def\inclass##1{\glsbibwritefield{parent}{cls.##1}}% \def\inapp##1{\glsbibwritefield{parent}{app.##1}}% \def\providedby{\glsbibwritefield{providedby}}% \def\name{\glsbibwritefield{name}}% \def\desc{\glsbibwritefield{description}}% \def\defval{\glsbibwritefield{defaultvalue}}% \def\defvalempty{\glsbibwritefield{defaultvalue}{\initvalnotefmt{empty}}}% \def\initval{\glsbibwritefield{initvalue}}% \def\initvalvaries{\glsbibwritefield{initvalue}{\initvalnotefmt{varies}}}% \def\initvalempty{\glsbibwritefield{initvalue}{\initvalnotefmt{empty}}}% \def\initvalcs##1{\glsbibwritefield{initvalue}{\initvalref{##1}}}% \def\initvalopt##1##2{\glsbibwritefield{initvalue}{\initvalopt{##1}{##2}}}% \def\note{\glsbibwritefield{note}}% \def\deprecated{\glsbibwritefield{status}{deprecated}}% \def\banned{\glsbibwritefield{status}{banned}}% \def\deprecatedbanned{\glsbibwritefield{status}{deprecatedbanned}}% \def\gpunc##1##2{\glsbibwriteentry{punctuation}{idx.##1}{##2}}% \def\gidx##1##2{\glsbibwriteentry{index}{idx.##1}{\field{name}{##1}##2}}% \def\gidxpl##1##2{\glsbibwriteentry{indexplural}{idx.##1}{\field{text}{##1}##2}}% \def\gfile##1##2{\glsbibwriteentry{file}{file.##1}{\field{name}{\filefmt{##1}}##2}}% \def\gfilemeta##1##2##3##4{\glsbibwriteentry{file}{file.##1##2##3}{\field{name}{\metafilefmt{##1}{##2}{##3}}##4}}% \def\gfilemetameta##1##2##3##4##5##6{\glsbibwriteentry{file}{file.##1##2##3##4##5}{\field{name}{\metametafilefmt{##1}{##2}{##3}{##4}{##5}}##6}}% \def\gext##1##2{\glsbibwriteentry{fileformat}{ext.##1}{\field{parent}{fileformat}\field{name}{\extfmt{##1}}##2}}% \def\gcmd##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}##2}}% \def\gcmdpunc##1##2##3{\glsbibwriteentry{command}{##1}{\field{name}{\cspuncfmt{##2}}##3}}% \def\gcond##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}\syntax{\conditionsyntax}##2}}% \def\gexplcond##1##2##3{\glsbibwriteentry{command}{##1:##2}{\field{name}{\csfmt{##1\explsuffix:##2\explTFsuffix}}##3}}% \def\gexplpred##1##2##3{\glsbibwriteentry{command}{##1:##2}{\field{name}{\csfmt{##1\explsuffix:##2\explTFsuffix}}\field{explsuffix}{\dsb p}##3}}% \def\gfn##1##2##3##4{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1:##2}}\field{variants}{##3}\field{base}{##1}##4}}% \def\gcmdmeta##1##2##3##4{\glsbibwriteentry{command}{##1##2##3}{\field{name}{\csmetafmt{##1}{##2}{##3}}##4}}% \def\gcmdmetameta##1##2##3##4##5##6{\glsbibwriteentry{command}{##1##2##3##4##5}{\field{name}{\csmetametafmt{##1}{##2}{##3}{##4}{##5}}##6}}% \def\gmod##1##2{\glsbibwriteentry{punctuation}{idx.mod.##1}{##2}}% \def\gcmds##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}\field{modifiers}{*}##2}}% \def\gcmdsp##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}\field{modifiers}{*,+}##2}}% \def\gpunccmd##1##2##3{\glsbibwriteentry{punctuation}{##1}{\field{name}{\csfmt{##2}}##3}}% \def\gpkg##1##2{\glsbibwriteentry{package}{pkg.##1}{\field{name}{\styfmt{##1}}##2}}% \def\gcls##1##2{\glsbibwriteentry{class}{cls.##1}{\field{name}{\clsfmt{##1}}##2}}% \def\genv##1##2{\glsbibwriteentry{environment}{env.##1}{\field{name}{\envfmt{##1}}##2}}% \def\gctr##1##2{\glsbibwriteentry{counter}{ctr.##1}{\field{name}{\ctrfmt{##1}}##2}}% \def\gopt##1##2{\glsbibwriteentry{option}{opt.##1}{\field{name}{\optfmt{##1}}##2}}% \def\gcsopt##1##2{\glsbibwriteentry{commandoption}{opt.##1}{\field{name}{\csoptfmt{##1}}##2}}% \def\gcsboolopt##1##2{\glsbibwriteentry{commandoption}{opt.##1}% {\field{name}{\csoptfmt{##1}}\syntax{\meta{boolean}}\defval{true}##2}}% \def\gstyopt##1##2{\glsbibwriteentry{packageoption}{opt.##1}{\field{name}{\styoptfmt{##1}}##2}}% \def\gstyboolopt##1##2{\glsbibwriteentry{packageoption}{opt.##1}% {\field{name}{\styoptfmt{##1}}\syntax{\meta{boolean}}\defval{true}##2}}% \def\gclsopt##1##2{\glsbibwriteentry{classoption}{opt.##1}{\field{name}{\clsoptfmt{##1}}##2}}% \def\gclsboolopt##1##2{\glsbibwriteentry{classoption}{opt.##1}% {\field{name}{\clsoptfmt{##1}}\syntax{\meta{boolean}}\defval{true}##2}}% \def\goptval##1##2##3{\glsbibwriteentry{optionvalue}{optval.##1.##2}{\field{name}{\optfmt{##2}}\field{parent}{opt.##1}##3}}% \def\goptmetaval##1##2##3{\glsbibwriteentry{optionvalue}{optval.##1.##2}{\field{name}{\meta{##2}}\field{parent}{opt.##1}##3}}% \def\gapp##1##2{\glsbibwriteentry{application}{app.##1}{\field{name}{\appfmt{##1}}##2}}% \def\glongswitch##1##2{\glsbibwriteentry{switch}{switch.##1}{\field{name}{\longargfmt{##1}}##2}}% \def\gshortswitch##1##2{\glsbibwriteentry{switch}{switch.##1}{\field{name}{\shortargfmt{##1}}##2}}% \def\glongswitchpunc##1##2{\glsbibwriteentry{switchpunctuation}{switch.##1}{\field{name}{\longargfmt{##1}}##2}}% \def\gshortswitchpunc##1##2{\glsbibwriteentry{switchpunctuation}{switch.##1}{\field{name}{\shortargfmt{##1}}##2}}% \def\gterm{\glsbibwriteentry{term}}% \def\gtermabbr##1##2##3##4{\glsbibwriteentry{termabbreviation}% {##1}{\field{short}{##2}\field{long}{##3}##4}}% \def\gtermacr##1##2##3##4{\glsbibwriteentry{termacronym}% {##1}{\field{short}{##2}\field{long}{##3}##4}}% \def\gabbr##1##2##3##4{\glsbibwriteentry{dualindexabbreviation}% {##1}{\field{short}{##2}\field{long}{##3}##4}}% \def\gacr##1##2##3##4{\glsbibwriteentry{acronym}% {##1}{\field{short}{##2}\field{long}{##3}##4}}% \immediate\openout\nlctuserguidebib=\jobname-gls.bib\relax \immediate\write\nlctuserguidebib{\glspercentchar\space Encoding: UTF-8} \immediate\write\nlctuserguidebib{@preamble{"\string\providecommand*{\string\csfmt}[1]{\string\glsbackslash\string\glsbackslash\glshashchar1}^^J \string\providecommand*{\string\cspuncfmt}[1]{\string\glsbackslash\glshashchar1}^^J \string\providecommand{\string\dhyphen}{-}^^J \string\providecommand{\string\longargfmt}{--}^^J \string\providecommand{\string\shortargfmt}{-}^^J \nlctuserguidebibextrapreamble"}} \immediate\write\nlctuserguidebib{\symboldefinitions} \glsbibwriteentry{indexplural}{fileformat}{\glsbibwritefield{text}{file format}} #2% \immediate\closeout\nlctuserguidebib \egroup \nlctuserguideloadgls{#1}% } \glsdefpostdesc{dualindexabbreviation}{.} % Abbreviations with a description: \setabbreviationstyle[termabbreviation]{long-short-desc} % Common abbreviations (no full form on first use) with a description: \setabbreviationstyle[termacronym]{short-nolong-desc} \renewcommand{\glsxtrshortdescname}{% \protect\glslongfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \protect\glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}% } \newcommand{\nlctuserguidecustomentryaliases}{} \newcommand{\nlctuserguideignoredpuncrules}{% \glshex 00AD\string;% soft hyphen \glshex 2010\string;% hyphen \glshex 2011\string;% non-breaking hyphen \glshex 2012\string;% figure dash \glshex 2013\string;% en dash \glshex 2014\string;% em dash \glshex 2015\string;% horizontal bar \glshex 2212\string=\glshex 207B\string=\glshex 208B% minus sign \string;\string'\glshex 005C\string'% backslash } % ASCII hyphen in non-ignored subset: \newcommand{\nlctuserguidepuncrules}{% \glsxtrgeneralpuncmarksrules \string<\glsxtrgeneralpuncaccentsrules \string<\glsxtrgeneralpuncquoterules \string<\glsxtrgeneralpuncbracketrules \string<\glshex 00A7% section sign \string<\glshex 00B6% pilcrow sign \string<\glshex 00A9% copyright sign \string<\glshex 00AE% registered sign \string<\glsxtrcurrencyrules \string< \string'\glshex 002A\string'% asterisk \string<\string'\glshex 0026\string'% ampersand \string<\string'\glshex 0023\string'% hash sign \string<\string'\glshex 0025\string'% percent sign \string<\string'\string-\string'% ASCII hyphen \string<\string'\glshex 002B\string'% plus sign \string=\glshex 207A\string=\glshex 208A% super/subscript plus sign \string<\glshex 00B1% plus-minus sign \string<\glshex 00F7% division sign \string<\glshex 00D7% multiplication sign \string<\string'\glshex 003C\string'% less-than sign \string<\string'\glshex 003D\string'% equals sign \string<\string'\glshex 003E\string'% greater-than sign \string<\glshex 00AC% not sign \string<\string'\glshex 007C\string'% vertical bar (pipe) \string<\glshex 00A6% broken bar \string<\glshex 00B0% degree sign \string<\glshex 00B5% micron sign } \newcommand{\nlctuserguidepreletterrules}{\string<\string'\glshex 0040\string'} \newcommand{\nlctuserguideletterrules}{\glsxtrGeneralLatinIrules} \newcommand{\nlctuserguideextrarules}{\string< \glsxtrMathItalicGreekIrules} \renewcommand*{\glsxtrresourceinit}{\GlsXtrResourceInitEscSequences} \newcommand{\nlctuserguideloadgls}[1]{% \GlsXtrLoadResources[src=\jobname-gls, break-at-not-match={original entrytype=(switchpunctuation|punctuation|command)}, sort={custom}, sort-rule={\glsxtrIgnorableRules ;\glsxtrcombiningdiacriticrules ;\nlctuserguideignoredpuncrules \string< \nlctuserguidepuncrules \string< \glshex 2423 % visible space \string< \glsxtrdigitrules \string< \glsxtrfractionrules \nlctuserguidepreletterrules \string< \nlctuserguideletterrules \nlctuserguideextrarules}, selection={recorded and deps and see not also}, entry-type-aliases={ commandoption=index, packageoption=index, classoption=index, term=dualindexentry, termabbreviation=dualindexabbreviation, termacronym=dualindexabbreviation, fileformat=index, file=index, command=index, package=index, class=index, environment=index, counter=index, option=index, optionvalue=index, application=index, switch=index, punctuation=symbol, switchpunctuation=symbol, icon=symbol, \nlctuserguidecustomentryaliases }, assign-fields= { sort = name + "¯" + extra , pdftitlecasename = \INTERPRET { \FIRSTUC { name } } [ entrytype->original =/term|index/ ] , pdftitlecasename = name }, category={same as original entry}, dual-category={same as primary}, combine-dual-locations={primary}, type=index,dual-type=main, dual-field, primary-location-formats=mainfmt, save-primary-locations=retain, primary-loc-counters=match, save-loclist=false, post-description-dot=check, description-case-change=firstuc, loc-counters={chapter,section,subsection,subsubsection,page,figure,table,wrglossary}, save-child-count,save-root-ancestor, symbol-sort-fallback=name, not-match={original entrytype=(icon|nonindexed)}, labelify-replace={{\string\\-}{}}, labelify={alias}, #1 ]% \GlsXtrLoadResources[src=\jobname-gls, entry-type-aliases={icon=symbol}, unknown-entry-alias={index}, match={original entrytype=icon}, description-case-change=firstuc, post-description-dot=check, save-locations=false, type=symbols, symbol-sort-fallback=name] } % Glossaries, index, summaries etc \newcommand{\statusdeprecatedsym}{\icon{deprecated}} \newcommand{\statusdeprecatedtext}{\icontext{deprecated}} \newcommand{\statusbannedsym}{\icon{banned}} \newcommand{\statusbannedtext}{\icontext{banned}} \newcommand{\statusdeprecatedbannedsym}{\statusdeprecatedsym\statusbannedsym} \newcommand{\statusdeprecatedbannedtext}{\statusdeprecatedtext\ \statusbannedtext} \newcommand{\statusdefaultsym}{} \newcommand{\statusdefaulttext}{} \newcommand{\statussym}{} \newcommand{\statustext}{} \newcommand{\ifnotdefaultstatus}[3]{% \protected@edef\currentstatus{\entrystatus{#1}}% \letcs\statussym{status\currentstatus sym}% \letcs\statustext{status\currentstatus text}% \ifglsentryexists{#1}% {\ifdefstring\currentstatus{default}{#3}{#2}}% {#3}% } \newcommand*{\statushook}[1]{\ifnotdefaultstatus{#1}{~\statussym}{}} \newcommand*{\setwidestnamehook}[1]{% \ifglshasparent{#1}{}% {% \settowidth{\dimen@}{\glstreenamefmt{\glsentryname{#1}\quad}}% \ifdim\dimen@>\gls@tmplen \gls@tmplen=\dimen@ \eglssetwidest{\glsentryname{#1}\quad}% \fi }% \advance\totalterms by 1\relax } \newcommand*{\settermshook}[1]{% \advance\totalterms by 1\relax \eglsupdatewidest{\glsentryname{#1}}% } \newcommand*{\printabbrs}[1][]{% \glsxtrifemptyglossary{abbreviations}{}% {% \printunsrtglossary* [type=abbreviations,style=alttree,title=\abbreviationsname,label=abbreviations,nonumberlist,#1]% {% \gls@tmplen=0pt\relax \totalterms=0\relax \glssetwidest{}% \let\printunsrtglossaryentryprocesshook\settermshook \def\printunsrtglossarypredoglossary{\entrycountprehook\totalterms}% \let\glsextrapostnamehook\glsaddterm }% }% } \newcommand{\printicons}{\printunsrtglossary[type=symbols,style=long-sym-desc,groups=false,label=symbols]} \newcount\totalterms \newcommand{\termslocfmt}[1]{\hyperit{#1}} \newcommand{\glsaddterm}[1]{\glsadd[format=termslocfmt]{#1}} \newcommand*{\printterms}[1][]{% \ifglossaryexists{abbreviations}{\printabbrs}{}% \glsxtrifemptyglossary{symbols}{}{\printicons}% \glsxtrifemptyglossary{main}{}% { \printunsrtglossary*[style=topic,nonumberlist,label=glossary,#1]% {% \gls@tmplen=0pt\relax \totalterms=0\relax \glssetwidest{}% \let\printunsrtglossaryentryprocesshook\settermshook \def\printunsrtglossarypredoglossary{\entrycountprehook\totalterms}% \glssetcategoryattribute{term}{glossname}{firstuc}% \glssetcategoryattribute{termabbreviation}{glossname}{firstuc}% \let\glstopicMarker\glsaddterm }% }% } %\newcommand{\bibglsprimary}[2]{% %\ifcase #1\or p.~\else pp.~\fi %#2% %} \newcommand{\seclocfmt}[2]{#1} \newcommand{\glsxtrchapterlocfmt}{\seclocfmt} \newcommand{\glsxtrsectionlocfmt}{\seclocfmt} \newcommand{\glsxtrsubsectionlocfmt}{\seclocfmt} \newcommand{\glsxtrsubsubsectionlocfmt}{\seclocfmt} \newcommand{\glsxtrparagraphlocfmt}{\seclocfmt} \newcommand{\glsxtrsubparagraphlocfmt}{\seclocfmt} \newcommand{\glsxtrtablelocfmt}{\seclocfmt} \newcommand{\glsxtrfigurelocfmt}{\seclocfmt} \newcommand*{\locationgroupmarkerchapter}{\S} \newcommand*{\locationgroupmarkersection}{\S} \newcommand*{\locationgroupmarkersubsection}{\S} \newcommand*{\locationgroupmarkersubsubsection}{\S} \newcommand*{\locationgroupmarkerparagraph}{\S} \newcommand*{\locationgroupmarkersubparagraph}{\S} \newcommand*{\locationgroupmarkertable}{\Tablerefprefix} \newcommand*{\locationgroupmarkertables}{\Tablesrefprefix} \newcommand*{\locationgroupmarkerfigure}{\Figurerefprefix} \newcommand*{\locationgroupmarkerfigures}{\Figuresrefprefix} \newcommand*{\locationgroupmarkerpage}{p.~} \newcommand*{\locationgroupmarkerpages}{pp.~} \newcommand{\bibglslocationgroupsep}{; } \newcommand{\locationgroupencapchapter}[1]{\textcolor{teal}{\bfseries#1}} \newcommand{\locationgroupencapsection}{\locationgroupencapchapter} \newcommand{\locationgroupencapsubsection}{\locationgroupencapchapter} \newcommand{\locationgroupencapsubsubsection}{\locationgroupencapchapter} \newcommand{\locationgroupencapparagraph}{\locationgroupencapchapter} \newcommand{\locationgroupencapsubparagraph}{\locationgroupencapchapter} \newcommand{\bibglslocationgroup}[3]{% \csuse{locationgroupencap#2}% {% \ifcsdef{locationgroupmarker#2}% {\ifcase#1 \or \csuse{locationgroupmarker#2}% \else \ifcsdef{locationgroupmarker#2s}% {\csuse{locationgroupmarker#2s}}% {% \csuse{locationgroupmarker#2}% \csuse{locationgroupmarker#2}% }% \fi }% {}% #3% }% } \newcommand{\summaryentrypackagebookmark}[2]{% \expandafter\pdfbookmark\expandafter[#1]{\glsentryname{#2}}{summary.#2}% } \newcommand{\summaryentryclassbookmark}[2]{% \expandafter\pdfbookmark\expandafter[#1]{\glsentryname{#2}}{summary.#2}% } \newcommand{\summaryentrypackage}[1]{% \let\styfmt\texttt \csfmt{usepackage}% \glsxtrifhasfield{syntax}{#1}{[\glscurrentfieldvalue]}{}% \marg{\textbf{\linkedentryname{#1}}}% } \newcommand{\summaryentryclass}[1]{% \let\clsfmt\texttt \csfmt{documentclass}% \glsxtrifhasfield{syntax}{#1}{[\glscurrentfieldvalue]}{}% \marg{\textbf{\linkedentryname{#1}}} } \newcommand{\summaryentryenvironment}[1]{% \let\envfmt\texttt \csfmt{begin}\marg{\textbf{\linkedentryname{#1}}}% \syntax{#1}% \gathermodifiers{#1}% \ifdefempty\nlctmodifierlist{} {% \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist \gdef\summaryentry@post@fill{\quad }% }% } \newcommand{\summaryentrycommand}[1]{% \bgroup \def\explTFsuffix{\@explboolsyntaxfmt{TF}}% \textbf{\linkedentryname{#1}}% \syntax{#1}% \glsxtrifhasfield{initvalue}{#1}% {% \hfill\summarytagfmt{initial}\glscurrentfieldvalue \gdef\summaryentry@post@fill{\quad }% }% {% \gathermodifiers{#1}% \ifdefempty\nlctmodifierlist {% \gathervariants{#1}% \ifdefempty\nlctvariantlist {}% {% \hfill\summarytagfmt{\nlctvarianttag}\nlctvariantlist \gdef\summaryentry@post@fill{\quad }% }% }% {% \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist \gdef\summaryentry@post@fill{\quad }% }% }% \glsxtrifhasfield{explsuffix}{#1}% {% \let\explsuffix\glscurrentfieldvalue \let\explTFsuffix\relax \let\TFsyntax\relax \par\glossentryname{#1}% \syntax{#1}% }% {}% \egroup } \newcommand{\summaryentrypackageoption}{\summaryentryoption} \newcommand{\summaryentryclassoption}{\summaryentryoption} \newcommand{\summaryentrycommandoption}{\summaryentryoption} \newcommand{\summaryentryenvironmentoption}{\summaryentryoption} \newcommand{\genericsummaryentryoption}[2][]{% \getinitordefval{#2}% \def\optiontag{#1}% \textbf{\linkedentryname{#2}}% \ifdefempty\currentsyntax{}{\dequals\currentsyntax}% \hfill \textrm{\ifdefempty\initordefval{}{\initordefval}% \ifdefempty\optiontag{}{ \optiontag}}% \gdef\summaryentry@post@fill{ }% \let\do@alias\@secondoftwo } \newcommand{\summaryentryoption}[1]{% \getinitordefval{#1}% \textbf{\linkedentryname{#1}}% \ifdefempty\currentsyntax{}{\dequals\currentsyntax}% \hfill \textrm{\ifdefempty\initordefval{}{\initordefval}% \ifdefempty\settingstitle{}{ \settingstitle}}% \gdef\summaryentry@post@fill{ }% } \newcommand{\summaryentryoptionvalue}[1]{% \glsxtrifhasfield{parent}{#1}{\glsentrytext{\glscurrentfieldvalue}\dequals}{}% \textbf{\linkedentryname{#1}}% } \newcommand{\summarylocfmt}[1]{\hyperit{#1}} \newcommand{\summarysubitemindent}{3em} \newcommand{\providedbyfmt}[1]{\textsf{\footnotesize \mbox{#1}}} \newif\ifshowsummarytopgroupheaders \showsummarytopgroupheaderstrue \newif\ifshowsummarysubgroupheaders \showsummarysubgroupheaderstrue \newcommand*{\summarynotefmt}[1]{{\small(#1)}} \newcommand{\summaryentryskip}{\par\bigskip\par} \newcommand{\summarypredesc}{% \nopagebreak\summarypar\nopagebreak } \newcommand{\rootsummarypar}{\par} \newcommand{\childsummarypar}{\par} \newglossarystyle{summary} {% \renewenvironment{theglossary}% {% \setlength{\parindent}{0pt}% \setlength{\parskip}{0pt plus 0.3pt}% \raggedbottom \def\entryskip{\def\entryskip{\summaryentryskip}}% \ifdefstring{\@@glossarysec}{chapter}% {% \hypersetup{bookmarksdepth=2}% \ifnum\c@secnumdepth>0\relax \setcounter{secnumdepth}{0}% \fi \ifnum\c@tocdepth>0\relax \setcounter{tocdepth}{0}% \fi \def\summarysec{\section}% \def\summarysecnumdepth{0}% \ifshowsummarytopgroupheaders \def\summarysubsec{\subsection}% \def\summarysubsecnumdepth{1}% \else \def\summarysubsec{\section}% \def\summarysubsecnumdepth{0}% \fi }% {% \hypersetup{bookmarksdepth=3}% \ifnum\c@secnumdepth>1\relax \setcounter{secnumdepth}{1}% \fi \ifnum\c@tocdepth>1\relax \setcounter{tocdepth}{1}% \fi \def\summarysec{\subsection}% \def\summarysecnumdepth{1}% \ifshowsummarytopgroupheaders \def\summarysubsec{\subsubsection}% \def\summarysubsecnumdepth{2}% \else \def\summarysubsec{\subsection}% \def\summarysubsecnumdepth{1}% \fi }% \let\summary@hasgroupheading\@secondoftwo \let\summary@hassubgroupheading\@secondoftwo }% {\par}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{% \ifshowsummarytopgroupheaders \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \summarysec[\texorpdfstring{\glossarytoctitle: \glsxtr@grptitle}{\glsxtr@grptitle}]{\glsxtr@grptitle}% \label{summary.##1}% \def\entryskip{\def\entryskip{\summaryentryskip}}% \let\summary@hasgroupheading\@firstoftwo \else \let\summary@hasgroupheading\@secondoftwo \fi }% \renewcommand*{\glssubgroupheading}[4]{% \let\summary@hassubgroupheading\@secondoftwo \ifshowsummarysubgroupheaders \ifnum##2=1\relax \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% \summarysubsec[\texorpdfstring{\glossarytoctitle: \glsxtr@grptitle}{\glsxtr@grptitle}]{\glsxtr@grptitle}% \def\entryskip{\def\entryskip{\summaryentryskip}}% \let\summary@hassubgroupheading\@firstoftwo \fi \fi }% \renewcommand*{\glossentry}[2]{\subglossentry{0}{##1}{##2}}% \renewcommand{\subglossentry}[3]{% \def\initordefval{}% \edef\@this@category{\glscategory{##2}}% \entryskip \par\allowbreak \def\summaryentry@post@fill{\hfill}% \ifnum##1=0\relax \ifcsdef{summaryentry\@this@category bookmark}% {% \summary@hasgroupheading {\edef\@summary@bookmarklevel{\the\numexpr\summarysecnumdepth+2}}% {\edef\@summary@bookmarklevel{\the\numexpr\summarysecnumdepth+1}}% \csuse{summaryentry\@this@category bookmark}{\@summary@bookmarklevel}{##2}% }% {}% \else \ifnum##1=1\relax \ifcsdef{summaryentry\@this@category bookmark}% {% \summary@hassubgroupheading {\edef\@summary@bookmarklevel{\the\numexpr\summarysubsecnumdepth+2}}% {\edef\@summary@bookmarklevel{\the\numexpr\summarysubsecnumdepth+1}}% \csuse{summaryentry\@this@category bookmark}{\@summary@bookmarklevel}{##2}% }% {}% \fi \fi \def\summarypar{\rootsummarypar}% \ifnum##1=0\relax \ifstrempty{##3}% {\let\summary@do@loc\@empty}% {\edef\summary@do@loc{\noexpand\makebox[0pt][l]{\noexpand\rule{\the\textwidth}{0pt}\unexpanded{\summaryloc{##3}}}}}% \begin{defnbox}\summary@do@loc \glsadd[format=summarylocfmt]{##2}% \ifnotdefaultstatus{##2}{\statussym~}{}% \texttt {% \ifcsdef{summaryentry\@this@category} {% \csuse{summaryentry\@this@category}{##2}% }% {% \textbf{\linkedentryname{##2}}% \syntax{##2}% }% }% \glsxtrifhasfield*{providedby}{##2}% {\summaryentry@post@fill\providedbyfmt{\glscurrentfieldvalue}% \def\summaryentry@post@fill{\linebreak[1]\hfill}% }% {}% \glsxtrifhasfield{note}{##2}% {\summaryentry@post@fill\summarynotefmt\glscurrentfieldvalue}{}% \end{defnbox}% \else \ifnum##1>1\relax \hangindent\summarysubitemindent\relax \parindent\summarysubitemindent\relax \def\summarypar{\childsummarypar\hangindent\summarysubitemindent\relax \parindent\summarysubitemindent\relax}% \fi \glsadd[format=summarylocfmt]{##2}% \glsxtrifhasfield*{alias}{##2}% {\let\do@alias\@firstoftwo \let\aliasval\glscurrentfieldvalue }% {\let\do@alias\@secondoftwo}% \texttt {% \ifcsdef{summaryentry\@this@category} {% \csuse{summaryentry\@this@category}{##2}% }% {% \textbf{\linkedentryname{##2}}% \syntax{##2}% }% }% \ifstrempty{##3}{}{\summarymarginpar{\summaryloc{##3}}}% \do@alias {% \summaryentry@post@fill \summarytagfmt{alias}% \expandafter\aliasref\expandafter{\aliasval}% \let\summaryentry@post@fill\space }% {}% \ifnotdefaultstatus{##2}% {\summaryentry@post@fill \glsxtrifhasfield{useri}{##2}{\glscurrentfieldvalue~}{}\statussym \glsxtrifhasfield*{providedby}{##2}% {\space\providedbyfmt{\glscurrentfieldvalue}}{}% }% {% \glsxtrifhasfield{useri}{##2}% {\summaryentry@post@fill\glscurrentfieldvalue}{}% \glsxtrifhasfield*{providedby}{##2}% {\space\providedbyfmt{\glscurrentfieldvalue}}{}% }% \glsxtrifhasfield{note}{##2}{\summarypar\hfill\summarynotefmt\glscurrentfieldvalue}{}% \fi \summarypredesc \glossentrydesc{##2}\glspostdescription \par \hangindent0pt\parindent0pt\relax }% \renewcommand*{\glsgroupskip}{}% } \newcount\totalcmds \newcount\totalenvs \newcount\totalpkgopts \newcount\totalclsopts \newcommand*{\summaryhook}[1]{% \def\summaryhookdoskip{\printunsrtglossaryskipentry}% \glsifcategory{#1}{command}% {\ifglshasdesc{#1}{\advance\totalcmds by 1\relax\let\summaryhookdoskip\relax}{}}% {% \glsifcategory{#1}{environment}% {% \ifglshasdesc{#1}% {\global\advance\totalenvs by 1\glsxtrcopytoglossary*{#1}{envlist}}% {}% }% {% \glsifcategory{#1}{packageoption}% {% \ifglshasdesc{#1}% {% \global\advance\totalpkgopts by 1\relax \glsxtrifhasfield{parent}{#1}% {% \GlsXtrIfInGlossary{\glscurrentfieldvalue}{pkgoptlist}{}% {\glsxtrcopytoglossary*{\glscurrentfieldvalue}{pkgoptlist}}% }% {}% \glsxtrcopytoglossary*{#1}{pkgoptlist}% }% {}% }% {% \glsifcategory{#1}{classoption}% {% \ifglshasdesc{#1}% {% \global\advance\totalclsopts by 1\relax \glsxtrifhasfield{parent}{#1}% {% \GlsXtrIfInGlossary{\glscurrentfieldvalue}{clsoptlist}{}% {\glsxtrcopytoglossary*{\glscurrentfieldvalue}{clsoptlist}}% }% {}% \glsxtrcopytoglossary*{#1}{clsoptlist}% }% {}% }% {% \glsifcategory{#1}{optionvalue}% {% \glsxtrifhasfield{parent}{#1}% {% \let\@currentparent\glscurrentfieldvalue \GlsXtrIfInGlossary{\@currentparent}{clsoptlist}% {\glsxtrcopytoglossary*{#1}{clsoptlist}}% {% \GlsXtrIfInGlossary{\@currentparent}{pkgoptlist}% {\glsxtrcopytoglossary*{#1}{pkgoptlist}}% {% \GlsXtrIfInGlossary{\@currentparent}{envlist}% {\glsxtrcopytoglossary*{#1}{envlist}}% {% \glsifcategory{\@currentparent}{command}% {\ifglshasdesc{#1}{\let\summaryhookdoskip\relax}{}}{}% }% }% }% }% {}% }% {}% }% }% }% }% \summaryhookdoskip } \newcommand{\entrycountprehook}[1]{% \ifnum#1<21\relax \let\glsgroupheading\@gobble \glsnogroupskiptrue \fi } \provideignoredglossary{envlist}% \provideignoredglossary{pkgoptlist}% \provideignoredglossary{clsoptlist}% \newcommand*{\printsummary}{% {% \renewcommand{\GlsXtrLocationField}{primarylocations}% \let\printunsrtglossaryentryprocesshook\summaryhook \def\printunsrtglossarypredoglossary{\entrycountprehook\totalcmds}% \printunsrtglossary[type=index,style=summary,title=Command Summary, label={cmdsummary}]% % Environment list \let\printunsrtglossaryentryprocesshook\@gobble \def\printunsrtglossarypredoglossary{\entrycountprehook\totalenvs}% \glsxtrifemptyglossary{envlist}{}% {\printunsrtglossary[type=envlist,style=summary,title=Environment Summary, label={envsummary}]}% % Class option list \def\printunsrtglossarypredoglossary{\entrycountprehook\totalclsopts}% \glsxtrifemptyglossary{clsoptlist}{}% {\printunsrtglossary*[type=clsoptlist,style=summary,title=Class Option Summary, label={clsoptsummary}]% {\showsummarytopgroupheadersfalse}% }% % Package option list \def\printunsrtglossarypredoglossary{\entrycountprehook\totalpkgopts}% \glsxtrifemptyglossary{pkgoptlist}{}% {\printunsrtglossary*[type=pkgoptlist,style=summary,title=Package Option Summary, label={styoptsummary}]% {\showsummarytopgroupheadersfalse}% }% }% } \newcommand*{\printcommandoptionsprocesshook}[2]{% \ifdefstring#2{#1}% {}% {% \glsxtrifhasfield*{rootancestor}{#2}% {\ifdefstring\glscurrentfieldvalue{#1}{}{\printunsrtglossaryskipentry}}% {\printunsrtglossaryskipentry}% }% } \newcommand*{\printcommandoptions}[2][]{% \glsdoifexistsorwarn{#2}% {% \printunsrtglossary*[type=index,style=summary,nogroupskip, label={#2-options}, title={\glsentryname{#2} Options}, #1]% {% \renewcommand{\GlsXtrLocationField}{primarylocations}% \def\printunsrtglossaryentryprocesshook{\printcommandoptionsprocesshook{#2}}% \def\printunsrtglossarypredoglossary{\let\glsgroupheading\@gobble}% }% }% } \newcommand*{\printcommonoptionsprocesshook}[2]{% \glsxtrifhasfield*{rootancestor}{#2}% {\ifdefstring\glscurrentfieldvalue{#1}{}{\printunsrtglossaryskipentry}}% {\printunsrtglossaryskipentry}% } \newcommand*{\printcommonoptions}[2][]{% \glsdoifexistsorwarn{#2}% {% \printunsrtglossary*[type=index,style=summary,nogroupskip, label={#2-optionsummary}, title={\texorpdfstring{\glsxtrfieldtitlecase{#2}{name}}{\pdftitlecasename{#2}} Summary}, leveloffset={-1},#1]% {% \preto\glossarypreamble{\glsadd[format=summarylocfmt]{#2}\createtarget{#2}{\strut}}% \ifglshasdesc{#2}% {% \appto\glossarypreamble{% \def\glscurrententrylabel{#2}% \glossentrydesc{#2}\glspostdescription \glspar\medskip\glspar}% }{}% \renewcommand{\GlsXtrLocationField}{primarylocations}% \def\printunsrtglossaryentryprocesshook{\printcommonoptionsprocesshook{#2}}% \def\printunsrtglossarypredoglossary{\let\glsgroupheading\@gobble}% }% }% } \newcount\totalindexitems \newcommand{\filteremptylocation}[1]{% \glsxtrifhasfield*{location}{#1} {\advance\totalindexitems by 1}% has location field {% \GlsXtrIfHasNonZeroChildCount*{#1}% {\advance\totalindexitems by 1}% {\printunsrtglossaryskipentry}% }% } \ExplSyntaxOn \cs_if_exist:NT \glsxtrbookindexsubsubitem { \renewcommand{\glsxtrbookindexsubsubitem}[1]{ \glstreeitem \hspace* { \dim_eval:n { #10 pt + 10pt } } } } \ExplSyntaxOff % v1.11: \newcommand{\nlctindexfirstmark}{} \newcommand{\nlctindexlastmark}{} \newcommand\nlctprebookindex{} \newcommand\nlctindexmarkfmt[1]{{\small#1}} \newcommand*{\printuserguideindex}[1][]{% \printunsrtglossary*[label=index,type=index,target=false,title=\indexname,style=bookindex,#1]% {% \renewcommand{\nlctindexfirstmark}{% \nlctindexmarkfmt\glsxtrbookindexfirstmark}% \renewcommand{\nlctindexlastmark}{% \nlctindexmarkfmt\glsxtrbookindexlastmark}% \renewcommand\glsextrapostnamehook[1]{% \statushook{##1}% \glsxtrifhasfield{extra}{##1}{ (\glscurrentfieldvalue)}{}% }% \renewcommand*{\glsxtrbookindexprelocation}[1]{% \glsxtrifhasfield{location}{##1}% {\,\textcolor{lightgray}{\dotfill}\,}% {}% }% \renewcommand*\glsxtrbookindexname[1]{% \linkedentryname{##1}\nlctpostindexname{##1}}% \renewcommand*{\glsxtrbookindexsubname}[1]{\linkedentryname{##1}}% \let\printunsrtglossaryentryprocesshook\filteremptylocation \def\printunsrtglossarypredoglossary{% \nlctprebookindex \ifnum\totalindexitems<21\relax \renewcommand*{\glsxtrbookindexmulticolsenv}{multicols*}% \fi}% \nlctguideindexinitpostnamehooks }% } \newcommand{\nlctguideindexinitpostnamehooks}{% \glsdefpostname{environment}{ environment}% \glsdefpostname{package}{ package}% \glsdefpostname{class}{ class}% \glsdefpostname{counter}{ counter}% \glsdefpostname{acronym}{\acrpostnamehook}% \glsdefpostname{abbreviation}{\abbrpostnamehook}% \glsdefpostname{termabbreviation}{\abbrpostnamehook}% \glsdefpostname{dualindexabbreviation}{\abbrpostnamehook}% } \newcommand{\acrpostnamehook}{} \newrobustcmd{\abbrpostnamehook}{% \ifglshaslong\glscurrententrylabel {\space (\glsfmtlong{\glscurrententrylabel})} {% \glsxtrifhasfield{\GlsXtrDualField}{\glscurrententrylabel}% {% \ifglshaslong\glscurrentfieldvalue {\space (\expandafter\glsfmtlong\expandafter{\glscurrentfieldvalue})}% {}% }% {}% }% } \endinput