1 \NeedsTeXFormat{LaTeX2e}
2 \ProvidesPackage{doxygen}
4 % Packages used by this style file
6 %%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
9 %%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
10 \RequirePackage{verbatim}
11 \RequirePackage[table]{xcolor}
12 \RequirePackage{longtable_doxygen}
13 \RequirePackage{tabu_doxygen}
14 \RequirePackage{fancyvrb}
15 \RequirePackage{tabularx}
16 \RequirePackage{multicol}
17 \RequirePackage{multirow}
18 \RequirePackage{hanging}
19 \RequirePackage{ifpdf}
20 \RequirePackage{adjustbox}
21 \RequirePackage{amssymb}
22 \RequirePackage{stackengine}
23 \RequirePackage{enumitem}
24 \RequirePackage{alphalph}
25 \RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
27 %---------- Internal commands used in this style file ----------------
29 \newcommand{\ensurespace}[1]{%
31 \setlength{\dimen@}{#1}%
32 \vskip\z@\@plus\dimen@%
33 \penalty -100\vskip\z@\@plus -\dimen@%
37 \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
41 \newcommand{\DoxyHorRuler}[1]{%
42 \setlength{\parskip}{0ex plus 0ex minus 0ex}%
51 \newcommand{\DoxyLabelFont}{}
52 \newcommand{\entrylabel}[1]{%
54 \parbox[b]{\labelwidth-4pt}{%
55 \makebox[0pt][l]{\DoxyLabelFont#1}%
56 \vspace{1.5\baselineskip}%
61 \newenvironment{DoxyDesc}[1]{%
62 \ensurespace{4\baselineskip}%
64 \settowidth{\labelwidth}{20pt}%
65 %\setlength{\parsep}{0pt}%
66 \setlength{\itemsep}{0pt}%
67 \setlength{\leftmargin}{\labelwidth+\labelsep}%
68 \renewcommand{\makelabel}{\entrylabel}%
76 \newlength{\xreflength}
77 \newcommand{\xreflabel}[1]{%
79 \setlength{\xreflength}{\wd\xrefbox}%
80 \ifthenelse{\xreflength>\labelwidth}{%
81 \begin{minipage}{\textwidth}%
82 \setlength{\parindent}{0pt}%
83 \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
86 \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
90 %---------- Commands used by doxygen LaTeX output generator ----------
92 % Used by <pre> ... </pre>
93 \newenvironment{DoxyPre}{%
100 % Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
101 \newlength{\CodeWidthChar}
102 \newlength{\CodeHeightChar}
103 \settowidth{\CodeWidthChar}{?}
104 \settoheight{\CodeHeightChar}{?}
105 % Necessary for hanging indent
106 \newlength{\DoxyCodeWidth}
108 \newcommand\DoxyCodeLine[1]{
109 \ifthenelse{\equal{\detokenize{#1}}{}}
111 \vspace*{\baselineskip}
114 \hangpara{\DoxyCodeWidth}{1}{#1}\par
118 \newcommand\NiceSpace{%
119 \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
122 % Used by @code ... @endcode
123 \newenvironment{DoxyCode}[1]{%
126 \normalfont\ttfamily%
127 \rightskip0pt plus 1fil%
128 \settowidth{\DoxyCodeWidth}{000000}%
129 \settowidth{\CodeWidthChar}{?}%
130 \settoheight{\CodeHeightChar}{?}%
131 \setlength{\parskip}{0ex plus 0ex minus 0ex}%
132 \ifthenelse{\equal{#1}{0}}
134 {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
137 {\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
143 \settowidth{\CodeWidthChar}{?}%
144 \settoheight{\CodeHeightChar}{?}%
147 % Redefining not defined characters, i.e. "Replacement Character" in tex output.
148 \def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
149 \textcolor{white}{\sffamily\bfseries\small ?}}{%
150 \rotatebox{45}{$\blacksquare$}}}}
152 % Used by @example, @include, @includelineno and @dontinclude
153 \newenvironment{DoxyCodeInclude}[1]{%
159 % Used by @verbatim ... @endverbatim
160 \newenvironment{DoxyVerb}{%
169 % Used by @verbinclude
170 \newenvironment{DoxyVerbInclude}{%
176 % Used by numbered lists (using '-#' or <ol> ... </ol>)
178 \newlist{DoxyEnumerate}{enumerate}{12}
179 \setlist[DoxyEnumerate,1]{label=\arabic*.}
180 \setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)}
181 \setlist[DoxyEnumerate,3]{label=\roman*.}
182 \setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.}
183 \setlist[DoxyEnumerate,5]{label=\arabic*.}
184 \setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)}
185 \setlist[DoxyEnumerate,7]{label=\roman*.}
186 \setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.}
187 \setlist[DoxyEnumerate,9]{label=\arabic*.}
188 \setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)}
189 \setlist[DoxyEnumerate,11]{label=\roman*.}
190 \setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.}
192 % Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
194 \newlist{DoxyItemize}{itemize}{12}
195 \setlist[DoxyItemize]{label=\textperiodcentered}
197 \setlist[DoxyItemize,1]{label=\textbullet}
198 \setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash}
199 \setlist[DoxyItemize,3]{label=\textasteriskcentered}
200 \setlist[DoxyItemize,4]{label=\textperiodcentered}
202 % Used by description lists (using <dl> ... </dl>)
203 \newenvironment{DoxyDescription}{%
209 % Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
210 % (only if caption is specified)
211 \newenvironment{DoxyImage}{%
218 % Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
219 % (only if no caption is specified)
220 \newenvironment{DoxyImageNoCaption}{%
227 % (only if inline is specified)
228 \newenvironment{DoxyInlineImage}{%
233 \newenvironment{DoxyAttention}[1]{%
234 \begin{DoxyDesc}{#1}%
239 % Used by @author and @authors
240 \newenvironment{DoxyAuthor}[1]{%
241 \begin{DoxyDesc}{#1}%
247 \newenvironment{DoxyDate}[1]{%
248 \begin{DoxyDesc}{#1}%
254 \newenvironment{DoxyInvariant}[1]{%
255 \begin{DoxyDesc}{#1}%
261 \newenvironment{DoxyNote}[1]{%
262 \begin{DoxyDesc}{#1}%
268 \newenvironment{DoxyPostcond}[1]{%
269 \begin{DoxyDesc}{#1}%
275 \newenvironment{DoxyPrecond}[1]{%
276 \begin{DoxyDesc}{#1}%
282 \newenvironment{DoxyCopyright}[1]{%
283 \begin{DoxyDesc}{#1}%
289 \newenvironment{DoxyRemark}[1]{%
290 \begin{DoxyDesc}{#1}%
295 % Used by @return and @returns
296 \newenvironment{DoxyReturn}[1]{%
297 \begin{DoxyDesc}{#1}%
303 \newenvironment{DoxySince}[1]{%
304 \begin{DoxyDesc}{#1}%
310 \newenvironment{DoxySeeAlso}[1]{%
311 \begin{DoxyDesc}{#1}%
317 \newenvironment{DoxyVersion}[1]{%
318 \begin{DoxyDesc}{#1}%
324 \newenvironment{DoxyWarning}[1]{%
325 \begin{DoxyDesc}{#1}%
330 % Used by @par and @paragraph
331 \newenvironment{DoxyParagraph}[1]{%
332 \begin{DoxyDesc}{#1}%
337 % Used by parameter lists
338 \newenvironment{DoxyParams}[2][]{%
341 \ifthenelse{\equal{#1}{}}%
342 {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
343 {\ifthenelse{\equal{#1}{1}}%
344 {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
345 {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
347 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
350 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
358 % Used for fields of simple structs
359 \newenvironment{DoxyFields}[1]{%
362 \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
363 \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
366 \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
374 % Used for fields simple class style enums
375 \newenvironment{DoxyEnumFields}[1]{%
378 \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
379 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
382 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
390 % Used for parameters within a detailed function description
391 \newenvironment{DoxyParamCaption}{%
392 \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
396 % Used by return value lists
397 \newenvironment{DoxyRetVals}[1]{%
400 \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
401 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
404 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
412 % Used by exception lists
413 \newenvironment{DoxyExceptions}[1]{%
416 \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
417 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
420 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
428 % Used by template parameter lists
429 \newenvironment{DoxyTemplParams}[1]{%
432 \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
433 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
436 \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
444 % Used for member lists
445 \newenvironment{DoxyCompactItemize}{%
447 \setlength{\itemsep}{-3pt}%
448 \setlength{\parsep}{0pt}%
449 \setlength{\topsep}{0pt}%
450 \setlength{\partopsep}{0pt}%
455 % Used for member descriptions
456 \newenvironment{DoxyCompactList}{%
458 \setlength{\leftmargin}{0.5cm}%
459 \setlength{\itemsep}{0pt}%
460 \setlength{\parsep}{0pt}%
461 \setlength{\topsep}{0pt}%
462 \renewcommand{\makelabel}{\hfill}%
468 % Used for reference lists (@bug, @deprecated, @todo, etc.)
469 \newenvironment{DoxyRefList}{%
471 \setlength{\labelwidth}{10pt}%
472 \setlength{\leftmargin}{\labelwidth}%
473 \addtolength{\leftmargin}{\labelsep}%
474 \renewcommand{\makelabel}{\xreflabel}%
480 % Used by @bug, @deprecated, @todo, etc.
481 \newenvironment{DoxyRefDesc}[1]{%
483 \renewcommand\makelabel[1]{\textbf{##1}}%
484 \settowidth\labelwidth{\makelabel{#1}}%
485 \setlength\leftmargin{\labelwidth+\labelsep}%
491 % Used by parameter lists and simple sections
492 \newenvironment{Desc}
494 \settowidth{\labelwidth}{20pt}%
495 \setlength{\parsep}{0pt}%
496 \setlength{\itemsep}{0pt}%
497 \setlength{\leftmargin}{\labelwidth+\labelsep}%
498 \renewcommand{\makelabel}{\entrylabel}%
505 \newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
506 \newenvironment{TabularC}[1]%
508 \begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
509 {\end{longtabu*}\par}%
511 \newenvironment{TabularNC}[1]%
512 {\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
515 % Used for member group headers
516 \newenvironment{Indent}{%
518 \setlength{\leftmargin}{0.5cm}%
520 \item[]\ignorespaces%
526 % Used when hyperlinks are turned on
527 \newcommand{\doxylink}[2]{%
528 \mbox{\hyperlink{#1}{#2}}%
531 % Used when hyperlinks are turned on
532 % Third argument is the SectionType, see the doxygen internal
533 % documentation for the values (relevant: Page ... Subsubsection).
534 \newcommand{\doxysectlink}[3]{%
535 \mbox{\hyperlink{#1}{#2}}%
537 % Used when hyperlinks are turned off
538 \newcommand{\doxyref}[3]{%
539 \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
542 % Used when hyperlinks are turned off
543 % Fourth argument is the SectionType, see the doxygen internal
544 % documentation for the values (relevant: Page ... Subsubsection).
545 \newcommand{\doxysectref}[4]{%
546 \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
549 % Used to link to a table when hyperlinks are turned on
550 \newcommand{\doxytablelink}[2]{%
554 % Used to link to a table when hyperlinks are turned off
555 \newcommand{\doxytableref}[3]{%
560 \newcommand{\lcurly}{\{}
561 \newcommand{\rcurly}{\}}
563 % Colors used for syntax highlighting
564 \definecolor{comment}{rgb}{0.5,0.0,0.0}
565 \definecolor{keyword}{rgb}{0.0,0.5,0.0}
566 \definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
567 \definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
568 \definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
569 \definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
570 \definecolor{charliteral}{rgb}{0.0,0.5,0.5}
571 \definecolor{xmlcdata}{rgb}{0.0,0.0,0.0}
572 \definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
573 \definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
574 \definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
575 \definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
577 % Color used for table heading
578 \newcommand{\tableheadbgcolor}{lightgray}%
580 % Version of hypertarget with correct landing location
581 \newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
583 % possibility to have sections etc. be within the margins
584 % unfortunately had to copy part of book.cls and add \raggedright
586 \newcounter{subsubsubsection}[subsubsection]
587 \newcounter{subsubsubsubsection}[subsubsubsection]
588 \newcounter{subsubsubsubsubsection}[subsubsubsubsection]
589 \newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection]
590 \renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}}
591 \renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}}
592 \renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}}
593 \renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}}
594 \newcommand{\subsubsubsectionmark}[1]{}
595 \newcommand{\subsubsubsubsectionmark}[1]{}
596 \newcommand{\subsubsubsubsubsectionmark}[1]{}
597 \newcommand{\subsubsubsubsubsubsectionmark}[1]{}
598 \def\toclevel@subsubsubsection{4}
599 \def\toclevel@subsubsubsubsection{5}
600 \def\toclevel@subsubsubsubsubsection{6}
601 \def\toclevel@subsubsubsubsubsubsection{7}
602 \def\toclevel@paragraph{8}
603 \def\toclevel@subparagraph{9}
605 \newcommand\doxysection{\@startsection {section}{1}{\z@}%
606 {-3.5ex \@plus -1ex \@minus -.2ex}%
608 {\raggedright\normalfont\Large\bfseries}}
609 \newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
610 {-3.25ex\@plus -1ex \@minus -.2ex}%
612 {\raggedright\normalfont\large\bfseries}}
613 \newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
614 {-3.25ex\@plus -1ex \@minus -.2ex}%
616 {\raggedright\normalfont\normalsize\bfseries}}
617 \newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
618 {-3.25ex\@plus -1ex \@minus -.2ex}%
620 {\raggedright\normalfont\normalsize\bfseries}}
621 \newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}%
622 {-3.25ex\@plus -1ex \@minus -.2ex}%
624 {\raggedright\normalfont\normalsize\bfseries}}
625 \newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}%
626 {-3.25ex\@plus -1ex \@minus -.2ex}%
628 {\raggedright\normalfont\normalsize\bfseries}}
629 \newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}%
630 {-3.25ex\@plus -1ex \@minus -.2ex}%
632 {\raggedright\normalfont\normalsize\bfseries}}
633 \newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}%
634 {-3.25ex\@plus -1ex \@minus -.2ex}%
636 {\raggedright\normalfont\normalsize\bfseries}}
637 \newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}%
638 {-3.25ex\@plus -1ex \@minus -.2ex}%
640 {\raggedright\normalfont\normalsize\bfseries}}
642 \newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}}
643 \newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}}
644 \newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}}
645 \newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}}
646 \renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}}
647 \renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}}
649 % the sectsty doesn't look to be maintained but gives, in our case, some warning like:
650 % LaTeX Warning: Command \underline has changed.
651 % Check if current package is valid.
652 % unfortunately had to copy the relevant part
653 \newcommand*{\doxypartfont} [1]
654 {\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1}
655 \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}}
656 \newcommand*{\doxychapterfont} [1]
657 {\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1}
658 \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}}
659 \newcommand*{\doxysectionfont} [1]
660 {\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}}
661 \newcommand*{\doxysubsectionfont} [1]
662 {\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}}
663 \newcommand*{\doxysubsubsectionfont} [1]
664 {\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}}
665 \newcommand*{\doxyparagraphfont} [1]
666 {\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}}
667 \newcommand*{\doxysubparagraphfont} [1]
668 {\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}}
669 \newcommand*{\doxyminisecfont} [1]
670 {\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}}
671 \newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}%
672 \doxychapterfont{#1}%
673 \doxysectionfont{#1}%
674 \doxysubsectionfont{#1}%
675 \doxysubsubsectionfont{#1}%
676 \doxyparagraphfont{#1}%
677 \doxysubparagraphfont{#1}%
678 \doxyminisecfont{#1}}%
679 % Define caption that is also suitable in a table
681 \def\doxyfigcaption{%
682 \H@refstepcounter{figure}%
683 \@dblarg{\@caption{figure}}}
686 % Define alpha enumarative names for counters > 26
688 \def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname}
689 \def\@enumalphalphcnt#1{\alphalph{#1}}
690 \def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname}
691 \def\@enumAlphAlphcnt#1{\AlphAlph{#1}}
693 \AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa}
694 \AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA}