From df8349b7479476c5a3218c4c4c2de02281743e82 Mon Sep 17 00:00:00 2001
From: Andreas <37029098+ws909@users.noreply.github.com>
Date: Fri, 3 Mar 2023 15:49:26 +0100
Subject: [PATCH] Delete remaining unintentionally added build files
---
latex/doxygen.sty | 603 ------
latex/longtable_doxygen.sty | 448 -----
latex/md__c_o_n_t_r_i_b_u_t_o_r_s.tex | 263 ---
latex/md__l_i_c_e_n_s_e.tex | 14 -
latex/md__r_e_a_d_m_e.tex | 262 ---
latex/refman.tex | 200 --
latex/tabu_doxygen.sty | 2557 -------------------------
7 files changed, 4347 deletions(-)
delete mode 100644 latex/doxygen.sty
delete mode 100644 latex/longtable_doxygen.sty
delete mode 100644 latex/md__c_o_n_t_r_i_b_u_t_o_r_s.tex
delete mode 100644 latex/md__l_i_c_e_n_s_e.tex
delete mode 100644 latex/md__r_e_a_d_m_e.tex
delete mode 100644 latex/refman.tex
delete mode 100644 latex/tabu_doxygen.sty
diff --git a/latex/doxygen.sty b/latex/doxygen.sty
deleted file mode 100644
index dd7b8120..00000000
--- a/latex/doxygen.sty
+++ /dev/null
@@ -1,603 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{doxygen}
-
-% Packages used by this style file
-\RequirePackage{alltt}
-%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
-\RequirePackage{calc}
-\RequirePackage{float}
-%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
-\RequirePackage{verbatim}
-\RequirePackage[table]{xcolor}
-\RequirePackage{longtable_doxygen}
-\RequirePackage{tabu_doxygen}
-\RequirePackage{fancyvrb}
-\RequirePackage{tabularx}
-\RequirePackage{multicol}
-\RequirePackage{multirow}
-\RequirePackage{hanging}
-\RequirePackage{ifpdf}
-\RequirePackage{adjustbox}
-\RequirePackage{amssymb}
-\RequirePackage{stackengine}
-\RequirePackage{enumitem}
-\RequirePackage{alphalph}
-\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
-
-%---------- Internal commands used in this style file ----------------
-
-\newcommand{\ensurespace}[1]{%
- \begingroup%
- \setlength{\dimen@}{#1}%
- \vskip\z@\@plus\dimen@%
- \penalty -100\vskip\z@\@plus -\dimen@%
- \vskip\dimen@%
- \penalty 9999%
- \vskip -\dimen@%
- \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
- \endgroup%
-}
-
-\newcommand{\DoxyHorRuler}[1]{%
- \setlength{\parskip}{0ex plus 0ex minus 0ex}%
- \ifthenelse{#1=0}%
- {%
- \hrule%
- }%
- {%
- \hrulefilll%
- }%
-}
-\newcommand{\DoxyLabelFont}{}
-\newcommand{\entrylabel}[1]{%
- {%
- \parbox[b]{\labelwidth-4pt}{%
- \makebox[0pt][l]{\DoxyLabelFont#1}%
- \vspace{1.5\baselineskip}%
- }%
- }%
-}
-
-\newenvironment{DoxyDesc}[1]{%
- \ensurespace{4\baselineskip}%
- \begin{list}{}{%
- \settowidth{\labelwidth}{20pt}%
- %\setlength{\parsep}{0pt}%
- \setlength{\itemsep}{0pt}%
- \setlength{\leftmargin}{\labelwidth+\labelsep}%
- \renewcommand{\makelabel}{\entrylabel}%
- }%
- \item[#1]%
-}{%
- \end{list}%
-}
-
-\newsavebox{\xrefbox}
-\newlength{\xreflength}
-\newcommand{\xreflabel}[1]{%
- \sbox{\xrefbox}{#1}%
- \setlength{\xreflength}{\wd\xrefbox}%
- \ifthenelse{\xreflength>\labelwidth}{%
- \begin{minipage}{\textwidth}%
- \setlength{\parindent}{0pt}%
- \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
- \end{minipage}%
- }{%
- \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
- }%
-}
-
-%---------- Commands used by doxygen LaTeX output generator ----------
-
-% Used by
...
-\newenvironment{DoxyPre}{%
- \small%
- \begin{alltt}%
-}{%
- \end{alltt}%
- \normalsize%
-}
-% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
-\newlength{\CodeWidthChar}
-\newlength{\CodeHeightChar}
-\settowidth{\CodeWidthChar}{?}
-\settoheight{\CodeHeightChar}{?}
-% Necessary for hanging indent
-\newlength{\DoxyCodeWidth}
-
-\newcommand\DoxyCodeLine[1]{
- \ifthenelse{\equal{\detokenize{#1}}{}}
- {
- \vspace*{\baselineskip}
- }
- {
- \hangpara{\DoxyCodeWidth}{1}{#1}\par
- }
-}
-
-\newcommand\NiceSpace{%
- \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
-}
-
-% Used by @code ... @endcode
-\newenvironment{DoxyCode}[1]{%
- \par%
- \scriptsize%
- \normalfont\ttfamily%
- \rightskip0pt plus 1fil%
- \settowidth{\DoxyCodeWidth}{000000}%
- \settowidth{\CodeWidthChar}{?}%
- \settoheight{\CodeHeightChar}{?}%
- \setlength{\parskip}{0ex plus 0ex minus 0ex}%
- \ifthenelse{\equal{#1}{0}}
- {
- {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
- }
- {
- {\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
- }
-
-}{%
- \normalfont%
- \normalsize%
- \settowidth{\CodeWidthChar}{?}%
- \settoheight{\CodeHeightChar}{?}%
-}
-
-% Redefining not defined characters, i.e. "Replacement Character" in tex output.
-\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
- \textcolor{white}{\sffamily\bfseries\small ?}}{%
- \rotatebox{45}{$\blacksquare$}}}}
-
-% Used by @example, @include, @includelineno and @dontinclude
-\newenvironment{DoxyCodeInclude}[1]{%
- \DoxyCode{#1}%
-}{%
- \endDoxyCode%
-}
-
-% Used by @verbatim ... @endverbatim
-\newenvironment{DoxyVerb}{%
- \par%
- \footnotesize%
- \verbatim%
-}{%
- \endverbatim%
- \normalsize%
-}
-
-% Used by @verbinclude
-\newenvironment{DoxyVerbInclude}{%
- \DoxyVerb%
-}{%
- \endDoxyVerb%
-}
-
-% Used by numbered lists (using '-#' or ...
)
-\setlistdepth{12}
-\newlist{DoxyEnumerate}{enumerate}{12}
-\setlist[DoxyEnumerate,1]{label=\arabic*.}
-\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)}
-\setlist[DoxyEnumerate,3]{label=\roman*.}
-\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.}
-\setlist[DoxyEnumerate,5]{label=\arabic*.}
-\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)}
-\setlist[DoxyEnumerate,7]{label=\roman*.}
-\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.}
-\setlist[DoxyEnumerate,9]{label=\arabic*.}
-\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)}
-\setlist[DoxyEnumerate,11]{label=\roman*.}
-\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.}
-
-% Used by bullet lists (using '-', @li, @arg, or )
-\setlistdepth{12}
-\newlist{DoxyItemize}{itemize}{12}
-\setlist[DoxyItemize]{label=\textperiodcentered}
-
-\setlist[DoxyItemize,1]{label=\textbullet}
-\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash}
-\setlist[DoxyItemize,3]{label=\textasteriskcentered}
-\setlist[DoxyItemize,4]{label=\textperiodcentered}
-
-% Used by description lists (using ...
)
-\newenvironment{DoxyDescription}{%
- \description%
-}{%
- \enddescription%
-}
-
-% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
-% (only if caption is specified)
-\newenvironment{DoxyImage}{%
- \begin{figure}[H]%
- \centering%
-}{%
- \end{figure}%
-}
-
-% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
-% (only if no caption is specified)
-\newenvironment{DoxyImageNoCaption}{%
- \begin{center}%
-}{%
- \end{center}%
-}
-
-% Used by @image
-% (only if inline is specified)
-\newenvironment{DoxyInlineImage}{%
-}{%
-}
-
-% Used by @attention
-\newenvironment{DoxyAttention}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @author and @authors
-\newenvironment{DoxyAuthor}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @date
-\newenvironment{DoxyDate}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @invariant
-\newenvironment{DoxyInvariant}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @note
-\newenvironment{DoxyNote}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @post
-\newenvironment{DoxyPostcond}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @pre
-\newenvironment{DoxyPrecond}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @copyright
-\newenvironment{DoxyCopyright}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @remark
-\newenvironment{DoxyRemark}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @return and @returns
-\newenvironment{DoxyReturn}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @since
-\newenvironment{DoxySince}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @see
-\newenvironment{DoxySeeAlso}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @version
-\newenvironment{DoxyVersion}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @warning
-\newenvironment{DoxyWarning}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @par and @paragraph
-\newenvironment{DoxyParagraph}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by parameter lists
-\newenvironment{DoxyParams}[2][]{%
- \tabulinesep=1mm%
- \par%
- \ifthenelse{\equal{#1}{}}%
- {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
- {\ifthenelse{\equal{#1}{1}}%
- {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
- {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
- }
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used for fields of simple structs
-\newenvironment{DoxyFields}[1]{%
- \tabulinesep=1mm%
- \par%
- \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
- \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used for fields simple class style enums
-\newenvironment{DoxyEnumFields}[1]{%
- \tabulinesep=1mm%
- \par%
- \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used for parameters within a detailed function description
-\newenvironment{DoxyParamCaption}{%
- \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
-}{%
-}
-
-% Used by return value lists
-\newenvironment{DoxyRetVals}[1]{%
- \tabulinesep=1mm%
- \par%
- \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used by exception lists
-\newenvironment{DoxyExceptions}[1]{%
- \tabulinesep=1mm%
- \par%
- \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used by template parameter lists
-\newenvironment{DoxyTemplParams}[1]{%
- \tabulinesep=1mm%
- \par%
- \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endfirsthead%
- \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
- \hline%
- \endhead%
-}{%
- \end{longtabu*}%
- \vspace{6pt}%
-}
-
-% Used for member lists
-\newenvironment{DoxyCompactItemize}{%
- \begin{itemize}%
- \setlength{\itemsep}{-3pt}%
- \setlength{\parsep}{0pt}%
- \setlength{\topsep}{0pt}%
- \setlength{\partopsep}{0pt}%
-}{%
- \end{itemize}%
-}
-
-% Used for member descriptions
-\newenvironment{DoxyCompactList}{%
- \begin{list}{}{%
- \setlength{\leftmargin}{0.5cm}%
- \setlength{\itemsep}{0pt}%
- \setlength{\parsep}{0pt}%
- \setlength{\topsep}{0pt}%
- \renewcommand{\makelabel}{\hfill}%
- }%
-}{%
- \end{list}%
-}
-
-% Used for reference lists (@bug, @deprecated, @todo, etc.)
-\newenvironment{DoxyRefList}{%
- \begin{list}{}{%
- \setlength{\labelwidth}{10pt}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \renewcommand{\makelabel}{\xreflabel}%
- }%
-}{%
- \end{list}%
-}
-
-% Used by @bug, @deprecated, @todo, etc.
-\newenvironment{DoxyRefDesc}[1]{%
- \begin{list}{}{%
- \renewcommand\makelabel[1]{\textbf{##1}}%
- \settowidth\labelwidth{\makelabel{#1}}%
- \setlength\leftmargin{\labelwidth+\labelsep}%
- }%
-}{%
- \end{list}%
-}
-
-% Used by parameter lists and simple sections
-\newenvironment{Desc}
-{\begin{list}{}{%
- \settowidth{\labelwidth}{20pt}%
- \setlength{\parsep}{0pt}%
- \setlength{\itemsep}{0pt}%
- \setlength{\leftmargin}{\labelwidth+\labelsep}%
- \renewcommand{\makelabel}{\entrylabel}%
- }
-}{%
- \end{list}%
-}
-
-% Used by tables
-\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
-\newenvironment{TabularC}[1]%
-{\tabulinesep=1mm
-\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
-{\end{longtabu*}\par}%
-
-\newenvironment{TabularNC}[1]%
-{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
-{\end{tabu}\par}%
-
-% Used for member group headers
-\newenvironment{Indent}{%
- \begin{list}{}{%
- \setlength{\leftmargin}{0.5cm}%
- }%
- \item[]\ignorespaces%
-}{%
- \unskip%
- \end{list}%
-}
-
-% Used when hyperlinks are turned off
-\newcommand{\doxyref}[3]{%
- \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
-}
-
-% Used to link to a table when hyperlinks are turned on
-\newcommand{\doxytablelink}[2]{%
- \ref{#1}%
-}
-
-% Used to link to a table when hyperlinks are turned off
-\newcommand{\doxytableref}[3]{%
- \ref{#3}%
-}
-
-% Used by @addindex
-\newcommand{\lcurly}{\{}
-\newcommand{\rcurly}{\}}
-
-% Colors used for syntax highlighting
-\definecolor{comment}{rgb}{0.5,0.0,0.0}
-\definecolor{keyword}{rgb}{0.0,0.5,0.0}
-\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
-\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
-\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
-\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
-\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
-\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
-\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
-\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
-\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
-
-% Color used for table heading
-\newcommand{\tableheadbgcolor}{lightgray}%
-
-% Version of hypertarget with correct landing location
-\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
-
-% possibility to have sections etc. be within the margins
-% unfortunately had to copy part of book.cls and add \raggedright
-\makeatletter
-\newcommand\doxysection{\@startsection {section}{1}{\z@}%
- {-3.5ex \@plus -1ex \@minus -.2ex}%
- {2.3ex \@plus.2ex}%
- {\raggedright\normalfont\Large\bfseries}}
-\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
- {-3.25ex\@plus -1ex \@minus -.2ex}%
- {1.5ex \@plus .2ex}%
- {\raggedright\normalfont\large\bfseries}}
-\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
- {-3.25ex\@plus -1ex \@minus -.2ex}%
- {1.5ex \@plus .2ex}%
- {\raggedright\normalfont\normalsize\bfseries}}
-\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}%
- {3.25ex \@plus1ex \@minus.2ex}%
- {-1em}%
- {\raggedright\normalfont\normalsize\bfseries}}
-\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\raggedright\normalfont\normalsize\bfseries}}
-\makeatother
-% Define caption that is also suitable in a table
-\makeatletter
-\def\doxyfigcaption{%
-\H@refstepcounter{figure}%
-\@dblarg{\@caption{figure}}}
-\makeatother
-
-% Define alpha enumarative names for counters > 26
-\makeatletter
-\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname}
-\def\@enumalphalphcnt#1{\alphalph{#1}}
-\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname}
-\def\@enumAlphAlphcnt#1{\AlphAlph{#1}}
-\makeatother
-\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa}
-\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA}
diff --git a/latex/longtable_doxygen.sty b/latex/longtable_doxygen.sty
deleted file mode 100644
index a0eb314f..00000000
--- a/latex/longtable_doxygen.sty
+++ /dev/null
@@ -1,448 +0,0 @@
-%%
-%% This is file `longtable.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% longtable.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% The source is maintained by the LaTeX Project team and bug
-%% reports for it can be opened at http://latex-project.org/bugs.html
-%% (but please observe conditions on bug reports sent to that address!)
-%%
-%% Copyright 1993-2016
-%% The LaTeX3 Project and any individual authors listed elsewhere
-%% in this file.
-%%
-%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
-%% --------------------------------------------------------------------------
-%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This file may only be distributed together with a copy of the LaTeX
-%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
-%% without such generated files.
-%%
-%% The list of all files belonging to the LaTeX `Tools Bundle' is
-%% given in the file `manifest.txt'.
-%%
-%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
-\NeedsTeXFormat{LaTeX2e}[1995/06/01]
-\ProvidesPackage{longtable_doxygen}
- [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen]
-\def\LT@err{\PackageError{longtable}}
-\def\LT@warn{\PackageWarning{longtable}}
-\def\LT@final@warn{%
- \AtEndDocument{%
- \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
- \global\let\LT@final@warn\relax}
-\DeclareOption{errorshow}{%
- \def\LT@warn{\PackageInfo{longtable}}}
-\DeclareOption{pausing}{%
- \def\LT@warn#1{%
- \LT@err{#1}{This is not really an error}}}
-\DeclareOption{set}{}
-\DeclareOption{final}{}
-\ProcessOptions
-\newskip\LTleft \LTleft=\fill
-\newskip\LTright \LTright=\fill
-\newskip\LTpre \LTpre=\bigskipamount
-\newskip\LTpost \LTpost=\bigskipamount
-\newcount\LTchunksize \LTchunksize=20
-\let\c@LTchunksize\LTchunksize
-\newdimen\LTcapwidth \LTcapwidth=4in
-\newbox\LT@head
-\newbox\LT@firsthead
-\newbox\LT@foot
-\newbox\LT@lastfoot
-\newcount\LT@cols
-\newcount\LT@rows
-\newcounter{LT@tables}
-\newcounter{LT@chunks}[LT@tables]
-\ifx\c@table\undefined
- \newcounter{table}
- \def\fnum@table{\tablename~\thetable}
-\fi
-\ifx\tablename\undefined
- \def\tablename{Table}
-\fi
-\newtoks\LT@p@ftn
-\mathchardef\LT@end@pen=30000
-\def\longtable{%
- \par
- \ifx\multicols\@undefined
- \else
- \ifnum\col@number>\@ne
- \@twocolumntrue
- \fi
- \fi
- \if@twocolumn
- \LT@err{longtable not in 1-column mode}\@ehc
- \fi
- \begingroup
- \@ifnextchar[\LT@array{\LT@array[x]}}
-\def\LT@array[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
- \if l#1%
- \LTleft\z@ \LTright\fill
- \else\if r#1%
- \LTleft\fill \LTright\z@
- \else\if c#1%
- \LTleft\fill \LTright\fill
- \fi\fi\fi
- \let\LT@mcol\multicolumn
- \let\LT@@tabarray\@tabarray
- \let\LT@@hl\hline
- \def\@tabarray{%
- \let\hline\LT@@hl
- \LT@@tabarray}%
- \let\\\LT@tabularcr\let\tabularnewline\\%
- \def\newpage{\noalign{\break}}%
- \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
- \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
- \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
- \@tempdima\ht\strutbox
- \let\@endpbox\LT@endpbox
- \ifx\extrarowheight\@undefined
- \let\@acol\@tabacol
- \let\@classz\@tabclassz \let\@classiv\@tabclassiv
- \def\@startpbox{\vtop\LT@startpbox}%
- \let\@@startpbox\@startpbox
- \let\@@endpbox\@endpbox
- \let\LT@LL@FM@cr\@tabularcr
- \else
- \advance\@tempdima\extrarowheight
- \col@sep\tabcolsep
- \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
- \fi
- \setbox\@arstrutbox\hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
- \let\@sharp##\let\protect\relax
- \begingroup
- \@mkpream{#2}%
- \xdef\LT@bchunk{%
- \global\advance\c@LT@chunks\@ne
- \global\LT@rows\z@\setbox\z@\vbox\bgroup
- \LT@setprevdepth
- \tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
- \endgroup
- \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
- \LT@make@row
- \m@th\let\par\@empty
- \everycr{}\lineskip\z@\baselineskip\z@
- \LT@bchunk}
-\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
-\def\LT@start{%
- \let\LT@start\endgraf
- \endgraf\penalty\z@\vskip\LTpre
- \dimen@\pagetotal
- \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
- \advance\dimen@ \ht\LT@foot
- \dimen@ii\vfuzz
- \vfuzz\maxdimen
- \setbox\tw@\copy\z@
- \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
- \setbox\tw@\vbox{\unvbox\tw@}%
- \vfuzz\dimen@ii
- \advance\dimen@ \ht
- \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@\dp
- \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
- \advance\dimen@ -\pagegoal
- \ifdim \dimen@>\z@\vfil\break\fi
- \global\@colroom\@colht
- \ifvoid\LT@foot\else
- \advance\vsize-\ht\LT@foot
- \global\advance\@colroom-\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
- \maxdepth\z@
- \fi
- \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
- \output{\LT@output}}
-\def\endlongtable{%
- \crcr
- \noalign{%
- \let\LT@entry\LT@entry@chop
- \xdef\LT@save@row{\LT@save@row}}%
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \if@filesw
- {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
- \gdef\expandafter\noexpand
- \csname LT@\romannumeral\c@LT@tables\endcsname
- {\LT@save@row}}}%
- \fi
- \ifx\LT@save@row\LT@@save@row
- \else
- \LT@warn{Column \@width s have changed\MessageBreak
- in table \thetable}%
- \LT@final@warn
- \fi
- \endgraf\penalty -\LT@end@pen
- \endgroup
- \global\@mparbottom\z@
- \pagegoal\vsize
- \endgraf\penalty\z@\addvspace\LTpost
- \ifvoid\footins\else\insert\footins{}\fi}
-\def\LT@nofcols#1&{%
- \futurelet\@let@token\LT@n@fcols}
-\def\LT@n@fcols{%
- \advance\LT@cols\@ne
- \ifx\@let@token\LT@nofcols
- \expandafter\@gobble
- \else
- \expandafter\LT@nofcols
- \fi}
-\def\LT@tabularcr{%
- \relax\iffalse{\fi\ifnum0=`}\fi
- \@ifstar
- {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
- \LT@t@bularcr}%
- {\LT@t@bularcr}}
-\let\LT@crcr\crcr
-\let\LT@setprevdepth\relax
-\def\LT@t@bularcr{%
- \global\advance\LT@rows\@ne
- \ifnum\LT@rows=\LTchunksize
- \gdef\LT@setprevdepth{%
- \prevdepth\z@\global
- \global\let\LT@setprevdepth\relax}%
- \expandafter\LT@xtabularcr
- \else
- \ifnum0=`{}\fi
- \expandafter\LT@LL@FM@cr
- \fi}
-\def\LT@xtabularcr{%
- \@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
-\def\LT@ntabularcr{%
- \ifnum0=`{}\fi
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \LT@bchunk}
-\def\LT@argtabularcr[#1]{%
- \ifnum0=`{}\fi
- \ifdim #1>\z@
- \unskip\@xargarraycr{#1}%
- \else
- \@yargarraycr{#1}%
- \fi
- \LT@echunk
- \LT@start
- \unvbox\z@
- \LT@get@widths
- \LT@bchunk}
-\def\LT@echunk{%
- \crcr\LT@save@row\cr\egroup
- \global\setbox\@ne\lastbox
- \unskip
- \egroup}
-\def\LT@entry#1#2{%
- \ifhmode\@firstofone{&}\fi\omit
- \ifnum#1=\c@LT@chunks
- \else
- \kern#2\relax
- \fi}
-\def\LT@entry@chop#1#2{%
- \noexpand\LT@entry
- {\ifnum#1>\c@LT@chunks
- 1}{0pt%
- \else
- #1}{#2%
- \fi}}
-\def\LT@entry@write{%
- \noexpand\LT@entry^^J%
- \@spaces}
-\def\LT@kill{%
- \LT@echunk
- \LT@get@widths
- \expandafter\LT@rebox\LT@bchunk}
-\def\LT@rebox#1\bgroup{%
- #1\bgroup
- \unvbox\z@
- \unskip
- \setbox\z@\lastbox}
-\def\LT@blank@row{%
- \xdef\LT@save@row{\expandafter\LT@build@blank
- \romannumeral\number\LT@cols 001 }}
-\def\LT@build@blank#1{%
- \if#1m%
- \noexpand\LT@entry{1}{0pt}%
- \expandafter\LT@build@blank
- \fi}
-\def\LT@make@row{%
- \global\expandafter\let\expandafter\LT@save@row
- \csname LT@\romannumeral\c@LT@tables\endcsname
- \ifx\LT@save@row\relax
- \LT@blank@row
- \else
- {\let\LT@entry\or
- \if!%
- \ifcase\expandafter\expandafter\expandafter\LT@cols
- \expandafter\@gobble\LT@save@row
- \or
- \else
- \relax
- \fi
- !%
- \else
- \aftergroup\LT@blank@row
- \fi}%
- \fi}
-\let\setlongtables\relax
-\def\LT@get@widths{%
- \setbox\tw@\hbox{%
- \unhbox\@ne
- \let\LT@old@row\LT@save@row
- \global\let\LT@save@row\@empty
- \count@\LT@cols
- \loop
- \unskip
- \setbox\tw@\lastbox
- \ifhbox\tw@
- \LT@def@row
- \advance\count@\m@ne
- \repeat}%
- \ifx\LT@@save@row\@undefined
- \let\LT@@save@row\LT@save@row
- \fi}
-\def\LT@def@row{%
- \let\LT@entry\or
- \edef\@tempa{%
- \ifcase\expandafter\count@\LT@old@row
- \else
- {1}{0pt}%
- \fi}%
- \let\LT@entry\relax
- \xdef\LT@save@row{%
- \LT@entry
- \expandafter\LT@max@sel\@tempa
- \LT@save@row}}
-\def\LT@max@sel#1#2{%
- {\ifdim#2=\wd\tw@
- #1%
- \else
- \number\c@LT@chunks
- \fi}%
- {\the\wd\tw@}}
-\def\LT@hline{%
- \noalign{\ifnum0=`}\fi
- \penalty\@M
- \futurelet\@let@token\LT@@hline}
-\def\LT@@hline{%
- \ifx\@let@token\hline
- \global\let\@gtempa\@gobble
- \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
- \else
- \global\let\@gtempa\@empty
- \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
- \fi
- \ifnum0=`{\fi}%
- \multispan\LT@cols
- \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\LT@sep}%
- \multispan\LT@cols
- \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\penalty\@M}%
- \@gtempa}
-\def\LT@caption{%
- \noalign\bgroup
- \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
-\def\LT@c@ption#1[#2]#3{%
- \LT@makecaption#1\fnum@table{#3}%
- \def\@tempa{#2}%
- \ifx\@tempa\@empty\else
- {\let\\\space
- \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
- \fi}
-\def\LT@capti@n{%
- \@ifstar
- {\egroup\LT@c@ption\@gobble[]}%
- {\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
-\def\LT@makecaption#1#2#3{%
- \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
- \sbox\@tempboxa{#1{#2: }#3}%
- \ifdim\wd\@tempboxa>\hsize
- #1{#2: }#3%
- \else
- \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
- \fi
- \endgraf\vskip\baselineskip}%
- \hss}}}
-\def\LT@output{%
- \ifnum\outputpenalty <-\@Mi
- \ifnum\outputpenalty > -\LT@end@pen
- \LT@err{floats and marginpars not allowed in a longtable}\@ehc
- \else
- \setbox\z@\vbox{\unvbox\@cclv}%
- \ifdim \ht\LT@lastfoot>\ht\LT@foot
- \dimen@\pagegoal
- \advance\dimen@-\ht\LT@lastfoot
- \ifdim\dimen@<\ht\z@
- \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
- \@makecol
- \@outputpage
- \setbox\z@\vbox{\box\LT@head}%
- \fi
- \fi
- \global\@colroom\@colht
- \global\vsize\@colht
- \vbox
- {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
- \fi
- \else
- \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
- \@makecol
- \@outputpage
- \global\vsize\@colroom
- \copy\LT@head\nobreak
- \fi}
-\def\LT@end@hd@ft#1{%
- \LT@echunk
- \ifx\LT@start\endgraf
- \LT@err
- {Longtable head or foot not at start of table}%
- {Increase LTchunksize}%
- \fi
- \setbox#1\box\z@
- \LT@get@widths
- \LT@bchunk}
-\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
-\def\endhead{\LT@end@hd@ft\LT@head}
-\def\endfoot{\LT@end@hd@ft\LT@foot}
-\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
-\def\LT@startpbox#1{%
- \bgroup
- \let\@footnotetext\LT@p@ftntext
- \setlength\hsize{#1}%
- \@arrayparboxrestore
- \vrule \@height \ht\@arstrutbox \@width \z@}
-\def\LT@endpbox{%
- \@finalstrut\@arstrutbox
- \egroup
- \the\LT@p@ftn
- \global\LT@p@ftn{}%
- \hfil}
-\def\LT@p@ftntext#1{%
- \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
- \global\LT@p@ftn\expandafter{\@tempa{#1}}}%
-
-\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen}
-\endinput
-%%
-%% End of file `longtable.sty'.
diff --git a/latex/md__c_o_n_t_r_i_b_u_t_o_r_s.tex b/latex/md__c_o_n_t_r_i_b_u_t_o_r_s.tex
deleted file mode 100644
index 52857e87..00000000
--- a/latex/md__c_o_n_t_r_i_b_u_t_o_r_s.tex
+++ /dev/null
@@ -1,263 +0,0 @@
-GLFW exists because people around the world donated their time and lent their skills. This list only includes contributions to the main repository and excludes other invaluable contributions like language bindings and text and video tutorials.
-
-
-\begin{DoxyItemize}
-\item Bobyshev Alexander
-\item Laurent Aphecetche
-\item Matt Arsenault
-\item Takuro Ashie
-\item ashishgamedev
-\item David Avedissian
-\item Luca Bacci
-\item Keith Bauer
-\item John Bartholomew
-\item Coşku Baş
-\item Niklas Behrens
-\item Andrew Belt
-\item Nevyn Bengtsson
-\item Niklas Bergström
-\item Denis Bernard
-\item Bi\+Bi
-\item Doug Binks
-\item blanco
-\item Waris Boonyasiriwat
-\item Kyle Brenneman
-\item Rok Breulj
-\item The\+Broken\+Rail
-\item Kai Burjack
-\item Martin Capitanio
-\item Nicolas Caramelli
-\item David Carlier
-\item Arturo Castro
-\item Chi-\/kwan Chan
-\item The\+Chocolate\+Ore
-\item Ali Chraghi
-\item Joseph Chua
-\item Ian Clarkson
-\item Michał Cichoń
-\item Lambert Clara
-\item Anna Clarke
-\item Josh Codd
-\item Yaron Cohen-\/\+Tal
-\item Omar Cornut
-\item Andrew Corrigan
-\item Bailey Cosier
-\item Noel Cower
-\item Curiouser\+Thing
-\item Jason Daly
-\item danhambleton
-\item Jarrod Davis
-\item Olivier Delannoy
-\item Paul R. Deppe
-\item Michael Dickens
-\item Роман Донченко
-\item Mario Dorn
-\item Wolfgang Draxinger
-\item Jonathan Dummer
-\item Ralph Eastwood
-\item Fredrik Ehnbom
-\item Robin Eklind
-\item Jan Ekström
-\item Siavash Eliasi
-\item Ahmad Fatoum
-\item Nikita Fediuchin
-\item Felipe Ferreira
-\item Michael Fogleman
-\item Jason Francis
-\item Gerald Franz
-\item Mário Freitas
-\item Ge\+O4d
-\item Marcus Geelnard
-\item ghuser404
-\item Charles Giessen
-\item Ryan C. Gordon
-\item Stephen Gowen
-\item Kovid Goyal
-\item Kevin Grandemange
-\item Eloi Marín Gratacós
-\item Stefan Gustavson
-\item Andrew Gutekanst
-\item Stephen Gutekanst
-\item Jonathan Hale
-\item hdf89shfdfs
-\item Sylvain Hellegouarch
-\item Björn Hempel
-\item Matthew Henry
-\item heromyth
-\item Lucas Hinderberger
-\item Paul Holden
-\item Hajime Hoshi
-\item Warren Hu
-\item Charles Huber
-\item Brent Huisman
-\item illustris
-\item In\+Kryption
-\item Intellectual\+Kitty
-\item Aaron Jacobs
-\item Jannik\+GM
-\item Andreas O. Jansen
-\item Erik S. V. Jansson
-\item jj\+YBdx4\+IL
-\item Toni Jovanoski
-\item Arseny Kapoulkine
-\item Cem Karan
-\item Osman Keskin
-\item Koray Kilinc
-\item Josh Kilmer
-\item Byunghoon Kim
-\item Cameron King
-\item Peter Knut
-\item Christoph Kubisch
-\item Yuri Kunde Schlesner
-\item Rokas Kupstys
-\item Konstantin Käfer
-\item Eric Larson
-\item Francis Lecavalier
-\item Jong Won Lee
-\item Robin Leffmann
-\item Glenn Lewis
-\item Shane Liesegang
-\item Anders Lindqvist
-\item Leon Linhart
-\item Marco Lizza
-\item Eyal Lotem
-\item Aaron Loucks
-\item Luflosi
-\item lukect
-\item Tristam Mac\+Donald
-\item Hans Mackowiak
-\item Ramiro Magno
-\item Дмитри Малышев
-\item Zbigniew Mandziejewicz
-\item Adam Marcus
-\item Célestin Marot
-\item Kyle Mc\+Donald
-\item David V. Mc\+Kay
-\item David Medlock
-\item Bryce Mehring
-\item Jonathan Mercier
-\item Marcel Metz
-\item Liam Middlebrook
-\item Ave Milia
-\item Jonathan Miller
-\item Kenneth Miller
-\item Bruce Mitchener
-\item Jack Moffitt
-\item Ravi Mohan
-\item Jeff Molofee
-\item Alexander Monakov
-\item Pierre Morel
-\item Jon Morton
-\item Pierre Moulon
-\item Martins Mozeiko
-\item Pascal Muetschard
-\item James Murphy
-\item Julian Møller
-\item ndogxj
-\item F. Nedelec
-\item n3rdopolis
-\item Kristian Nielsen
-\item Joel Niemelä
-\item Kamil Nowakowski
-\item onox
-\item Denis Ovod
-\item Ozzy
-\item Andri Pálsson
-\item luz paz
-\item Peoro
-\item Braden Pellett
-\item Christopher Pelloux
-\item Michael Pennington
-\item Arturo J. Pérez
-\item Vladimir Perminov
-\item Olivier Perret
-\item Anthony Pesch
-\item Orson Peters
-\item Emmanuel Gil Peyrot
-\item Cyril Pichard
-\item Pilzschaf
-\item Keith Pitt
-\item Stanislav Podgorskiy
-\item Konstantin Podsvirov
-\item Nathan Poirier
-\item Alexandre Pretyman
-\item Pablo Prietz
-\item przemekmirek
-\item pthom
-\item Martin Pulec
-\item Guillaume Racicot
-\item Christian Rauch
-\item Philip Rideout
-\item Eddie Ringle
-\item Max Risuhin
-\item Joe Roback
-\item Jorge Rodriguez
-\item Jari Ronkainen
-\item Luca Rood
-\item Ed Ropple
-\item Aleksey Rybalkin
-\item Mikko Rytkönen
-\item Riku Salminen
-\item Brandon Schaefer
-\item Sebastian Schuberth
-\item Christian Sdunek
-\item Matt Sealey
-\item Steve Sexton
-\item Arkady Shapkin
-\item Ali Sherief
-\item Yoshiki Shibukawa
-\item Dmitri Shuralyov
-\item Joao da Silva
-\item Daniel Sieger
-\item Daniel Skorupski
-\item Slemmie
-\item Anthony Smith
-\item Bradley Smith
-\item Cliff Smolinsky
-\item Patrick Snape
-\item Erlend Sogge Heggen
-\item Olivier Sohn
-\item Julian Squires
-\item Johannes Stein
-\item Pontus Stenetorp
-\item Michael Stocker
-\item Justin Stoecker
-\item Elviss Strazdins
-\item Paul Sultana
-\item Nathan Sweet
-\item TTK-\/\+Bandit
-\item Jared Tiala
-\item Sergey Tikhomirov
-\item Arthur Tombs
-\item Tronic\+Labs
-\item Ioannis Tsakpinis
-\item Samuli Tuomola
-\item Matthew Turner
-\item urraka
-\item Elias Vanderstuyft
-\item Stef Velzel
-\item Jari Vetoniemi
-\item Ricardo Vieira
-\item Nicholas Vitovitch
-\item Simon Voordouw
-\item Corentin Wallez
-\item Torsten Walluhn
-\item Patrick Walton
-\item Xo Wang
-\item Andre Weissflog
-\item Jay Weisskopf
-\item Frank Wille
-\item Andy Williams
-\item Joel Winarske
-\item Richard A. Wilkes
-\item Tatsuya Yatagawa
-\item Ryogo Yoshimura
-\item Lukas Zanner
-\item Andrey Zholos
-\item Aihui Zhu
-\item Santi Zupancic
-\item Jonas Ådahl
-\item Lasse Öörni
-\item Leonard König
-\item All the unmentioned and anonymous contributors in the GLFW community, for bug reports, patches, feedback, testing and encouragement
-\end{DoxyItemize}
\ No newline at end of file
diff --git a/latex/md__l_i_c_e_n_s_e.tex b/latex/md__l_i_c_e_n_s_e.tex
deleted file mode 100644
index d9924820..00000000
--- a/latex/md__l_i_c_e_n_s_e.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2002-\/2006 Marcus Geelnard
-
-Copyright (c) 2006-\/2019 Camilla Löwy
-
-This software is provided \textquotesingle{}as-\/is\textquotesingle{}, without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions\+:
-
-
-\begin{DoxyEnumerate}
-\item The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-\item Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-\item This notice may not be removed or altered from any source distribution.
-\end{DoxyEnumerate}
\ No newline at end of file
diff --git a/latex/md__r_e_a_d_m_e.tex b/latex/md__r_e_a_d_m_e.tex
deleted file mode 100644
index 679be00b..00000000
--- a/latex/md__r_e_a_d_m_e.tex
+++ /dev/null
@@ -1,262 +0,0 @@
-\href{https://github.com/glfw/glfw/actions}{\texttt{ }} \href{https://ci.appveyor.com/project/elmindreda/glfw}{\texttt{ }} \href{https://scan.coverity.com/projects/glfw-glfw}{\texttt{ }}\hypertarget{md__r_e_a_d_m_e_autotoc_md2}{}\doxysection{Introduction}\label{md__r_e_a_d_m_e_autotoc_md2}
-GLFW is an Open Source, multi-\/platform library for Open\+GL, Open\+GL ES and Vulkan application development. It provides a simple, platform-\/independent API for creating windows, contexts and surfaces, reading input, handling events, etc.
-
-GLFW natively supports Windows, mac\+OS and Linux and other Unix-\/like systems. On Linux both X11 and Wayland are supported.
-
-GLFW is licensed under the \href{https://www.glfw.org/license.html}{\texttt{ zlib/libpng license}}.
-
-You can \href{https://www.glfw.org/download.html}{\texttt{ download}} the latest stable release as source or Windows binaries, or fetch the {\ttfamily latest} branch from Git\+Hub. Each release starting with 3.\+0 also has a corresponding \href{https://github.com/glfw/glfw/releases}{\texttt{ annotated tag}} with source and binary archives.
-
-The \href{https://www.glfw.org/docs/latest/}{\texttt{ documentation}} is available online and is included in all source and binary archives. See the \href{https://www.glfw.org/docs/latest/news.html}{\texttt{ release notes}} for new features, caveats and deprecations in the latest release. For more details see the \href{https://www.glfw.org/changelog.html}{\texttt{ version history}}.
-
-The {\ttfamily master} branch is the stable integration branch and {\itshape should} always compile and run on all supported platforms, although details of newly added features may change until they have been included in a release. New features and many bug fixes live in \href{https://github.com/glfw/glfw/branches/all}{\texttt{ other branches}} until they are stable enough to merge.
-
-If you are new to GLFW, you may find the \href{https://www.glfw.org/docs/latest/quick.html}{\texttt{ tutorial}} for GLFW 3 useful. If you have used GLFW 2 in the past, there is a \href{https://www.glfw.org/docs/latest/moving.html}{\texttt{ transition guide}} for moving to the GLFW 3 API.
-
-GLFW exists because of the contributions of /\+Users/andrjans/\+Library/\+Mobile Documents/com$\sim$apple$\sim$\+Cloud\+Docs/\+Xcode projects/glfw/\+CONTRIBUTORS.\+md \char`\"{}many people\char`\"{} around the world, whether by reporting bugs, providing community support, adding features, reviewing or testing code, debugging, proofreading docs, suggesting features or fixing bugs.\hypertarget{md__r_e_a_d_m_e_autotoc_md3}{}\doxysection{Compiling GLFW}\label{md__r_e_a_d_m_e_autotoc_md3}
-GLFW itself requires only the headers and libraries for your OS and window system. It does not need the headers for any context creation API (WGL, GLX, EGL, NSGL, OSMesa) or rendering API (Open\+GL, Open\+GL ES, Vulkan) to enable support for them.
-
-GLFW supports compilation on Windows with Visual C++ 2010 and later, Min\+GW and Min\+GW-\/w64, on mac\+OS with Clang and on Linux and other Unix-\/like systems with GCC and Clang. It will likely compile in other environments as well, but this is not regularly tested.
-
-There are \href{https://www.glfw.org/download.html}{\texttt{ pre-\/compiled Windows binaries}} available for all supported compilers.
-
-See the \href{https://www.glfw.org/docs/latest/compile.html}{\texttt{ compilation guide}} for more information about how to compile GLFW yourself.\hypertarget{md__r_e_a_d_m_e_autotoc_md4}{}\doxysection{Using GLFW}\label{md__r_e_a_d_m_e_autotoc_md4}
-See the \href{https://www.glfw.org/docs/latest/}{\texttt{ documentation}} for tutorials, guides and the API reference.\hypertarget{md__r_e_a_d_m_e_autotoc_md5}{}\doxysection{Contributing to GLFW}\label{md__r_e_a_d_m_e_autotoc_md5}
-See the \href{https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md}{\texttt{ contribution guide}} for more information.\hypertarget{md__r_e_a_d_m_e_autotoc_md6}{}\doxysection{System requirements}\label{md__r_e_a_d_m_e_autotoc_md6}
-GLFW supports Windows XP and later and mac\+OS 10.\+8 and later. Linux and other Unix-\/like systems running the X Window System are supported even without a desktop environment or modern extensions, although some features require a running window or clipboard manager. The OSMesa backend requires Mesa 6.\+3.
-
-See the \href{https://www.glfw.org/docs/latest/compat.html}{\texttt{ compatibility guide}} in the documentation for more information.\hypertarget{md__r_e_a_d_m_e_autotoc_md7}{}\doxysection{Dependencies}\label{md__r_e_a_d_m_e_autotoc_md7}
-GLFW itself needs only CMake 3.\+1 or later and the headers and libraries for your OS and window system.
-
-The examples and test programs depend on a number of tiny libraries. These are located in the {\ttfamily deps/} directory.
-
-
-\begin{DoxyItemize}
-\item \href{https://github.com/kimgr/getopt_port/}{\texttt{ getopt\+\_\+port}} for examples with command-\/line options
-\item \href{https://github.com/tinycthread/tinycthread}{\texttt{ Tiny\+CThread}} for threaded examples
-\item \href{https://github.com/Dav1dde/glad}{\texttt{ glad2}} for loading Open\+GL and Vulkan functions
-\item \href{https://github.com/datenwolf/linmath.h}{\texttt{ linmath.\+h}} for linear algebra in examples
-\item \href{https://github.com/Immediate-Mode-UI/Nuklear}{\texttt{ Nuklear}} for test and example UI
-\item \href{https://github.com/nothings/stb}{\texttt{ stb\+\_\+image\+\_\+write}} for writing images to disk
-\end{DoxyItemize}
-
-The documentation is generated with \href{https://doxygen.org/}{\texttt{ Doxygen}} if CMake can find that tool.\hypertarget{md__r_e_a_d_m_e_autotoc_md8}{}\doxysection{Reporting bugs}\label{md__r_e_a_d_m_e_autotoc_md8}
-Bugs are reported to our \href{https://github.com/glfw/glfw/issues}{\texttt{ issue tracker}}. Please check the \href{https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md}{\texttt{ contribution guide}} for information on what to include when reporting a bug.\hypertarget{md__r_e_a_d_m_e_autotoc_md9}{}\doxysection{Changelog}\label{md__r_e_a_d_m_e_autotoc_md9}
-
-\begin{DoxyItemize}
-\item Added {\ttfamily GLFW\+\_\+\+PLATFORM} init hint for runtime platform selection (\#1958)
-\item Added {\ttfamily GLFW\+\_\+\+ANY\+\_\+\+PLATFORM}, {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+WIN32}, {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+COCOA}, {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+WAYLAND}, {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+X11} and {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+NULL} symbols to specify the desired platform (\#1958)
-\item Added {\ttfamily glfw\+Get\+Platform} function to query what platform was selected (\#1655,\#1958)
-\item Added {\ttfamily glfw\+Platform\+Supported} function to query if a platform is supported (\#1655,\#1958)
-\item Added {\ttfamily glfw\+Init\+Allocator} for setting a custom memory allocator (\#544,\#1628,\#1947)
-\item Added {\ttfamily GLFWallocator} struct and {\ttfamily GLFWallocatefun}, {\ttfamily GLFWreallocatefun} and {\ttfamily GLFWdeallocatefun} types (\#544,\#1628,\#1947)
-\item Added {\ttfamily glfw\+Init\+Vulkan\+Loader} for using a non-\/default Vulkan loader (\#1374,\#1890)
-\item Added {\ttfamily GLFW\+\_\+\+RESIZE\+\_\+\+NWSE\+\_\+\+CURSOR}, {\ttfamily GLFW\+\_\+\+RESIZE\+\_\+\+NESW\+\_\+\+CURSOR}, {\ttfamily GLFW\+\_\+\+RESIZE\+\_\+\+ALL\+\_\+\+CURSOR} and {\ttfamily GLFW\+\_\+\+NOT\+\_\+\+ALLOWED\+\_\+\+CURSOR} cursor shapes (\#427)
-\item Added {\ttfamily GLFW\+\_\+\+RESIZE\+\_\+\+EW\+\_\+\+CURSOR} alias for {\ttfamily GLFW\+\_\+\+HRESIZE\+\_\+\+CURSOR} (\#427)
-\item Added {\ttfamily GLFW\+\_\+\+RESIZE\+\_\+\+NS\+\_\+\+CURSOR} alias for {\ttfamily GLFW\+\_\+\+VRESIZE\+\_\+\+CURSOR} (\#427)
-\item Added {\ttfamily GLFW\+\_\+\+POINTING\+\_\+\+HAND\+\_\+\+CURSOR} alias for {\ttfamily GLFW\+\_\+\+HAND\+\_\+\+CURSOR} (\#427)
-\item Added {\ttfamily GLFW\+\_\+\+MOUSE\+\_\+\+PASSTHROUGH} window hint for letting mouse input pass through the window (\#1236,\#1568)
-\item Added {\ttfamily GLFW\+\_\+\+CURSOR\+\_\+\+CAPTURED} cursor mode to confine the cursor to the window content area (\#58)
-\item Added {\ttfamily GLFW\+\_\+\+POSITION\+\_\+X} and {\ttfamily GLFW\+\_\+\+POSITION\+\_\+Y} window hints for initial position (\#1603,\#1747)
-\item Added {\ttfamily GLFW\+\_\+\+ANY\+\_\+\+POSITION} hint value for letting the window manager choose (\#1603,\#1747)
-\item Added {\ttfamily GLFW\+\_\+\+PLATFORM\+\_\+\+UNAVAILABLE} error for platform detection failures (\#1958)
-\item Added {\ttfamily GLFW\+\_\+\+FEATURE\+\_\+\+UNAVAILABLE} error for platform limitations (\#1692)
-\item Added {\ttfamily GLFW\+\_\+\+FEATURE\+\_\+\+UNIMPLEMENTED} error for incomplete backends (\#1692)
-\item Added {\ttfamily GLFW\+\_\+\+WAYLAND\+\_\+\+APP\+\_\+\+ID} window hint string for Wayland app\+\_\+id selection (\#2121,\#2122)
-\item Added {\ttfamily GLFW\+\_\+\+ANGLE\+\_\+\+PLATFORM\+\_\+\+TYPE} init hint and {\ttfamily GLFW\+\_\+\+ANGLE\+\_\+\+PLATFORM\+\_\+\+TYPE\+\_\+$\ast$} values to select ANGLE backend (\#1380)
-\item Added {\ttfamily GLFW\+\_\+\+X11\+\_\+\+XCB\+\_\+\+VULKAN\+\_\+\+SURFACE} init hint for selecting X11 Vulkan surface extension (\#1793)
-\item Added {\ttfamily GLFW\+\_\+\+NATIVE\+\_\+\+INCLUDE\+\_\+\+NONE} for disabling inclusion of native headers (\#1348)
-\item Added {\ttfamily GLFW\+\_\+\+BUILD\+\_\+\+WIN32} CMake option for enabling Win32 support (\#1958)
-\item Added {\ttfamily GLFW\+\_\+\+BUILD\+\_\+\+COCOA} CMake option for enabling Cocoa support (\#1958)
-\item Added {\ttfamily GLFW\+\_\+\+BUILD\+\_\+\+X11} CMake option for enabling X11 support (\#1958)
-\item Added {\ttfamily GLFW\+\_\+\+LIBRARY\+\_\+\+TYPE} CMake variable for overriding the library type (\#279,\#1307,\#1497,\#1574,\#1928)
-\item Added {\ttfamily GLFW\+\_\+\+PKG\+\_\+\+CONFIG\+\_\+\+REQUIRES\+\_\+\+PRIVATE} and {\ttfamily GLFW\+\_\+\+PKG\+\_\+\+CONFIG\+\_\+\+LIBS\+\_\+\+PRIVATE} CMake variables exposing pkg-\/config dependencies (\#1307)
-\item Made joystick subsystem initialize at first use (\#1284,\#1646)
-\item Made {\ttfamily GLFW\+\_\+\+DOUBLEBUFFER} a read-\/only window attribute
-\item Updated the minimum required CMake version to 3.\+1
-\item Updated gamepad mappings from upstream
-\item Disabled tests and examples by default when built as a CMake subdirectory
-\item Renamed {\ttfamily GLFW\+\_\+\+USE\+\_\+\+WAYLAND} CMake option to {\ttfamily GLFW\+\_\+\+BUILD\+\_\+\+WAYLAND} (\#1958)
-\item Removed {\ttfamily GLFW\+\_\+\+USE\+\_\+\+OSMESA} CMake option enabling the Null platform (\#1958)
-\item Removed CMake generated configuration header
-\item Bugfix\+: The CMake config-\/file package used an absolute path and was not relocatable (\#1470)
-\item Bugfix\+: Video modes with a duplicate screen area were discarded (\#1555,\#1556)
-\item Bugfix\+: Compiling with -\/Wextra-\/semi caused warnings (\#1440)
-\item Bugfix\+: Built-\/in mappings failed because some OEMs re-\/used VID/\+PID (\#1583)
-\item Bugfix\+: Some extension loader headers did not prevent default Open\+GL header inclusion (\#1695)
-\item Bugfix\+: Buffers were swapped at creation on single-\/buffered windows (\#1873)
-\item Bugfix\+: Gamepad mapping updates could spam {\ttfamily GLFW\+\_\+\+INVALID\+\_\+\+VALUE} due to incompatible controllers sharing hardware ID (\#1763)
-\item Bugfix\+: Native access functions for context handles did not check that the API matched
-\item Bugfix\+: {\ttfamily glfw\+Make\+Context\+Current} would access TLS slot before initialization
-\item Bugfix\+: {\ttfamily glfw\+Set\+Gamma\+Ramp} could emit {\ttfamily GLFW\+\_\+\+INVALID\+\_\+\+VALUE} before initialization
-\item Bugfix\+: {\ttfamily glfw\+Get\+Joystick\+User\+Pointer} returned {\ttfamily NULL} during disconnection (\#2092)
-\item \mbox{[}Win32\mbox{]} Added the {\ttfamily GLFW\+\_\+\+WIN32\+\_\+\+KEYBOARD\+\_\+\+MENU} window hint for enabling access to the window menu
-\item \mbox{[}Win32\mbox{]} Added a version info resource to the GLFW DLL
-\item \mbox{[}Win32\mbox{]} Made hidden helper window use its own window class
-\item \mbox{[}Win32\mbox{]} Disabled framebuffer transparency on Windows 7 when DWM windows are opaque (\#1512)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+INCLUDE\+\_\+\+VULKAN} plus {\ttfamily VK\+\_\+\+USE\+\_\+\+PLATFORM\+\_\+\+WIN32\+\_\+\+KHR} caused symbol redefinition (\#1524)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: The cursor position event was emitted before its cursor enter event (\#1490)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: The window hint {\ttfamily GLFW\+\_\+\+MAXIMIZED} did not move or resize the window (\#1499)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Disabled cursor mode interfered with some non-\/client actions
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Super key was not released after Win+V hotkey (\#1622)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily glfw\+Get\+Key\+Name} could access out of bounds and return an invalid pointer
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Some synthetic key events were reported as {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+UNKNOWN} (\#1623)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Non-\/\+BMP Unicode codepoint input was reported as UTF-\/16
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Monitor functions could return invalid values after configuration change (\#1761)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Initialization would segfault on Windows 8 (not 8.\+1) (\#1775)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Duplicate size events were not filtered (\#1610)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Full screen windows were incorrectly resized by DPI changes (\#1582)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+SCALE\+\_\+\+TO\+\_\+\+MONITOR} had no effect on systems older than Windows 10 version 1703 (\#1511)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily USE\+\_\+\+MSVC\+\_\+\+RUNTIME\+\_\+\+LIBRARY\+\_\+\+DLL} had no effect on CMake 3.\+15 or later (\#1783,\#1796)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Compilation with LLVM for Windows failed (\#1807,\#1824,\#1874)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: The foreground lock timeout was overridden, ignoring the user
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Content scale queries could fail silently (\#1615)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Content scales could have garbage values if monitor was recently disconnected (\#1615)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: A window created maximized and undecorated would cover the whole monitor (\#1806)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: The default restored window position was lost when creating a maximized window
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily glfw\+Maximize\+Window} would make a hidden window visible
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily Alt+\+Prt\+Sc} would emit {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+UNKNOWN} and a different scancode than {\ttfamily Prt\+Sc} (\#1993)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+PAUSE} scancode from {\ttfamily glfw\+Get\+Key\+Scancode} did not match event scancode (\#1993)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Instance-\/local operations used executable instance (\#469,\#1296,\#1395)
-\item \mbox{[}Win32\mbox{]} Bugfix\+: The OSMesa library was not unloaded on termination
-\item \mbox{[}Win32\mbox{]} Bugfix\+: Right shift emitted {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+UNKNOWN} when using a CJK IME (\#2050)
-\item \mbox{[}Cocoa\mbox{]} Added support for {\ttfamily VK\+\_\+\+EXT\+\_\+metal\+\_\+surface} (\#1619)
-\item \mbox{[}Cocoa\mbox{]} Added locating the Vulkan loader at runtime in an application bundle
-\item \mbox{[}Cocoa\mbox{]} Moved main menu creation to GLFW initialization time (\#1649)
-\item \mbox{[}Cocoa\mbox{]} Changed {\ttfamily EGLNative\+Window\+Type} from {\ttfamily NSView} to {\ttfamily CALayer} (\#1169)
-\item \mbox{[}Cocoa\mbox{]} Changed F13 key to report Print Screen for cross-\/platform consistency (\#1786)
-\item \mbox{[}Cocoa\mbox{]} Disabled mac\+OS fullscreen when {\ttfamily GLFW\+\_\+\+RESIZABLE} is false
-\item \mbox{[}Cocoa\mbox{]} Removed dependency on the Core\+Video framework
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: {\ttfamily glfw\+Set\+Window\+Size} used a bottom-\/left anchor point (\#1553)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Window remained on screen after destruction until event poll (\#1412)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Event processing before window creation would assert (\#1543)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Undecorated windows could not be iconified on recent mac\+OS
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Touching event queue from secondary thread before main thread would abort (\#1649)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Non-\/\+BMP Unicode codepoint input was reported as UTF-\/16 (\#1635)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Failing to retrieve the refresh rate of built-\/in displays could leak memory
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Objective-\/C files were compiled as C with CMake 3.\+19 (\#1787)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Duplicate video modes were not filtered out (\#1830)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Menu bar was not clickable on mac\+OS 10.\+15+ until it lost and regained focus (\#1648,\#1802)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Monitor name query could segfault on mac\+OS 11 (\#1809,\#1833)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: The install name of the installed dylib was relative (\#1504)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: The Molten\+VK layer contents scale was updated only after related events were emitted
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Moving the cursor programmatically would freeze it for a fraction of a second (\#1962)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: {\ttfamily k\+IOMaster\+Port\+Default} was deprecated in mac\+OS 12.\+0 (\#1980)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: {\ttfamily k\+UTType\+URL} was deprecated in mac\+OS 12.\+0 (\#2003)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: A connected Apple Air\+Play would emit a useless error (\#1791)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: The EGL and OSMesa libraries were not unloaded on termination
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+MAXIMIZED} was always true when {\ttfamily GLFW\+\_\+\+RESIZABLE} was false
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Changing {\ttfamily GLFW\+\_\+\+DECORATED} in mac\+OS fullscreen would abort application (\#1886)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: Setting a monitor from mac\+OS fullscreen would abort application (\#2110)
-\item \mbox{[}Cocoa\mbox{]} Bugfix\+: The Vulkan loader was not loaded from the {\ttfamily Frameworks} bundle subdirectory (\#2113,\#2120)
-\item \mbox{[}X11\mbox{]} Bugfix\+: The CMake files did not check for the XInput headers (\#1480)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Key names were not updated when the keyboard layout changed (\#1462,\#1528)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Decorations could not be enabled after window creation (\#1566)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Content scale fallback value could be inconsistent (\#1578)
-\item \mbox{[}X11\mbox{]} Bugfix\+: {\ttfamily glfw\+Maximize\+Window} had no effect on hidden windows
-\item \mbox{[}X11\mbox{]} Bugfix\+: Clearing {\ttfamily GLFW\+\_\+\+FLOATING} on a hidden window caused invalid read
-\item \mbox{[}X11\mbox{]} Bugfix\+: Changing {\ttfamily GLFW\+\_\+\+FLOATING} on a hidden window could silently fail
-\item \mbox{[}X11\mbox{]} Bugfix\+: Disabled cursor mode was interrupted by indicator windows
-\item \mbox{[}X11\mbox{]} Bugfix\+: Monitor physical dimensions could be reported as zero mm
-\item \mbox{[}X11\mbox{]} Bugfix\+: Window position events were not emitted during resizing (\#1613)
-\item \mbox{[}X11\mbox{]} Bugfix\+: {\ttfamily glfw\+Focus\+Window} could terminate on older WMs or without a WM
-\item \mbox{[}X11\mbox{]} Bugfix\+: Querying a disconnected monitor could segfault (\#1602)
-\item \mbox{[}X11\mbox{]} Bugfix\+: IME input of CJK was broken for \char`\"{}\+C\char`\"{} locale (\#1587,\#1636)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Termination would segfault if the IM had been destroyed
-\item \mbox{[}X11\mbox{]} Bugfix\+: Any IM started after initialization would not be detected
-\item \mbox{[}X11\mbox{]} Bugfix\+: Xlib errors caused by other parts of the application could be reported as GLFW errors
-\item \mbox{[}X11\mbox{]} Bugfix\+: A handle race condition could cause a {\ttfamily Bad\+Window} error (\#1633)
-\item \mbox{[}X11\mbox{]} Bugfix\+: XKB path used keysyms instead of physical locations for non-\/printable keys (\#1598)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Function keys were mapped to {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+UNKNOWN} for some layout combinations (\#1598)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Keys pressed simultaneously with others were not always reported (\#1112,\#1415,\#1472,\#1616)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Some window attributes were not applied on leaving fullscreen (\#1863)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Changing {\ttfamily GLFW\+\_\+\+FLOATING} could leak memory
-\item \mbox{[}X11\mbox{]} Bugfix\+: Icon pixel format conversion worked only by accident, relying on undefined behavior (\#1986)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Dynamic loading on Open\+BSD failed due to soname differences
-\item \mbox{[}X11\mbox{]} Bugfix\+: Waiting for events would fail if file descriptor was too large (\#2024)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Joystick events could lead to busy-\/waiting (\#1872)
-\item \mbox{[}X11\mbox{]} Bugfix\+: {\ttfamily glfw\+Wait\+Events$\ast$} did not continue for joystick events
-\item \mbox{[}X11\mbox{]} Bugfix\+: {\ttfamily glfw\+Post\+Empty\+Event} could be ignored due to race condition (\#379,\#1281,\#1285,\#2033)
-\item \mbox{[}X11\mbox{]} Bugfix\+: Dynamic loading on Net\+BSD failed due to soname differences
-\item \mbox{[}X11\mbox{]} Bugfix\+: Left shift of int constant relied on undefined behavior (\#1951)
-\item \mbox{[}X11\mbox{]} Bugfix\+: The OSMesa libray was not unloaded on termination
-\item \mbox{[}X11\mbox{]} Bugfix\+: A malformed response during selection transfer could cause a segfault
-\item \mbox{[}X11\mbox{]} Bugfix\+: Some calls would reset Xlib to the default error handler (\#2108)
-\item \mbox{[}Wayland\mbox{]} Added dynamic loading of all Wayland libraries
-\item \mbox{[}Wayland\mbox{]} Added support for key names via xkbcommon
-\item \mbox{[}Wayland\mbox{]} Added support for file path drop events (\#2040)
-\item \mbox{[}Wayland\mbox{]} Added support for more human-\/readable monitor names where available
-\item \mbox{[}Wayland\mbox{]} Disabled alpha channel for opaque windows on systems lacking {\ttfamily EGL\+\_\+\+EXT\+\_\+present\+\_\+opaque} (\#1895)
-\item \mbox{[}Wayland\mbox{]} Removed support for {\ttfamily wl\+\_\+shell} (\#1443)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: The {\ttfamily GLFW\+\_\+\+HAND\+\_\+\+CURSOR} shape used the wrong image (\#1432)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily CLOCK\+\_\+\+MONOTONIC} was not correctly enabled
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Repeated keys could be reported with {\ttfamily NULL} window (\#1704)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Retrieving partial framebuffer size would segfault
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Scrolling offsets were inverted compared to other platforms (\#1463)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Client-\/\+Side Decorations were destroyed in the wrong order (\#1798)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Monitors physical size could report zero (\#1784,\#1792)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Some keys were not repeating in Wayland (\#1908)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Non-\/arrow cursors are offset from the hotspot (\#1706,\#1899)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: The {\ttfamily O\+\_\+\+CLOEXEC} flag was not defined on Free\+BSD
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Key repeat could lead to a race condition (\#1710)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Activating a window would emit two input focus events
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Disable key repeat mechanism when window loses input focus
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Window hiding and showing did not work (\#1492,\#1731)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A key being repeated was not released when window lost focus
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Showing a hidden window did not emit a window refresh event
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Full screen window creation did not ignore {\ttfamily GLFW\+\_\+\+VISIBLE}
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Some keys were reported as wrong key or {\ttfamily GLFW\+\_\+\+KEY\+\_\+\+UNKNOWN}
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Text input did not repeat along with key repeat
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Post\+Empty\+Event} sometimes had no effect (\#1520,\#1521)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Set\+Clipboard\+String} would fail if set to result of {\ttfamily glfw\+Get\+Clipboard\+String}
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Data source creation error would cause double free at termination
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Partial writes of clipboard string would cause beginning to repeat
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Some errors would cause clipboard string transfer to hang
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Drag and drop data was misinterpreted as clipboard string
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: MIME type matching was not performed for clipboard string
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: The OSMesa library was not unloaded on termination
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Create\+Window} could emit {\ttfamily GLFW\+\_\+\+FEATURE\+\_\+\+UNAVAILABLE}
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Lock key modifier bits were only set when lock keys were pressed
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A window leaving full screen mode would be iconified (\#1995)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A window leaving full screen mode ignored its desired size
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Set\+Window\+Monitor} did not update windowed mode size
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Restore\+Window} would make a full screen window windowed
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A window maximized or restored by the user would enter an inconsistent state
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Window maximization events were not emitted
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Restore\+Window} assumed it was always in windowed mode
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Set\+Window\+Size} would resize a full screen window
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A window content scale event would be emitted every time the window resized
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: If {\ttfamily glfw\+Init} failed it would close stdin
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Manual resizing with fallback decorations behaved erratically (\#1991,\#2115,\#2127)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Size limits included frame size for fallback decorations
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Updating {\ttfamily GLFW\+\_\+\+DECORATED} had no effect on server-\/side decorations
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: A monitor would be reported as connected again if its scale changed
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Terminate} would segfault if any monitor had changed scale
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Window content scale events were not emitted when monitor scale changed
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Set\+Window\+Aspect\+Ratio} reported an error instead of applying the specified ratio
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+MAXIMIZED} window hint had no effect
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily glfw\+Restore\+Window} had no effect before first show
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Hiding and then showing a window caused program abort on wlroots compositors (\#1268)
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+DECORATED} was ignored when showing a window with XDG decorations
-\item \mbox{[}Wayland\mbox{]} Bugfix\+: Connecting a mouse after {\ttfamily glfw\+Init} would segfault (\#1450)
-\item \mbox{[}POSIX\mbox{]} Removed use of deprecated function {\ttfamily gettimeofday}
-\item \mbox{[}POSIX\mbox{]} Bugfix\+: {\ttfamily CLOCK\+\_\+\+MONOTONIC} was not correctly tested for or enabled
-\item \mbox{[}Linux\mbox{]} Bugfix\+: Joysticks without buttons were ignored (\#2042,\#2043)
-\item \mbox{[}WGL\mbox{]} Disabled the DWM swap interval hack for Windows 8 and later (\#1072)
-\item \mbox{[}NSGL\mbox{]} Removed enforcement of forward-\/compatible flag for core contexts
-\item \mbox{[}NSGL\mbox{]} Bugfix\+: {\ttfamily GLFW\+\_\+\+COCOA\+\_\+\+RETINA\+\_\+\+FRAMEBUFFER} had no effect on newer mac\+OS versions (\#1442)
-\item \mbox{[}NSGL\mbox{]} Bugfix\+: Workaround for swap interval on 10.\+14 broke on 10.\+12 (\#1483)
-\item \mbox{[}NSGL\mbox{]} Bugfix\+: Defining {\ttfamily GL\+\_\+\+SILENCE\+\_\+\+DEPRECATION} externally caused a duplicate definition warning (\#1840)
-\item \mbox{[}EGL\mbox{]} Added platform selection via the {\ttfamily EGL\+\_\+\+EXT\+\_\+platform\+\_\+base} extension (\#442)
-\item \mbox{[}EGL\mbox{]} Added ANGLE backend selection via {\ttfamily EGL\+\_\+\+ANGLE\+\_\+platform\+\_\+angle} extension (\#1380) \mbox{[}EGL\mbox{]} Added loading of glvnd {\ttfamily lib\+Open\+GL.\+so.\+0} where available for Open\+GL
-\item \mbox{[}EGL\mbox{]} Bugfix\+: The {\ttfamily GLFW\+\_\+\+DOUBLEBUFFER} context attribute was ignored (\#1843)
-\item \mbox{[}GLX\mbox{]} Added loading of glvnd {\ttfamily lib\+GLX.\+so.\+0} where available
-\item \mbox{[}GLX\mbox{]} Bugfix\+: Context creation failed if GLX 1.\+4 was not exported by GLX library
-\end{DoxyItemize}\hypertarget{md__r_e_a_d_m_e_autotoc_md10}{}\doxysection{Contact}\label{md__r_e_a_d_m_e_autotoc_md10}
-On \href{https://www.glfw.org/}{\texttt{ glfw.\+org}} you can find the latest version of GLFW, as well as news, documentation and other information about the project.
-
-If you have questions related to the use of GLFW, we have a \href{https://discourse.glfw.org/}{\texttt{ forum}}, and the {\ttfamily \#glfw} IRC channel on \href{https://libera.chat/}{\texttt{ Libera.\+Chat}}.
-
-If you have a bug to report, a patch to submit or a feature you\textquotesingle{}d like to request, please file it in the \href{https://github.com/glfw/glfw/issues}{\texttt{ issue tracker}} on Git\+Hub.
-
-Finally, if you\textquotesingle{}re interested in helping out with the development of GLFW or porting it to your favorite platform, join us on the forum, Git\+Hub or IRC.
\ No newline at end of file
diff --git a/latex/refman.tex b/latex/refman.tex
deleted file mode 100644
index 18ec3ee6..00000000
--- a/latex/refman.tex
+++ /dev/null
@@ -1,200 +0,0 @@
- % Handle batch mode
- % to overcome problems with too many open files
- \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
- % Set document class depending on configuration
- \documentclass[twoside]{book}
- %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
- \usepackage{ifthen}
- \ifx\requestedLaTeXdate\undefined
- \usepackage{array}
- \else
- \usepackage{array}[=2016-10-06]
- \fi
- %%
- % Packages required by doxygen
- \usepackage{fixltx2e} % for \textsubscript
- \usepackage{doxygen}
- \usepackage{graphicx}
- \usepackage[utf8]{inputenc}
- \usepackage{makeidx}
- \PassOptionsToPackage{warn}{textcomp}
- \usepackage{textcomp}
- \usepackage[nointegrals]{wasysym}
- \usepackage{ifxetex}
- % NLS support packages
- % Define default fonts
- % Font selection
- \usepackage[T1]{fontenc}
- % set main and monospaced font
- \usepackage[scaled=.90]{helvet}
-\usepackage{courier}
-\renewcommand{\familydefault}{\sfdefault}
- \usepackage{sectsty}
- \allsectionsfont{%
- \fontseries{bc}\selectfont%
- \color{darkgray}%
- }
- \renewcommand{\DoxyLabelFont}{%
- \fontseries{bc}\selectfont%
- \color{darkgray}%
- }
- \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
- % Arguments of doxygenemoji:
- % 1) '::' form of the emoji, already LaTeX-escaped
- % 2) file with the name of the emoji without the .png extension
- % in case image exist use this otherwise use the '::' form
- \newcommand{\doxygenemoji}[2]{%
- \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
- }
- % Page & text layout
- \usepackage{geometry}
- \geometry{%
- a4paper,%
- top=2.5cm,%
- bottom=2.5cm,%
- left=2.5cm,%
- right=2.5cm%
- }
- \usepackage{changepage}
- % Allow a bit of overflow to go unnoticed by other means
- \tolerance=750
- \hfuzz=15pt
- \hbadness=750
- \setlength{\emergencystretch}{15pt}
- \setlength{\parindent}{0cm}
- \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
- \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
- \doxynormalparskip
- % Redefine paragraph/subparagraph environments, using sectsty fonts
- \makeatletter
- \renewcommand{\paragraph}{%
- \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
- \normalfont\normalsize\bfseries\SS@parafont%
- }%
- }
- \renewcommand{\subparagraph}{%
- \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
- \normalfont\normalsize\bfseries\SS@subparafont%
- }%
- }
- \makeatother
- \makeatletter
- \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
- \makeatother
- % Headers & footers
- \usepackage{fancyhdr}
- \pagestyle{fancyplain}
- \renewcommand{\footrulewidth}{0.4pt}
- \fancypagestyle{fancyplain}{
- \fancyhf{}
- \fancyhead[LE, RO]{\bfseries\thepage}
- \fancyhead[LO]{\bfseries\rightmark}
- \fancyhead[RE]{\bfseries\leftmark}
- \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
- }
- \fancypagestyle{plain}{
- \fancyhf{}
- \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
- \renewcommand{\headrulewidth}{0pt}
- }
- \pagestyle{fancyplain}
- \renewcommand{\chaptermark}[1]{%
- \markboth{#1}{}%
- }
- \renewcommand{\sectionmark}[1]{%
- \markright{\thesection\ #1}%
- }
- % ToC, LoF, LoT, bibliography, and index
- % Indices & bibliography
- \usepackage{natbib}
- \usepackage[titles]{tocloft}
- \setcounter{tocdepth}{3}
- \setcounter{secnumdepth}{5}
- % creating indexes
- \makeindex
- \usepackage{newunicodechar}
- \newunicodechar{⁻}{${}^{-}$}% Superscript minus
- \newunicodechar{²}{${}^{2}$}% Superscript two
- \newunicodechar{³}{${}^{3}$}% Superscript three
- % Hyperlinks
- % Hyperlinks (required, but should be loaded last)
- \ifpdf
- \usepackage[pdftex,pagebackref=true]{hyperref}
- \else
- \ifxetex
- \usepackage[pagebackref=true]{hyperref}
- \else
- \usepackage[ps2pdf,pagebackref=true]{hyperref}
- \fi
- \fi
- \hypersetup{%
- colorlinks=true,%
- linkcolor=blue,%
- citecolor=blue,%
- unicode,%
- pdftitle={My Project},%
- pdfsubject={}%
- }
- % Custom commands used by the header
- % Custom commands
- \newcommand{\clearemptydoublepage}{%
- \newpage{\pagestyle{empty}\cleardoublepage}%
- }
- % caption style definition
- \usepackage{caption}
- \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
- % in page table of contents
- \usepackage{etoc}
- \etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
- % prevent numbers overlap the titles in toc
- \renewcommand{\numberline}[1]{#1~}
-% End of preamble, now comes the document contents
-%===== C O N T E N T S =====
-\begin{document}
- \raggedbottom
- % Titlepage & ToC
- % To avoid duplicate page anchors due to reuse of same numbers for
- % the index (be it as roman numbers)
- \hypersetup{pageanchor=false,
- bookmarksnumbered=true,
- pdfencoding=unicode
- }
- \pagenumbering{alph}
- \begin{titlepage}
- \vspace*{7cm}
- \begin{center}%
- {\Large My Project}\\
- \vspace*{1cm}
- {\large Generated by Doxygen 1.9.6}\\
- \end{center}
- \end{titlepage}
- \clearemptydoublepage
- \pagenumbering{roman}
- \tableofcontents
- \clearemptydoublepage
- \pagenumbering{arabic}
- % re-enable anchors again
- \hypersetup{pageanchor=true}
-%--- Begin generated contents ---
-\chapter{Acknowledgements}
-\label{md__c_o_n_t_r_i_b_u_t_o_r_s}
-\Hypertarget{md__c_o_n_t_r_i_b_u_t_o_r_s}
-\input{md__c_o_n_t_r_i_b_u_t_o_r_s}
-\chapter{LICENSE}
-\label{md__l_i_c_e_n_s_e}
-\Hypertarget{md__l_i_c_e_n_s_e}
-\input{md__l_i_c_e_n_s_e}
-\chapter{GLFW}
-\label{md__r_e_a_d_m_e}
-\Hypertarget{md__r_e_a_d_m_e}
-\input{md__r_e_a_d_m_e}
-%--- End generated contents ---
-% Index
- \backmatter
- \newpage
- \phantomsection
- \clearemptydoublepage
- \addcontentsline{toc}{chapter}{\indexname}
- \printindex
-% Required for some languages (in combination with latexdocumentpre from the header)
-\end{document}
diff --git a/latex/tabu_doxygen.sty b/latex/tabu_doxygen.sty
deleted file mode 100644
index 3f17d1d0..00000000
--- a/latex/tabu_doxygen.sty
+++ /dev/null
@@ -1,2557 +0,0 @@
-%%
-%% This is file `tabu.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% tabu.dtx (with options: `package')
-%%
-%% This is a generated file.
-%% Copyright (FC) 2010-2011 - lppl
-%%
-%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars
-%%
-%% **********************************************************************************************
-%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal
-%% \begin{tabu} to { preamble } => target specified
-%% \begin{tabu} spread { preamble } => target relative to the ``natural width''
-%%
-%% tabu works in text and in math modes.
-%%
-%% X columns: automatic width adjustment + horizontal and vertical alignment
-%% \begin{tabu} { X[4c] X[1c] X[-2ml] }
-%%
-%% Horizontal lines and / or leaders:
-%% \hline\hline => double horizontal line
-%% \firsthline\hline => for nested tabulars
-%% \lasthline\hline => for nested tabulars
-%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader)
-%% Automatic lines / leaders :
-%% \everyrow{\hline\hline}
-%%
-%% Vertical lines and / or leaders:
-%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] }
-%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] }
-%%
-%% Fixed vertical spacing adjustment:
-%% \extrarowheight= \extrarowdepth=
-%% or: \extrarowsep= => may be prefixed by \global
-%%
-%% Dynamic vertical spacing adjustment:
-%% \abovetabulinesep= \belowtabulinesep=
-%% or: \tabulinesep= => may be prefixed by \global
-%%
-%% delarray.sty shortcuts: in math and text modes
-%% \begin{tabu} .... \({ preamble }\)
-%%
-%% Algorithms reports:
-%% \tracingtabu=1 \tracingtabu=2
-%%
-%% **********************************************************************************************
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.3 of this license or (at your option) any later
-%% version. The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This work consists of the main source file tabu.dtx
-%% and the derived files
-%% tabu.sty, tabu.pdf, tabu.ins
-%%
-%% tabu : Flexible LaTeX tabulars
-%% lppl copyright 2010-2011 by FC
-%%
-
-\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen]
-\RequirePackage{array}[2008/09/09]
-\RequirePackage{varwidth}[2009/03/30]
-\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined}
-\let\tabu@AtEnd\@empty
-\def\TMP@EnsureCode#1={%
- \edef\tabu@AtEnd{\tabu@AtEnd
- \catcode#1 \the\catcode#1}%
- \catcode#1=%
-}% \TMP@EnsureCode
-\TMP@EnsureCode 33 = 12 % !
-\TMP@EnsureCode 58 = 12 % : (for siunitx)
-\TMP@EnsureCode124 = 12 % |
-\TMP@EnsureCode 36 = 3 % $ = math shift
-\TMP@EnsureCode 38 = 4 % & = tab alignment character
-\TMP@EnsureCode 32 = 10 % space
-\TMP@EnsureCode 94 = 7 % ^
-\TMP@EnsureCode 95 = 8 % _
-%% Constants --------------------------------------------------------
-\newcount \c@taburow \def\thetaburow {\number\c@taburow}
-\newcount \tabu@nbcols
-\newcount \tabu@cnt
-\newcount \tabu@Xcol
-\let\tabu@start \@tempcnta
-\let\tabu@stop \@tempcntb
-\newcount \tabu@alloc \tabu@alloc=\m@ne
-\newcount \tabu@nested
-\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc}
-\newdimen \tabu@target
-\newdimen \tabu@spreadtarget
-\newdimen \tabu@naturalX
-\newdimen \tabucolX
-\let\tabu@DELTA \@tempdimc
-\let\tabu@thick \@tempdima
-\let\tabu@on \@tempdimb
-\let\tabu@off \@tempdimc
-\newdimen \tabu@Xsum
-\newdimen \extrarowdepth
-\newdimen \abovetabulinesep
-\newdimen \belowtabulinesep
-\newdimen \tabustrutrule \tabustrutrule \z@
-\newtoks \tabu@thebody
-\newtoks \tabu@footnotes
-\newsavebox \tabu@box
-\newsavebox \tabu@arstrutbox
-\newsavebox \tabu@hleads
-\newsavebox \tabu@vleads
-\newif \iftabu@colortbl
-\newif \iftabu@siunitx
-\newif \iftabu@measuring
-\newif \iftabu@spread
-\newif \iftabu@negcoef
-\newif \iftabu@everyrow
-\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue}
-\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse}
-\newif \iftabu@long
-\newif \iftabuscantokens
-\def\tabu@rescan {\tabu@verbatim \scantokens }
-%% Utilities (for internal usage) -----------------------------------
-\def\tabu@gobblespace #1 {#1}
-\def\tabu@gobbletoken #1#2{#1}
-\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex}
-\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble
- \else\ifx \@sptoken\@let@token
- \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX
- \fi\fi
-}% \tabu@gobblex
-\def\tabu@X{^^J}
-{\obeyspaces
-\global\let\tabu@spxiii= % saves an active space (for \ifx)
-\gdef\tabu@@spxiii{ }}
-\def\tabu@ifenvir {% only for \multicolumn
- \expandafter\tabu@if@nvir\csname\@currenvir\endcsname
-}% \tabu@ifenvir
-\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else
- \ifx\longtabu#1first\else
- second\fi\fi oftwo\endcsname
-}% \tabu@ifenvir
-\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi}
-{\catcode`\&=3
-\gdef\tabu@strtrim #1{% #1 = control sequence to trim
- \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi
- \let\tabu@c@l@r \@empty \let#1\@empty
- \else \expandafter \tabu@trimspaces #1\@nnil
- \fi
-}% \tabu@strtrim
-\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }%
-\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&}
-\gdef\tabu@lastspace #1{\def #3{#1}%
- \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi
- \tabu@trimspaces #1\@nnil}
-}% \catcode
-\def\tabu@sanitizearg #1#2{{%
- \csname \ifcsname if@safe@actives\endcsname %
- @safe@activestrue\else
- relax\fi \endcsname
- \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2%
- \expandafter}\expandafter\def\expandafter#2\expandafter{#2}%
-}% \tabu@sanitizearg
-\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}%
- \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!!
-}% \tabu@textbar
-\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi}
-\def\tabu@everyrow@egroup{%
- \iftabu@everyrow \expandafter \endgroup \the\toks@
- \else \ifnum0=`{\fi}%
- \fi
-}% \tabu@everyrow@egroup
-\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule
- height \arraystretch \dimexpr\ht\strutbox+\extrarowheight
- depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth
- width \z@}%
-}% \tabu@arstrut
-\def\tabu@rearstrut {%
- \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax
- \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax
- \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima
- \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi
- \tabu@mkarstrut
- \fi
-}% \tabu@rearstrut
-\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi}
-\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox
- \hbox to\z@{\hbox to\z@{\hss
- {\tabu@DBG{cyan}\vrule
- height \arraystretch \dimexpr\ht\strutbox+\extrarowheight
- depth \z@
- width \tabustrutrule}\kern-\tabustrutrule
- {\tabu@DBG{pink}\vrule
- height \z@
- depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth
- width \tabustrutrule}}}%
-}% \tabu@DBG@arstrut
-\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@
- \@nextchar}}%
-\def\tabu@savedecl{\ifcat$\d@llarend\else
- \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode
-}% \tabu@savedecl
-\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@}
-\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k }
-\let\tabu@trialh@@k \@empty
-\def\tabu@nowrite #1#{{\afterassignment}\toks@}
-\let\tabu@write\write
-\let\tabu@immediate\immediate
-\def\tabu@WRITE{\begingroup
- \def\immediate\write{\aftergroup\endgroup
- \tabu@immediate\tabu@write}%
-}% \tabu@WRITE
-\expandafter\def\expandafter\tabu@GenericError\expandafter{%
- \expandafter\tabu@WRITE\GenericError}
-\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}}
-\def\tabu@noxfootnote [#1]{\@gobble}
-\def\tabu@nocolor #1#{\@gobble}
-\newcommand*\tabu@norowcolor[2][]{}
-\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}%
- \futurelet\@let@token \tabu@m@ybesiunitx}
-\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {%
- \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi
- \tabu@temp}% \tabu@m@ybesiunitx
-}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname
-\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}%
-%% Fixed vertical spacing adjustment: \extrarowsep ------------------
-\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}%
- \iftabu@everyrow \aftergroup\tabu@Gextra
- \else \aftergroup\tabu@n@Gextra
- \fi
- \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra
-}% \extrarowsep
-\def\tabu@extra {\@ifnextchar_%
- {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}
- {\ifx ^\@let@token \def\tabu@temp{%
- \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}%
- \else \let\tabu@temp \@empty
- \afterassignment \tabu@setextrasep \extrarowdepth
- \fi \tabu@temp}%
-}% \tabu@extra
-\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2}
-\def\tabu@extr@ #1#2{\@ifnextchar^%
- {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}
- {\ifx _\@let@token \def\tabu@temp{%
- \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}%
- \else \let\tabu@temp \@empty
- \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth
- \fi \tabu@temp}%
-}% \tabu@extr@
-\def\tabu@setextrasep {\extrarowheight=\extrarowdepth
- \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth
-}% \tabu@setextrasep
-\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi}
-\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi}
-\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra}
-\let\tabu@C@extra \z@
-\let\tabu@G@extra \@empty
-%% Dynamic vertical spacing adjustment: \tabulinesep ----------------
-\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}%
- \iftabu@everyrow \aftergroup\tabu@Glinesep
- \else \aftergroup\tabu@n@Glinesep
- \fi
- \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep
-}% \tabulinesep
-\def\tabu@linesep {\@ifnextchar_%
- {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}
- {\ifx ^\@let@token \def\tabu@temp{%
- \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}%
- \else \let\tabu@temp \@empty
- \afterassignment \tabu@setlinesep \abovetabulinesep
- \fi \tabu@temp}%
-}% \tabu@linesep
-\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2}
-\def\tabu@sets@p #1#2{\@ifnextchar^%
- {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}
- {\ifx _\@let@token \def\tabu@temp{%
- \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}%
- \else \let\tabu@temp \@empty
- \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep
- \fi \tabu@temp}%
-}% \tabu@sets@p
-\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep
- \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep
-}% \tabu@setlinesep
-\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi}
-\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi}
-\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep}
-\let\tabu@C@linesep \z@
-\let\tabu@G@linesep \@empty
-%% \global\extrarowsep and \global\tabulinesep -------------------
-\def\tabu@Gsave #1#2#3#4{\xdef#1{#1%
- \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}%
-}% \tabu@Gsave
-\def\tabu@Grestore#1#2{%
- \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax
- \ifcat$\the\toks\currentgrouplevel$\else
- \global\let#1\@empty \global\let#2\z@
- \the\toks\currentgrouplevel
- \fi
-}% \tabu@Grestore
-%% Setting code for every row ---------------------------------------
-\newcommand*\everyrow{\tabu@everyrow@bgroup
- \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop
-}% \everyrow
-\def\tabu@evrstartstop {\@ifnextchar^%
- {\afterassignment \tabu@evrstartstop \tabu@stop=}%
- {\ifx ^\@let@token
- \afterassignment\tabu@evrstartstop \tabu@start=%
- \else \afterassignment\tabu@everyr@w \toks@
- \fi}%
-}% \tabu@evrstartstop
-\def\tabu@everyr@w {%
- \xdef\tabu@everyrow{%
- \noexpand\tabu@everyrowfalse
- \let\noalign \relax
- \noexpand\tabu@rowfontreset
- \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors
- \let\noexpand\tabu@docline \noexpand\tabu@docline@evr
- \the\toks@
- \noexpand\tabu@evrh@@k
- \noexpand\tabu@rearstrut
- \global\advance\c@taburow \@ne}%
- \iftabu@everyrow \toks@\expandafter
- {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}%
- \else \xdef\tabu@evr@G{\the\toks@}%
- \fi
- \tabu@everyrow@egroup
-}% \tabu@everyr@w
-\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only
-\tabu@evr{}
-%% line style and leaders -------------------------------------------
-\newcommand*\newtabulinestyle [1]{%
- {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}%
-}% \newtabulinestyle
-\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}%
- \tabu@sanitizearg {#1}\@tempa
- \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi
- \global\expandafter\let
- \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi
-}% \tabu@newlinestyle
-\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}%
- \iftabu@everyrow
- \toks@\expandafter{\expandafter \def \expandafter
- \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}%
- \gdef\tabu@ls@{\tabu@ls@L}%
- \else
- \global\let\tabu@ls@G \tabu@thestyle
- \gdef\tabu@ls@{\tabu@ls@G}%
- \fi
- \tabu@everyrow@egroup
-}% \tabulinestyle
-\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor}
-\def\tabu@rulecolor #1{\toks@{}%
- \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1%
- \tabu@temp
- \tabu@rulearc
-}% \tabu@rulecolor
-\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp
- \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}%
- \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}%
- \fi
- \tabu@temp
-}% \tabu@ruledrsc@
-\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}}
-\def\tabu@rule@drsc@ #1#2{%
- \iftabu@everyrow
- \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}%
- \else \toks@{\def\CT@drsc@{\color #1{#2}}}%
- \fi
- \else
- \ifx \\#1#2\\\global\let\CT@drsc@ \relax
- \else \gdef\CT@drsc@{\color #1{#2}}%
- \fi
- \fi
- \tabu@rulearc
-}% \tabu@rule@drsc@
-\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}}
-\def\tabu@rule@arc@ #1#2{%
- \iftabu@everyrow
- \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}%
- \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}%
- \fi
- \toks@\expandafter{\the\toks@
- \let\tabu@arc@L \CT@arc@
- \let\tabu@drsc@L \CT@drsc@
- \ignorespaces}%
- \else
- \ifx \\#1#2\\\gdef\CT@arc@{}%
- \else \gdef\CT@arc@{\color #1{#2}}%
- \fi
- \global\let\tabu@arc@G \CT@arc@
- \global\let\tabu@drsc@G \CT@drsc@
- \fi
- \tabu@everyrow@egroup
-}% \tabu@rule@arc@
-\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1}
-\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}}
-\def\tabu@rowc@lors #1#2#3{%
- \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil
- \@defaultunits \tabu@start =\number0#1\relax \@nnil
- \ifnum \count@<\tw@ \count@=\tw@ \fi
- \advance\tabu@start \m@ne
- \ifnum \tabu@start<\z@ \tabu@start \z@ \fi
- \tabu@rowcolorseries #3\in@..\in@ \@nnil
-}% \tabu@rowcolors
-\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {%
- \ifx \in@#1\relax
- \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}%
- \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@
- \fi
- \else
- \ifx \\#2\\\tabu@rowcolorserieserror \fi
- \tabu@sanitizearg{#1}\tabu@temp
- \tabu@sanitizearg{#2}\@tempa
- \advance\count@ \m@ne
- \iftabu@everyrow
- \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{%
- \ifnum ##2=\c@taburow
- \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi
- \ifnum \c@taburow<##2 \else
- \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@
- \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi
- \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
- \rowcolor{tabu@rc@\the\tabu@nested}\fi}%
- }\edef\x{\noexpand\tabu@rc@ {\the\count@}
- {\the\tabu@start}
- {\tabu@temp}
- {\@tempa}%
- }\x
- \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}%
- \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}%
- \else % inside \noalign
- \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}%
- \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}%
- \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
- \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}%
- \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{%
- \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne
- \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi
- \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
- \rowcolor{tabu@rc@\the\tabu@nested}}%
- }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x
- \global\let\tabu@rc@G \tabu@rc@
- \fi
- \fi
- \tabu@everyrow@egroup
-}% \tabu@rowcolorseries
-\tabuDisableCommands {\let\tabu@rc@ \@empty }
-\def\tabu@rowcolorserieserror {\PackageError{tabu}
- {Invalid syntax for \string\taburowcolors
- \MessageBreak Please look at the documentation!}\@ehd
-}% \tabu@rowcolorserieserror
-\newcommand*\tabureset {%
- \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@
- \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}%
-}% \tabureset
-%% Parsing the line styles ------------------------------------------
-\def\tabu@getline #1{\begingroup
- \csname \ifcsname if@safe@actives\endcsname %
- @safe@activestrue\else
- relax\fi \endcsname
- \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa
- \let\tabu@thestyle \relax
- \ifcsname tabu@linestyle@\@tempa \endcsname
- \edef\tabu@thestyle{\endgroup
- \def\tabu@thestyle{\expandafter\noexpand
- \csname tabu@linestyle@\@tempa\endcsname}%
- }\tabu@thestyle
- \else \expandafter\tabu@definestyle \tabu@temp \@nil
- \fi
-}% \tabu@getline
-\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter
- \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen
- \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined
- \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs
- \def\tabu@temp{\tabu@getparam{thick}}%
- \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}%
- \fi
- {%
- \let\tabu@ \relax
- \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-))
- \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}%
- \expandafter}\expandafter
- \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-)
- \def\;{\def\:}%
- \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10)
- \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-)
- \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi
- \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi
- \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi
- \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen
- \tabu@on \tabulineon \fi\fi
- \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen
- \tabu@off \tabulineoff \fi\fi
- \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi
- \in@true %
- \else \in@false %
- \fi
- \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}%
- \else \edef\tabu@thick{\the\tabu@thick}%
- \fi
- \edef \tabu@thestyle ##1##2{\endgroup
- \def\tabu@thestyle{%
- \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick}
- {\the\tabu@on}{##1}
- {\the\tabu@off}{##2}%
- \else \noexpand\tabu@rulesstyle
- {##1\vrule width \tabu@thick}%
- {##1\leaders \hrule height \tabu@thick \hfil}%
- \fi}%
- }\expandafter \expandafter
- \expandafter \tabu@thestyle \expandafter
- \expandafter \expandafter
- {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}%
-}% \tabu@definestyle
-{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active
- \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}}
- \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space}
-}% \catcode
-\def\tabu@oxiii #1{%
- \ifcase \ifx n#1\z@ \else
- \ifx f#1\@ne\else
- \tw@ \fi\fi
- \expandafter\tabu@onxiii
- \or \expandafter\tabu@ofxiii
- \else o%
- \fi#1}%
-\def\tabu@onxiii #1#2{%
- \ifcase \ifx !#2\tw@ \else
- \ifcat.\noexpand#2\z@ \else
- \ifx \tabu@spxiii#2\@ne\else
- \tw@ \fi\fi\fi
- \tabu@getparam{on}#2\expandafter\@gobble
- \or \expandafter\tabu@onxiii % (space is active)
- \else o\expandafter\@firstofone
- \fi{#1#2}}%
-\def\tabu@ofxiii #1#2{%
- \ifx #2f\expandafter\tabu@offxiii
- \else o\expandafter\@firstofone
- \fi{#1#2}}
-\def\tabu@offxiii #1#2{%
- \ifcase \ifx !#2\tw@ \else
- \ifcat.\noexpand#2\z@ \else
- \ifx\tabu@spxiii#2\@ne \else
- \tw@ \fi\fi\fi
- \tabu@getparam{off}#2\expandafter\@gobble
- \or \expandafter\tabu@offxiii % (space is active)
- \else o\expandafter\@firstofone
- \fi{#1#2}}
-\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=}
-\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef
- \ifx \tabu@#1\else % no more spec
- \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi
-}% \tabu@getcolor
-\def\tabu@getc@l@r #1\tabu@ {%
- \def\tabu@temp{#1}\tabu@strtrim \tabu@temp
- \ifx \tabu@temp\@empty
- \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists
- \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r
- \else \let\tabu@c@lon \tabu@c@l@r
- \fi
- %\else \tabu@warncolour{\tabu@temp}%
- \fi%\fi
- \tabu@ % next spec
-}% \tabu@getc@l@r
-\def\tabu@warncolour #1{\PackageWarning{tabu}
- {Color #1 is not defined. Default color used}%
-}% \tabu@warncolour
-\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}%
- \ifx \tabu@leaders\tabu@leaders@G \else
- \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi
-}% \tabu@leadersstyle
-\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined
- \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}%
-}% \tabu@rulesstyle
-%% The leaders boxes ------------------------------------------------
-\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color
- {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor
- {% % but the leaders boxes should have colors !
- \def\@therule{\vrule}\def\@thick{height}\def\@length{width}%
- \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}%
- \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}%
- \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}%
- \global\let\tabu@thehleaders \tabu@theleaders
- }%
- {%
- \def\@therule{\hrule}\def\@thick{width}\def\@length{height}%
- \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}%
- \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}%
- \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}%
- \global\let\tabu@thevleaders \tabu@theleaders
- }%
- \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}%
- }%
-}% \tabu@LEADERS
-\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@}
-\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color
- \global\setbox \tabu@leads=\@box{%
- {#3\tabu@therule{#1}{#2}}%
- \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi
- {#3\tabu@therule{#1}{#2}}}%
- \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss
- {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}%
- \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {%
- {##1\tabu@therule{#1}{#2}}%
- \xleaders \copy\tabu@leads \@ss
- \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}%
- }\tabu@theleaders{#3}%
-}% \tabu@l@@d@rs
-%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ----------
-\newcommand*\tabu {\tabu@longfalse
- \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}%
- \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi
- \expandafter\let\csname tabu*\endcsname \tabu
- \expandafter\def\csname endtabu*\endcsname{\endtabu}%
- \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget
-}% {tabu}
-\let\tabu@tabular \tabular %
-\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu}
-\newcommand*\longtabu {\tabu@longtrue
- \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi
- \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}%
- \LTchunksize=\@M
- \expandafter\let\csname tabu*\endcsname \tabu
- \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}%
- \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts }
- \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget
-}% {longtabu}
-\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu}
-\def\tabu@nolongtabu{\PackageError{tabu}
- {longtabu requires the longtable package}\@ehd}
-%% Read the target and then : \tabular or \@array ------------------
-\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget }
-\def\tabu@sett@rget {\tabu@target \z@
- \ifcase \ifx \bgroup\@let@token \z@ \else
- \ifx \@sptoken\@let@token \@ne \else
- \if t\@let@token \tw@ \else
- \if s\@let@token \thr@@\else
- \z@\fi\fi\fi\fi
- \expandafter\tabu@begin
- \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget
- \or \expandafter\tabu@to
- \or \expandafter\tabu@spread
- \fi
-}% \tabu@sett@rget
-\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget}
-\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget}
-\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target }
-\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget }
-\def\tabu@linegoalt@rget {%
- \ifx \tabu@temp\LNGL@setlinegoal
- \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal
- \tabu@begin
-}% \tabu@linegoalt@rget
-\def\tabu@begin #1#{%
- \iftabu@measuring \expandafter\tabu@nestedmeasure \fi
- \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty
- \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}%
- \fi
- \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil
-}% \tabu@begin
-\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup
- \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}%
- \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }%
-}% \tabu@tabu@
-\def\tabu@nestedmeasure {%
- \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax
- \tabu@spreadtrue
- \else \begingroup \iffalse{\fi \ifnum0=`}\fi
- \toks@{}\def\tabu@stack{b}%
- \expandafter\tabu@collectbody\expandafter\tabu@quickrule
- \expandafter\endgroup
- \fi
-}% \tabu@nestedmeasure
-\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target}
-%% \tabu@setup \tabu@init \tabu@indent
-\def\tabu@setup{\tabu@alloc@
- \ifcase \tabu@nested
- \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@
- \let\tabu@afterendpar \par
- \fi\fi\fi
- \def\tabu@aligndefault{c}\tabu@init \tabu@indent
- \else %
- \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth
- \fi
- \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined
- \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}%
- \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu...
- \let\@endpbox \tabu@endpbox % idem " " " " " "
- \let\@tabarray \tabu@tabarray % idem " " " " " "
- \tabu@setcleanup \tabu@setreset
-}% \tabu@setup
-\def\tabu@init{\tabu@starttimer \tabu@measuringfalse
- \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}%
- \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline
- \let\firstline \tabu@firstline \let\lastline \tabu@lastline
- \let\hline \tabu@hline \let\@xhline \tabu@xhline
- \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox
- \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi
- \tabu@trivlist %
- \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext
- \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering
- \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft
- \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering
- \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft
- \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont
- \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x
- \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar
- \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok
- \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn
- \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!!
- \let\tabu@endpbox \@endpbox % idem " " " " " " "
- \let\tabu@tabarray \@tabarray % idem " " " " " " "
- \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray)
- \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi
-}% \tabu@init
-\def\tabu@indent{% correction for indentation
- \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget
- \everypar\expandafter{%
- \the\everypar\everypar\expandafter{\the\everypar}%
- \setbox\z@=\lastbox
- \ifdim\wd\z@>\z@ \edef\tabu@thetarget
- {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi
- \box\z@}%
- \fi\fi
-}% \tabu@indent
-\def\tabu@setcleanup {% saves last global assignments
- \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax
- \def\tabu@aftergroupcleanup{%
- \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}%
- \else
- \def\tabu@aftergroupcleanup{%
- \aftergroup\aftergroup\aftergroup\tabu@cleanup
- \let\tabu@aftergroupcleanup \relax}%
- \fi
- \let\tabu@arc@Gsave \tabu@arc@G
- \let\tabu@arc@G \tabu@arc@L %
- \let\tabu@drsc@Gsave \tabu@drsc@G
- \let\tabu@drsc@G \tabu@drsc@L %
- \let\tabu@ls@Gsave \tabu@ls@G
- \let\tabu@ls@G \tabu@ls@L %
- \let\tabu@rc@Gsave \tabu@rc@G
- \let\tabu@rc@G \tabu@rc@L %
- \let\tabu@evr@Gsave \tabu@evr@G
- \let\tabu@evr@G \tabu@evr@L %
- \let\tabu@celllalign@save \tabu@celllalign
- \let\tabu@cellralign@save \tabu@cellralign
- \let\tabu@cellleft@save \tabu@cellleft
- \let\tabu@cellright@save \tabu@cellright
- \let\tabu@@celllalign@save \tabu@@celllalign
- \let\tabu@@cellralign@save \tabu@@cellralign
- \let\tabu@@cellleft@save \tabu@@cellleft
- \let\tabu@@cellright@save \tabu@@cellright
- \let\tabu@rowfontreset@save \tabu@rowfontreset
- \let\tabu@@rowfontreset@save\tabu@@rowfontreset
- \let\tabu@rowfontreset \@empty
- \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset
- \edef\c@taburow@save {\the\c@taburow}%
- \edef\tabu@naturalX@save {\the\tabu@naturalX}%
- \let\tabu@naturalXmin@save \tabu@naturalXmin
- \let\tabu@naturalXmax@save \tabu@naturalXmax
- \let\tabu@mkarstrut@save \tabu@mkarstrut
- \edef\tabu@clarstrut{%
- \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax
- \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax
- \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}%
-}% \tabu@setcleanup
-\def\tabu@cleanup {\begingroup
- \globaldefs\@ne \tabu@everyrowtrue
- \let\tabu@arc@G \tabu@arc@Gsave
- \let\CT@arc@ \tabu@arc@G
- \let\tabu@drsc@G \tabu@drsc@Gsave
- \let\CT@drsc@ \tabu@drsc@G
- \let\tabu@ls@G \tabu@ls@Gsave
- \let\tabu@ls@ \tabu@ls@G
- \let\tabu@rc@G \tabu@rc@Gsave
- \let\tabu@rc@ \tabu@rc@G
- \let\CT@do@color \relax
- \let\tabu@evr@G \tabu@evr@Gsave
- \let\tabu@celllalign \tabu@celllalign@save
- \let\tabu@cellralign \tabu@cellralign@save
- \let\tabu@cellleft \tabu@cellleft@save
- \let\tabu@cellright \tabu@cellright@save
- \let\tabu@@celllalign \tabu@@celllalign@save
- \let\tabu@@cellralign \tabu@@cellralign@save
- \let\tabu@@cellleft \tabu@@cellleft@save
- \let\tabu@@cellright \tabu@@cellright@save
- \let\tabu@rowfontreset \tabu@rowfontreset@save
- \let\tabu@@rowfontreset \tabu@@rowfontreset@save
- \tabu@naturalX =\tabu@naturalX@save
- \let\tabu@naturalXmax \tabu@naturalXmax@save
- \let\tabu@naturalXmin \tabu@naturalXmin@save
- \let\tabu@mkarstrut \tabu@mkarstrut@save
- \c@taburow =\c@taburow@save
- \ifcase \tabu@nested \tabu@alloc \m@ne\fi
- \endgroup %
- \ifcase \tabu@nested
- \the\tabu@footnotes \global\tabu@footnotes{}%
- \tabu@afterendpar \tabu@elapsedtime
- \fi
- \tabu@clarstrut
- \everyrow\expandafter {\tabu@evr@G}%
-}% \tabu@cleanup
-\let\tabu@afterendpar \relax
-\def\tabu@setreset {%
- \edef\tabu@savedparams {% \relax for \tabu@message@save
- \ifmmode \col@sep \the\arraycolsep
- \else \col@sep \the\tabcolsep \fi \relax
- \arrayrulewidth \the\arrayrulewidth \relax
- \doublerulesep \the\doublerulesep \relax
- \extratabsurround \the\extratabsurround \relax
- \extrarowheight \the\extrarowheight \relax
- \extrarowdepth \the\extrarowdepth \relax
- \abovetabulinesep \the\abovetabulinesep \relax
- \belowtabulinesep \the\belowtabulinesep \relax
- \def\noexpand\arraystretch{\arraystretch}%
- \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}%
- \begingroup
- \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu
- \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi
- \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi
- \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L
- \expandafter \endgroup \expandafter
- \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena
- \let\tabu@arc@G \tabu@arc@L
- \let\tabu@drsc@G \tabu@drsc@L
- \let\tabu@ls@G \tabu@ls@L
- \let\tabu@rc@G \tabu@rc@L
- \let\tabu@evr@G \tabu@evr@L}%
- \def\tabu@reset{\tabu@savedparams
- \tabu@everyrowtrue \c@taburow \z@
- \let\CT@arc@ \tabu@arc@L
- \let\CT@drsc@ \tabu@drsc@L
- \let\tabu@ls@ \tabu@ls@L
- \let\tabu@rc@ \tabu@rc@L
- \global\tabu@alloc \tabu@alloc@save
- \everyrow\expandafter{\tabu@evr@L}}%
-}% \tabu@reset
-\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}}
-\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}}
-%% The Rewriting Process -------------------------------------------
-\def\tabu@newcolumntype #1{%
- \expandafter\tabu@new@columntype
- \csname NC@find@\string#1\expandafter\endcsname
- \csname NC@rewrite@\string#1\endcsname
- {#1}%
-}% \tabu@newcolumntype
-\def\tabu@new@columntype #1#2#3{%
- \def#1##1#3{\NC@{##1}}%
- \let#2\relax \newcommand*#2%
-}% \tabu@new@columntype
-\def\tabu@privatecolumntype #1{%
- \expandafter\tabu@private@columntype
- \csname NC@find@\string#1\expandafter\endcsname
- \csname NC@rewrite@\string#1\expandafter\endcsname
- \csname tabu@NC@find@\string#1\expandafter\endcsname
- \csname tabu@NC@rewrite@\string#1\endcsname
- {#1}%
-}% \tabu@privatecolumntype
-\def\tabu@private@columntype#1#2#3#4{%
- \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}%
- \tabu@new@columntype#3#4%
-}% \tabu@private@columntype
-\let\tabu@privatecolumns \@empty
-\newcommand*\tabucolumn [1]{\expandafter \def \expandafter
- \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns
- \NC@do #1}}%
-\let\tabu@highprioritycolumns \@empty
-%% The | ``column'' : rewriting process --------------------------
-\tabu@privatecolumntype |{\tabu@rewritevline}
-\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}%
- \expandafter \NC@find \tabu@rewritten}
-\def\tabu@lines #1{%
- \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi
- \NC@list\expandafter{\the\NC@list \NC@do #1}%
-}% \tabu@lines@
-\def\tabu@vlinearg #1{%
- \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}%
- \else\tabu@getline {#1}%
- \fi
- \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}%
- }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}%
- \expandafter \tabu@keepls \tabu@thestyle \@nil
-}% \tabu@vlinearg
-\def\tabu@keepls #1\@nil{%
- \ifcat $\@cdr #1\@nil $%
- \ifx \relax#1\else
- \ifx \tabu@ls@#1\else
- \let#1\relax
- \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer
- \tabu@savels\noexpand#1}\fi\fi\fi
-}% \tabu@keepls
-\def\tabu@thevline {\begingroup
- \ifdefined\tabu@leaders
- \setbox\@tempboxa=\vtop to\dimexpr
- \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}%
- \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox
- \box\@tempboxa
- \else
- \tabu@thevrule
- \fi \endgroup
-}% \tabu@thevline
-\def\tabu@savels #1{%
- \expandafter\let\csname\string#1\endcsname #1%
- \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset
- \tabu@resetls#1}}%
-\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}%
-%% \multicolumn inside tabu environment -----------------------------
-\tabu@newcolumntype \tabu@rewritemulticolumn{%
- \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group
- \NC@list{\NC@do *}\tabu@textbar \tabu@lines
- \tabu@savedecl
- \tabu@privatecolumns
- \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}%
- \let\tabu@savels \relax
- \NC@find
-}% \tabu@rewritemulticolumn
-\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup}
-\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI}
-\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup
- \tabu@everyrowtrue
- \NC@list{\NC@do \tabu@rewritemulticolumn}%
- \expandafter\@gobbletwo % gobbles \multispan{#1}
- \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}%
- {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi
- {#3}}%
-}% \tabu@multic@lumn
-%% The X column(s): rewriting process -----------------------------
-\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}}
-\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten }
-\def\tabu@siunitx #1{\@ifnextchar \bgroup
- {\tabu@rewriteX@Ss{#1}}
- {\tabu@nosiunitx{#1}}}
-\def\tabu@rewriteX@Ss #1#2{\@temptokena{}%
- \@defaultunits \let\tabu@temp =#2\relax\@nnil
- \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi
- \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}%
- }\expandafter\NC@find \the\@temptokena \relax
- }\expandafter\NC@rewrite@S \@gobble #2\relax
- \else \tabu@siunitxerror
- \fi
- \expandafter \NC@find \tabu@rewritten
-}% \tabu@rewriteX@Ss
-\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column !
- \MessageBreak X column can only embed siunitx S or s columns}\@ehd
-}% \tabu@siunitxerror
-\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}%
- \iftabu@measuring
- \else \tabu@measuringtrue % first X column found in the preamble
- \let\@halignto \relax \let\tabu@halignto \relax
- \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@
- \else \tabu@spreadtarget \z@ \fi
- \ifdim \tabu@target=\z@
- \setlength\tabu@target \tabu@thetarget
- \tabu@message{\tabu@message@defaulttarget}%
- \else \tabu@message{\tabu@message@target}\fi
- \fi
-}% \tabu@rewriteX
-\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax
- \def\tabu@rewritten{l}}
-\def\tabu@Xarg #1#2#3{%
- \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty
- \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty
- \ifx\\#1\\%
- \def\tabu@rewritten{p}\tabucolX \p@ %
- \else
- \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@
- \tabu@Xparse {}#1\relax
- \fi
- \tabu@Xrewritten{#2}{#3}%
-}% \tabu@Xarg
-\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest}
-\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}}
-\def\tabu@Xtest{%
- \ifcase \ifx \relax\@let@token \z@ \else
- \if ,\@let@token \m@ne\else
- \if p\@let@token 1\else
- \if m\@let@token 2\else
- \if b\@let@token 3\else
- \if l\@let@token 4\else
- \if c\@let@token 5\else
- \if r\@let@token 6\else
- \if j\@let@token 7\else
- \if L\@let@token 8\else
- \if C\@let@token 9\else
- \if R\@let@token 10\else
- \if J\@let@token 11\else
- \ifx \@sptoken\@let@token 12\else
- \if .\@let@token 13\else
- \if -\@let@token 13\else
- \ifcat $\@let@token 14\else
- 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax
- \or \tabu@Xtype {p}%
- \or \tabu@Xtype {m}%
- \or \tabu@Xtype {b}%
- \or \tabu@Xalign \raggedright\relax
- \or \tabu@Xalign \centering\relax
- \or \tabu@Xalign \raggedleft\relax
- \or \tabu@Xalign \tabu@justify\relax
- \or \tabu@Xalign \RaggedRight\raggedright
- \or \tabu@Xalign \Centering\centering
- \or \tabu@Xalign \RaggedLeft\raggedleft
- \or \tabu@Xalign \justifying\tabu@justify
- \or \expandafter \tabu@Xparsespace
- \or \expandafter \tabu@Xcoef
- \or \expandafter \tabu@Xm@th
- \or \tabu@Xcoef{}%
- \else\expandafter \tabu@Xparse
- \fi
-}% \tabu@Xtest
-\def\tabu@Xalign #1#2{%
- \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu}
- {Duplicate horizontal alignment specification}\fi
- \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax
- \else \def\tabu@Xlcr{#2}\let#2\relax\fi
- \expandafter\tabu@Xparse
-}% \tabu@Xalign
-\def\tabu@Xtype #1{%
- \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu}
- {Duplicate vertical alignment specification}\fi
- \def\tabu@rewritten{#1}\expandafter\tabu@Xparse
-}% \tabu@Xtype
-\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}%
- \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi
-}% \tabu@Xcoef
-\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@
- \tabu@Xparse{}%
-}% \tabu@Xc@ef
-\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp}
-\def\tabu@Xd@sp{\let\tabu@Xmath=$%
- \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}%
- \expandafter\tabu@Xparse
- \else \expandafter\tabu@Xparse\expandafter{\expandafter}%
- \fi
-}% \tabu@Xd@sp
-\def\tabu@Xrewritten {%
- \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi
- \ifdim \tabucolX<\z@ \tabu@negcoeftrue
- \else\ifdim \tabucolX=\z@ \tabucolX \p@
- \fi\fi
- \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}%
- \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}%
- \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{%
- >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}%
- \tabu@rewritten {\tabu@hsize \tabu@temp}%
- <{##2\ifx$\tabu@Xmath$\fi}}%
- }\tabu@rewritten
-}% \tabu@Xrewritten
-\def\tabu@hsize #1#2{%
- \ifdim #2\p@<\z@
- \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else
- \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi
- \fi
- \else #2\tabucolX
- \fi
-}% \tabu@hsize
-%% \usetabu and \preamble: rewriting process ---------------------
-\tabu@privatecolumntype \usetabu [1]{%
- \ifx\\#1\\\tabu@saveerr{}\else
- \@ifundefined{tabu@saved@\string#1}
- {\tabu@saveerr{#1}}
- {\let\tabu@rewriteX \tabu@rewriteXrestore
- \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}%
- \fi
-}% \NC@rewrite@\usetabu
-\tabu@privatecolumntype \preamble [1]{%
- \ifx\\#1\\\tabu@saveerr{}\else
- \@ifundefined{tabu@saved@\string#1}
- {\tabu@saveerr{#1}}
- {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}%
- \fi
-}% \NC@rewrite@\preamble
-%% Controlling the rewriting process -------------------------------
-\tabu@newcolumntype \tabu@rewritefirst{%
- \iftabu@long \aftergroup \tabu@longpream %
- \else \aftergroup \tabu@pream
- \fi
- \let\tabu@ \relax \let\tabu@hsize \relax
- \let\tabu@Xcoefs \@empty \let\tabu@savels \relax
- \tabu@Xcol \z@ \tabu@cnt \tw@
- \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse
- \global\setbox\@arstrutbox \box\@arstrutbox
- \NC@list{\NC@do *}\tabu@textbar \tabu@lines
- \NC@list\expandafter{\the\NC@list \NC@do X}%
- \iftabu@siunitx %
- \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi
- \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}%
- \expandafter\def\expandafter\tabu@NC@list\expandafter{%
- \the\expandafter\NC@list \tabu@NC@list}% % * | X S
- \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu
- \expandafter \NC@do \expandafter\preamble
- \the\NC@list \NC@do \tabu@rewritemiddle
- \NC@do \tabu@rewritelast}%
- \tabu@savedecl
- \tabu@privatecolumns
- \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle
-}% NC@rewrite@\tabu@rewritefirst
-\tabu@newcolumntype \tabu@rewritemiddle{%
- \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast
-}% \NC@rewrite@\tabu@rewritemiddle
-\tabu@newcolumntype \tabu@rewritelast{%
- \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne
- \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle
- \NC@do \tabu@rewritelast}%
- \else \let\tabu@prev\tabu@temp
- \fi
- \ifcase \tabu@cnt \expandafter\tabu@endrewrite
- \else \expandafter\NC@find \expandafter\tabu@rewritemiddle
- \fi
-}% \NC@rewrite@\tabu@rewritelast
-%% Choosing the strategy --------------------------------------------
-\def\tabu@endrewrite {%
- \let\tabu@temp \NC@find
- \ifx \@arrayright\relax \let\@arrayright \@empty \fi
- \count@=%
- \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print
- \iftabu@measuring
- \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer
- \tabu@target \csname tabu@\the\tabu@nested.T\endcsname
- \tabucolX \csname tabu@\the\tabu@nested.X\endcsname
- \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}%
- \fi
- \else\iftabu@measuring 4 % X columns
- \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer
- \tabu@target \the\tabu@target
- \tabu@spreadtarget \the\tabu@spreadtarget}%
- \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}%
- \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}%
- \let\tabu@Xcoefs \relax
- \else\ifcase\tabu@nested \thr@@ % outer, no X
- \global\let\tabu@afterendpar \relax
- \else \@ne % inner, no X, outer in mode 1 or 2
- \fi
- \ifdefined\tabu@usetabu
- \else \ifdim\tabu@target=\z@
- \else \let\tabu@temp \tabu@extracolsep
- \fi\fi
- \fi
- \fi
- \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}%
- \tabu@temp
-}% \tabu@endrewrite
-\def\tabu@extracolsep{\@defaultunits \expandafter\let
- \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil
- \ifx \tabu@temp\@sptoken
- \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep
- \else
- \edef\tabu@temp{\noexpand\NC@find
- \if |\noexpand\tabu@temp @%
- \else\if !\noexpand\tabu@temp @%
- \else !%
- \fi\fi
- {\noexpand\extracolsep\noexpand\@flushglue}}%
- \fi
- \tabu@temp
-}% \tabu@extrac@lsep
-%% Implementing the strategy ----------------------------------------
-\long\def\tabu@pream #1\@preamble {%
- \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup
- \NC@list\expandafter {\tabu@NC@list}% in case of nesting...
- \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi
- \let\tabu@savedpreamble \@preamble
- \global\let\tabu@elapsedtime \relax
- \tabu@thebody ={#1\tabu@aftergroupcleanup}%
- \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody
- \@preamble}%
- \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens )
- \tabu@select
-}% \tabu@pream
-\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{%
- \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup
- \NC@list\expandafter {\tabu@NC@list}% in case of nesting...
- \let\tabu@savedpreamble \@preamble
- \global\let\tabu@elapsedtime \relax
- \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}%
- \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens )
- \tabu@select
-}% \tabu@longpream
-\def\tabu@select {%
- \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi
- \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi
- \ifcase \count@
- \global\let\tabu@elapsedtime \relax
- \tabu@seteverycr
- \expandafter \tabuthepreamble % vertical adjustment (inherited from outer)
- \or % exit in vertical measure + struts per cell because no X and outer in mode 3
- \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}%
- \def\tabu@cellralign{\tabu@verticalspacing}%
- \tabu@seteverycr
- \expandafter \tabuthepreamble
- \or % exit without measure because no X and outer in mode 4
- \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty
- \tabu@seteverycr
- \expandafter \tabuthepreamble
- \else % needs trials
- \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty
- \tabu@savecounters
- \expandafter \tabu@setstrategy
- \fi
-}% \tabu@select
-\def\tabu@@ {\gdef\tabu@mkpreambuffer}
-%% Protections to set up before trials ------------------------------
-\def\tabu@setstrategy {\begingroup %
- \tabu@trialh@@k \tabu@cnt \z@ % number of trials
- \hbadness \@M \let\hbadness \@tempcnta
- \hfuzz \maxdimen \let\hfuzz \@tempdima
- \let\write \tabu@nowrite\let\GenericError \tabu@GenericError
- \let\savetabu \@gobble \let\tabudefaulttarget \linewidth
- \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote
- \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor
- \let\tabu@aftergroupcleanup \relax % only after the last trial
- \tabu@mkpreambuffer
- \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init
- \def\tabu@lasttry{\m@ne\p@}\fi
- \begingroup \iffalse{\fi \ifnum0=`}\fi
- \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi %
- \tabu@collectbody \tabu@strategy %
-}% \tabu@setstrategy
-\def\tabu@savecounters{%
- \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}%
- \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax
-}% \tabu@savecounters
-\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0)
- \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs
- \ifdim \dimen@>\z@
- \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax
- \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi
- \fi
-}% \tabucolX@init
-\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum
- \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@
- \else -#2\p@ \tabu@negcoeftrue
- \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax
- \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi
- \tabu@wddef{#1}{0pt}%
- \fi
-}% \tabu@Xinit
-%% Collecting the environment body ----------------------------------
-\long\def\tabu@collectbody #1#2\end #3{%
- \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}%
- \ifx \tabu@stack\@empty
- \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}%
- \def\tabu@end@envir{\end{#3}}%
- \iftabuscantokens
- \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}%
- \else \def\tabu@endenvir {\let\endarray \@empty
- \end{#3}\tabu@gobbleX}%
- \fi
- \else \def\tabu@endenvir {\end{#3}}\fi}%
- \let\tabu@collectbody \tabu@endofcollect
- \else\def\tabu@temp{#3}%
- \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }%
- \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}%
- \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}%
- \else \toks@\expandafter{\the\toks@ #2\end{#3}}%
- \fi\fi\fi
- \fi
- \tabu@collectbody{#1}%
-}% \tabu@collectbody
-\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}%
-\def\tabu@endofcollect #1{\ifnum0=`{}\fi
- \expandafter\endgroup \the\toks@ #1%
-}% \tabu@endofcollect
-%% The trials: switching between strategies -------------------------
-\def\tabu@strategy {\relax % stops \count@ assignment !
- \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished)
- \expandafter \tabu@endoftrials
- \or % case 1 = exit in vertical measure (outer in mode 3)
- \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}%
- \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}%
- \expandafter \tabu@endoftrials
- \or % case 2 = exit with a rule replacing the table (outer in mode 4)
- \expandafter \tabu@quickend
- \or % case 3 = outer is in mode 3 because of no X
- \begingroup
- \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}%
- \def\tabu@cellralign{\tabu@verticalspacing}%
- \expandafter \tabu@measuring
- \else % case 4 = horizontal measure
- \begingroup
- \global\let\tabu@elapsedtime \tabu@message@etime
- \long\def\multicolumn##1##2##3{\multispan{##1}}%
- \let\tabu@startpboxORI \@startpbox
- \iftabu@spread
- \def\tabu@naturalXmax {\z@}%
- \let\tabu@naturalXmin \tabu@naturalXmax
- \tabu@evr{\global\tabu@naturalX \z@}%
- \let\@startpbox \tabu@startpboxmeasure
- \else\iftabu@negcoef
- \let\@startpbox \tabu@startpboxmeasure
- \else \let\@startpbox \tabu@startpboxquick
- \fi\fi
- \expandafter \tabu@measuring
- \fi
-}% \tabu@strategy
-\def\tabu@measuring{\expandafter \tabu@trial \expandafter
- \count@ \the\count@ \tabu@endtrial
-}% \tabu@measuring
-\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi}
-\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr
- \ifx \tabu@savecounters\relax \else
- \let\tabu@savecounters \relax \tabu@clckpt \fi
- $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi
- \expandafter{\expandafter \tabuthepreamble
- \the\tabu@thebody
- \csname tabu@adl@endtrial\endcsname
- \endarray}$\egroup % got \tabu@box
-}% \tabu@shorttrial
-\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr
- \ifx \tabu@savecounters\relax \else
- \let\tabu@savecounters \relax \tabu@clckpt \fi
- \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi
- \expandafter{\expandafter \tabuthepreamble
- \the\tabu@thebody
- \tabuendlongtrial}\egroup % got \tabu@box
-}% \tabu@longtrial
-\def\tabuendlongtrial{% no @ allowed for \scantokens
- \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne
- \LT@get@widths
-}% \tabuendlongtrial
-\def\tabu@adl@endtrial{%
- \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails !
-\def\tabu@seteverycr {\tabu@reset
- \everycr \expandafter{\the\everycr \tabu@everycr}%
- \let\everycr \tabu@noeverycr %
-}% \tabu@seteverycr
-\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@}
-\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr}
-\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi}
-\def\tabu@endoftrials {%
- \iftabuscantokens \expandafter\@firstoftwo
- \else \expandafter\@secondoftwo
- \fi
- {\expandafter \tabu@closetrialsgroup \expandafter
- \tabu@rescan \expandafter{%
- \expandafter\tabuthepreamble
- \the\expandafter\tabu@thebody
- \iftabu@long \else \endarray \fi}}
- {\expandafter\tabu@closetrialsgroup \expandafter
- \tabuthepreamble
- \the\tabu@thebody}%
- \tabu@endenvir % Finish !
-}% \tabu@endoftrials
-\def\tabu@closetrialsgroup {%
- \toks@\expandafter{\tabu@endenvir}%
- \edef\tabu@bufferX{\endgroup
- \tabucolX \the\tabucolX
- \tabu@target \the\tabu@target
- \tabu@cnt \the\tabu@cnt
- \def\noexpand\tabu@endenvir{\the\toks@}%
- %Quid de \@halignto = \tabu@halignto ??
- }% \tabu@bufferX
- \tabu@bufferX
- \ifcase\tabu@nested % print out (outer in mode 0)
- \global\tabu@cnt \tabu@cnt
- \tabu@evr{\tabu@verticaldynamicadjustment}%
- \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty
- \let\@finalstrut \tabu@finalstrut
- \else % vertical measure of nested tabu
- \tabu@evr{\tabu@verticalinit}%
- \tabu@celllalign@def{\tabu@verticalmeasure}%
- \def\tabu@cellralign{\tabu@verticalspacing}%
- \fi
- \tabu@clckpt \let\@halignto \tabu@halignto
- \let\@halignto \@empty
- \tabu@seteverycr
- \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@
- \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts)
- \fi\fi
-}% \tabu@closetrialsgroup
-\def\tabu@quickend {\expandafter \endgroup \expandafter
- \tabu@target \the\tabu@target \tabu@quickrule
- \let\endarray \relax \tabu@endenvir
-}% \tabu@quickend
-\def\tabu@endtrial {\relax % stops \count@ assignment !
- \ifcase \count@ \tabu@err % case 0 = impossible here
- \or \tabu@err % case 1 = impossible here
- \or \tabu@err % case 2 = impossible here
- \or % case 3 = outer goes into mode 0
- \def\tabu@bufferX{\endgroup}\count@ \z@
- \else % case 4 = outer goes into mode 3
- \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3)
- \else \tabu@arith % or 2 (outer in mode 4)
- \fi
- \count@=%
- \ifcase\tabu@nested \thr@@ % outer goes into mode 3
- \else\iftabu@measuring \tw@ % outer is in mode 4
- \else \@ne % outer is in mode 3
- \fi\fi
- \edef\tabu@bufferX{\endgroup
- \tabucolX \the\tabucolX
- \tabu@target \the\tabu@target}%
- \fi
- \expandafter \tabu@bufferX \expandafter
- \count@ \the\count@ \tabu@strategy
-}% \tabu@endtrial
-\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}}
-%% The algorithms: compute the widths / stop or go on ---------------
-\def\tabu@arithnegcoef {%
- \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs
-}% \tabu@arithnegcoef
-\def\tabu@arith@negcoef #1#2{%
- \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition
- \advance\@tempdima #2\tabucolX
- \else
- \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated
- \advance\dimen@ -#2\p@
- \advance\@tempdima -#2\tabucolX
- \else
- \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised
- \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised
- \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target)
- \fi
- \fi
- \fi
-}% \tabu@arith@negcoef
-\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@
- \ifdim \@tempdima=\z@
- \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}%
- \else
- \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2}
- *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}%
- \fi
-}% \tabu@givespace
-\def\tabu@arith {\advance\tabu@cnt \@ne
- \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi
- \tabu@arithnegcoef
- \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax %
- \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax
- \tabu@message{\tabu@message@arith}%
- \ifdim \tabu@DELTA <\tabu@hfuzz
- \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ?
- \let\tabu@ \tabu@givespace \tabu@Xcoefs
- \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message
- \else % already converged: nothing to do but nearly impossible...
- \fi
- \tabucolX \maxdimen
- \tabu@measuringfalse
- \else % need for narrower X columns
- \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax
- \tabu@measuringtrue
- \@whilesw \iftabu@measuring\fi {%
- \advance\tabu@cnt \@ne
- \tabu@arithnegcoef
- \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here
- \tabu@message{\tabu@header
- \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@
- \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@
- \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@
- \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@
- \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else
- \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@
- \fi}%
- \ifdim -\tabu@DELTA<\tabu@hfuzz
- \advance\@tempdima \@tempdimb % for message
- \tabu@measuringfalse
- \else
- \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax
- \fi
- }%
- \fi
- \tabu@message{\tabu@message@reached}%
- \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt
- \tabucolX \the\tabucolX
- \tabu@target \the\tabu@target}%
-}% \tabu@arith
-\def\tabu@spreadarith {%
- \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs
- \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}%
- \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax
- \iftabu@measuring
- \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax
- \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}%
- \else
- \tabu@message{\tabu@message@spreadarith}%
- \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target
- \tabu@message{(tabu) spread
- \ifdim \@tempdimc>\tabu@target useless here: default target used%
- \else too large: reduced to fit default target\fi.}%
- \else
- \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax
- \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}%
- \fi
- \begingroup \let\tabu@wddef \@gobbletwo
- \@tempdimb \@tempdima
- \tabucolX@init
- \tabu@arithnegcoef
- \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax
- \expandafter\endgroup \expandafter\tabucolX \the\tabucolX
- \tabu@arith
- \fi
-}% \tabu@spreadarith
-\def\tabu@spread@arith #1#2{%
- \ifdim #2\p@>\z@ \advance\dimen@ #2\p@
- \else \advance\@tempdima \tabu@wd{#1}\relax
- \fi
-}% \tabu@spread@arith
-%% Reporting in the .log file ---------------------------------------
-\def\tabu@message@defaulttarget{%
- \ifnum\tabu@nested=\z@^^J(tabu) Default target:
- \ifx\tabudefaulttarget\linewidth \string\linewidth
- \ifdim \tabu@thetarget=\linewidth \else
- -\the\dimexpr\linewidth-\tabu@thetarget\fi =
- \else\ifx\tabudefaulttarget\linegoal\string\linegoal=
- \fi\fi
- \else (tabu) Default target (nested): \fi
- \the\tabu@target \on@line
- \ifnum\tabu@nested=\z@ , page \the\c@page\fi}
-\def\tabu@message@target {^^J(tabu) Target specified:
- \the\tabu@target \on@line, page \the\c@page}
-\def\tabu@message@arith {\tabu@header
- \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@
- \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@
- \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@
- \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@
- \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else
- \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@
- \fi
-}% \tabu@message@arith
-\def\tabu@message@spreadarith {\tabu@spreadheader
- \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@
- \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@
- \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@
- \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@
- \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target
- \else \@tempdimc+\tabu@spreadtarget \fi
- {}{}{}{}{}\@@}
-\def\tabu@message@negcoef #1#2{
- \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]:
- \space width = \tabu@wd {#1}
- \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname
- \ifdim -\tabu@pt#2\tabucolX<\tabu@target
- < \number-\rem@pt#2 X
- = \the\dimexpr -\tabu@pt#2\tabucolX \relax
- \else
- <= \the\tabu@target\space < \number-\rem@pt#2 X\fi}
-\def\tabu@message@reached{\tabu@header
- ******* Reached Target:
- hfuzz = \tabu@hfuzz\on@line\space *******}
-\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}%
- \tabu@message{(tabu)\tabu@spaces Time elapsed during measure:
- \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec
- \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime)
- -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax
- *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space
- cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}}
-\def\tabu@message@verticalsp {%
- \ifdim \@tempdima>\tabu@ht
- \ifdim \@tempdimb>\tabu@dp
- \expandafter\expandafter\expandafter\string\tabu@ht =
- \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@
- \expandafter\expandafter\expandafter\string\tabu@dp =
- \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J%
- \else
- \expandafter\expandafter\expandafter\string\tabu@ht =
- \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J%
- \fi
- \else\ifdim \@tempdimb>\tabu@dp
- \tabu@spaces\tabu@spaces\tabu@spaces
- \expandafter\expandafter\expandafter\string\tabu@dp =
- \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi
- \fi
-}% \tabu@message@verticalsp
-\edef\tabu@spaces{\@spaces}
-\def\tabu@strippt{\expandafter\tabu@pt\the}
-{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}}
-\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr}
-\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt}
-\def\do #1{%
- \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{%
- \ifnum##1<10 #1 #1\else
- \ifnum##1<100 #1 \else
- \ifnum##1<\@m #1\fi\fi\fi
- ##1.##2##3##4##5##6##7##8#1}%
- \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }%
- \def\tabu@titles{\ifnum \tabu@nested=\z@
- (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target
- #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}%
- \def\tabu@spreadheader{%
- (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min.
- #1 New Target^^J%
- (tabu) sprd}
- \def\tabu@message@save {\begingroup
- \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@}
- \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt
- \dimexpr####1\p@{ }{ }}}%
- \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}%
- \let\CT@arc@ \relax \let\@preamble \@gobble
- \let\tabu@savedpream \@firstofone
- \let\tabu@savedparams \@firstofone
- \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}%
- \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}%
- \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}%
- \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}%
- \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}%
- \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}%
- \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}%
- \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}%
- \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}%
- \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}%
- \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }%
- \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}%
- \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}%
- \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}%
- \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}%
- \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}%
- \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}%
- \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}%
- \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}%
- \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}%
- \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo
- \tabu@message{%
- (tabu) \string\savetabu{\tabu@temp}: \on@line^^J%
- \tabu@usetabu \@nil^^J}%
- \endgroup}
-}\do{ }
-%% Measuring the natural width (varwidth) - store the results -------
-\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop
- \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}%
- \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ?
- \iftabu@spread \else % if spread -> measure
- \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure
- \let\@startpbox \tabu@startpboxORI % restore immediately (nesting)
- \tabu@measuringtrue % for the quick option...
- \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi
- \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target
- \tabu@target=\tabu@temp\tabucolX \fi\fi
- \setbox\tabu@box \hbox \bgroup
- \begin{varwidth}\tabu@target
- \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width...
- \narrowragged \arraybackslash \parfillskip \@flushglue
- \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi
- \bgroup \aftergroup\tabu@endpboxmeasure
- \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi
- \else \expandafter\@gobble
- \tabu@startpboxquick{#1}% \@gobble \bgroup
- \fi
-}% \tabu@startpboxmeasure
-\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty
- \bgroup\color@begingroup}
-\def\tabu@endpboxmeasure {%
- \@finalstrut \@arstrutbox
- \end{varwidth}\egroup %
- \ifdim \tabu@temp\p@ <\z@ % neg coef
- \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box
- \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}%
- \tabu@debug{\tabu@message@endpboxmeasure}%
- \fi
- \else % spread coef>0
- \global\advance \tabu@naturalX \wd\tabu@box
- \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax
- \ifdim \tabu@naturalXmax <\tabu@naturalX
- \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi
- \ifdim \tabu@naturalXmin <\@tempdima
- \xdef\tabu@naturalXmin {\the\@tempdima}\fi
- \fi
- \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target
-}% \tabu@endpboxmeasure
-\def\tabu@wddef #1{\expandafter\xdef
- \csname tabu@\the\tabu@nested.W\number#1\endcsname}
-\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname}
-\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd
- \the\tabu@Xcol. X[\tabu@temp]:
- target = \the\tabucolX \space
- \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol
- =\tabu@wd\tabu@Xcol
-}% \tabu@message@endpboxmeasure
-\def\tabu@startpboxquick {\bgroup
- \let\@startpbox \tabu@startpboxORI % restore immediately
- \let\tabu \tabu@quick % \begin is expanded before...
- \expandafter\@gobble \@startpbox % gobbles \bgroup
-}% \tabu@startpboxquick
-\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi
- \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick
-}% \tabu@quick
-\def\tabu@endquick {%
- \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else
- \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax
- \endgroup
- \else \let\endtabu \relax
- \tabu@end@envir
- \fi
-}% \tabu@quick
-\def\tabu@endtabu {\end{tabu}}
-\def\tabu@endtabus {\end{tabu*}}
-%% Measuring the heights and depths - store the results -------------
-\def\tabu@verticalmeasure{\everypar{}%
- \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group
- \setbox\tabu@box =\hbox\bgroup
- \let\tabu@verticalspacing \tabu@verticalsp@lcr
- \d@llarbegin % after \hbox ...
- \else
- \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop
- \else\ifnum\currentgrouptype=12\vcenter
- \else\vbox\fi\fi}%
- \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup
- \let\tabu@verticalspacing \tabu@verticalsp@pmb
- \fi
-}% \tabu@verticalmeasure
-\def\tabu@verticalsp@lcr{%
- \d@llarend \egroup %
- \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep
- \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax
- \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi
- \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi
- \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi
- \noindent\vrule height\@tempdima depth\@tempdimb
-}% \tabu@verticalsp@lcr
-\def\tabu@verticalsp@pmb{% inserts struts as needed
- \par \expandafter\egroup
- \expandafter$\expandafter
- \egroup \expandafter
- \@tempdimc \the\prevdepth
- \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep
- \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax
- \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi
- \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi
- \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi
- \let\@finalstrut \@gobble
- \hrule height\@tempdima depth\@tempdimb width\hsize
-%% \box\tabu@box
-}% \tabu@verticalsp@pmb
-
-\def\tabu@verticalinit{%
- \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset !
- \advance\c@taburow \@ne
- \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}%
- \advance\c@taburow \m@ne
-}% \tabu@verticalinit
-\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname}
-\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname}
-\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname}
-\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname}
-\def\tabu@verticaldynamicadjustment {%
- \advance\c@taburow \@ne
- \extrarowheight \dimexpr\tabu@ht - \ht\strutbox
- \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox
- \let\arraystretch \@empty
- \advance\c@taburow \m@ne
-}% \tabu@verticaldynamicadjustment
-\def\tabuphantomline{\crcr \noalign{%
- {\globaldefs \@ne
- \setbox\@arstrutbox \box\voidb@x
- \let\tabu@@celllalign \tabu@celllalign
- \let\tabu@@cellralign \tabu@cellralign
- \let\tabu@@cellleft \tabu@cellleft
- \let\tabu@@cellright \tabu@cellright
- \let\tabu@@thevline \tabu@thevline
- \let\tabu@celllalign \@empty
- \let\tabu@cellralign \@empty
- \let\tabu@cellright \@empty
- \let\tabu@cellleft \@empty
- \let\tabu@thevline \relax}%
- \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}%
- \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr
- \noalign{\tabu@rearstrut
- {\globaldefs\@ne
- \let\tabu@celllalign \tabu@@celllalign
- \let\tabu@cellralign \tabu@@cellralign
- \let\tabu@cellleft \tabu@@cellleft
- \let\tabu@cellright \tabu@@cellright
- \let\tabu@thevline \tabu@@thevline}}}%
- \expandafter}\the\toks@
-}% \tabuphantomline
-%% \firsthline and \lasthline corrections ---------------------------
-\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}}
-\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline}
-\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}}
-\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline}
-\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument)
- \noalign{\ifnum0=`}\fi
- {\CT@arc@\hrule height\arrayrulewidth}%
- \futurelet \tabu@temp \tabu@xhline
-}% \tabu@hline
-\def\tabu@xhline{%
- \ifx \tabu@temp \hline
- {\ifx \CT@drsc@\relax \vskip
- \else\ifx \CT@drsc@\@empty \vskip
- \else \CT@drsc@\hrule height
- \fi\fi
- \doublerulesep}%
- \fi
- \ifnum0=`{\fi}%
-}% \tabu@xhline
-\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@
- \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}%
- \tabu@hlineAZsurround
-}% \tabu@hlineAZ
-\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{%
- \extratabsurround #1\let\tabucline \tabucline@scan
- \let\hline \tabu@hlinescan \let\firsthline \hline
- \let\cline \tabu@clinescan \let\lasthline \hline
- \expandafter \futurelet \expandafter \tabu@temp
- \expandafter \tabu@nexthlineAZ \tabu@temp
-}% \tabu@hlineAZsurround
-\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline}
-\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}}
-\def\tabucline@scan{\@testopt \tabucline@sc@n {}}
-\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}}
-\def\tabu@nexthlineAZ{%
- \ifx \tabu@temp\hline \else
- \ifx \tabu@temp\cline \else
- \ifx \tabu@temp\tabucline \else
- \tabu@hlinecorrection
- \fi\fi\fi
-}% \tabu@nexthlineAZ
-\def\tabu@xhlineAZ #1{%
- \toks@\expandafter{\the\toks@ #1}%
- \@tempdimc \tabu@thick % The last line width
- \ifcase\count@ \@tempdimb \tabu@thick % The first line width
- \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax
- \fi
- \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ
-}% \tabu@xhlineAZ
-\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1
- \@tempdima \dimexpr \ht\@arstrutbox+\dimen@
- \edef\firsthline{%
- \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule
- height \the\dimexpr\@tempdima+\extratabsurround
- depth \dp\@arstrutbox
- width \tabustrutrule}\hss}\cr
- \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb
- +\dp\@arstrutbox \relax}%
- \the\toks@
- }\ifnum0=`{\fi
- \expandafter}\firsthline % we are then !
-}% \tabu@firsthlinecorrection
-\def\tabu@lasthlinecorrection{%
- \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc
- \edef\lasthline{%
- \the\toks@
- \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}%
- \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule
- depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@
- +\extratabsurround-\@tempdimc
- height \z@
- width \tabustrutrule}\hss}\cr
- }\ifnum0=`{\fi
- \expandafter}\lasthline % we are then !
-}% \tabu@lasthlinecorrection
-\def\tabu@LT@@hline{%
- \ifx\LT@next\hline
- \global\let\LT@next \@gobble
- \ifx \CT@drsc@\relax
- \gdef\CT@LT@sep{%
- \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}%
- \else
- \gdef\CT@LT@sep{%
- \multispan\LT@cols{%
- \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}%
- \fi
- \else
- \global\let\LT@next\empty
- \gdef\CT@LT@sep{%
- \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}%
- \fi
- \ifnum0=`{\fi}%
- \multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
- \CT@LT@sep
- \multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
- \noalign{\penalty\@M}%
- \LT@next
-}% \tabu@LT@@hline
-%% Horizontal lines : \tabucline ------------------------------------
-\let\tabu@start \@tempcnta
-\let\tabu@stop \@tempcntb
-\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline}
-\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}%
- \ifnum \tabu@stop<\z@ \toks@{}%
- \else \tabu@clinearg{#1}\tabu@thestyle
- \edef\tabucline{\toks@{%
- \ifnum \tabu@start>\z@ \omit
- \tabu@multispan\tabu@start {\span\omit}&\fi
- \omit \tabu@multispan\tabu@stop {\span\omit}%
- \tabu@thehline\cr
- }}\tabucline
- \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}%
- \fi
- \futurelet \tabu@temp \tabu@xcline
-}% \tabu@cline
-\def\tabu@clinearg #1{%
- \ifx\\#1\\\let\tabu@thestyle \tabu@ls@
- \else \@defaultunits \expandafter\let\expandafter\@tempa
- \romannumeral-`\0#1\relax \@nnil
- \ifx \hbox\@tempa \tabu@clinebox{#1}%
- \else\ifx \box\@tempa \tabu@clinebox{#1}%
- \else\ifx \vbox\@tempa \tabu@clinebox{#1}%
- \else\ifx \vtop\@tempa \tabu@clinebox{#1}%
- \else\ifx \copy\@tempa \tabu@clinebox{#1}%
- \else\ifx \leaders\@tempa \tabu@clineleads{#1}%
- \else\ifx \cleaders\@tempa \tabu@clineleads{#1}%
- \else\ifx \xleaders\@tempa \tabu@clineleads{#1}%
- \else\tabu@getline {#1}%
- \fi\fi\fi\fi\fi\fi\fi\fi
- \fi
-}% \tabu@clinearg
-\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}}
-\def\tabu@clineleads #1{%
- \let\tabu@thestyle \relax \let\tabu@leaders \@undefined
- \gdef\tabu@thehrule{#1}}
-\def\tabu@thehline{\begingroup
- \ifdefined\tabu@leaders
- \noexpand\tabu@thehleaders
- \else \noexpand\tabu@thehrule
- \fi \endgroup
-}% \tabu@thehline
-\def\tabu@xcline{%
- \ifx \tabu@temp\tabucline
- \toks@\expandafter{\the\toks@ \noalign
- {\ifx\CT@drsc@\relax \vskip
- \else \CT@drsc@\hrule height
- \fi
- \doublerulesep}}%
- \fi
- \tabu@docline
-}% \tabu@xcline
-\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@}
-\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}%
- \ifnum0=`{\fi}\aftergroup\tabu@doclineafter}
-\def\tabu@multispan #1#2{%
- \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan
- \else \expandafter\@gobbletwo
- \fi {#1-1}{#2}%
-}% \tabu@multispan
-\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil}
-\def\tabu@start@stop #1-#2\@nnil{%
- \@defaultunits \tabu@start\number 0#1\relax \@nnil
- \@defaultunits \tabu@stop \number 0#2\relax \@nnil
- \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne
- \else\ifnum \tabu@stop=\z@ \tabu@nbcols
- \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols
- \else \tabu@stop
- \fi\fi\fi
- \advance\tabu@start \m@ne
- \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi
-}% \tabu@start@stop
-%% Numbers: siunitx S columns (and \tabudecimal) -------------------
-\def\tabu@tabudecimal #1{%
- \def\tabu@decimal{#1}\@temptokena{}%
- \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces
- \tabu@scandecimal
-}% \tabu@tabudecimal
-\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@}
-\def\tabu@skipdecimal#1{#1\tabu@scandecimal}
-\def\tabu@getdecimal@ignorespaces{%
- \ifcase 0\ifx\tabu@temp\ignorespaces\else
- \ifx\tabu@temp\@sptoken1\else
- 2\fi\fi\relax
- \let\tabu@getdecimal@ \tabu@getdecimal
- \expandafter\tabu@skipdecimal
- \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal
- \else \expandafter\tabu@skipdecimal
- \fi
-}% \tabu@getdecimal@ignorespaces
-\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}%
- \tabu@scandecimal}
-\def\do#1{%
- \def\tabu@get@decimalspace#1{%
- \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}%
-}\do{ }
-\let\tabu@@tabudecimal \tabu@tabudecimal
-\def\tabu@getdecimal{%
- \ifcase 0\ifx 0\tabu@temp\else
- \ifx 1\tabu@temp\else
- \ifx 2\tabu@temp\else
- \ifx 3\tabu@temp\else
- \ifx 4\tabu@temp\else
- \ifx 5\tabu@temp\else
- \ifx 6\tabu@temp\else
- \ifx 7\tabu@temp\else
- \ifx 8\tabu@temp\else
- \ifx 9\tabu@temp\else
- \ifx .\tabu@temp\else
- \ifx ,\tabu@temp\else
- \ifx -\tabu@temp\else
- \ifx +\tabu@temp\else
- \ifx e\tabu@temp\else
- \ifx E\tabu@temp\else
- \ifx\tabu@cellleft\tabu@temp1\else
- \ifx\ignorespaces\tabu@temp1\else
- \ifx\@sptoken\tabu@temp2\else
- 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax
- \expandafter\tabu@get@decimal
- \or \expandafter\tabu@skipdecimal
- \or \expandafter\tabu@get@decimalspace
- \else\expandafter\tabu@printdecimal
- \fi
-}% \tabu@getdecimal
-\def\tabu@printdecimal{%
- \edef\tabu@temp{\the\@temptokena}%
- \ifx\tabu@temp\@empty\else
- \ifx\tabu@temp\space\else
- \expandafter\tabu@decimal\expandafter{\the\@temptokena}%
- \fi\fi
-}% \tabu@printdecimal
-%% Verbatim inside X columns ----------------------------------------
-\def\tabu@verbatim{%
- \let\verb \tabu@verb
- \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd
-}% \tabu@verbatim
-\let\tabu@ltx@verb \verb
-\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb}
-\def\tabu@fancyvrb {%
- \def\tabu@FV@DefineCheckEnd ##1{%
- \def\tabu@FV@DefineCheckEnd{%
- ##1%
- \let\FV@CheckEnd \tabu@FV@CheckEnd
- \let\FV@@CheckEnd \tabu@FV@@CheckEnd
- \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd
- \edef\FV@EndScanning{%
- \def\noexpand\next{\noexpand\end{\FV@EnvironName}}%
- \global\let\noexpand\FV@EnvironName\relax
- \noexpand\next}%
- \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}%
- }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd}
-}% \tabu@fancyvrb
-\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil}
-\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}}
-\begingroup
-\catcode`\[1 \catcode`\]2
-\@makeother\{ \@makeother\}
- \edef\x[\endgroup
- \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3%
- ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}}
-\def\tabu@FV@ListProcessLine #1{%
- \hbox {%to \hsize{%
- \kern\leftmargin
- \hbox {%to \linewidth{%
- \FV@LeftListNumber
- \FV@LeftListFrame
- \FancyVerbFormatLine{#1}\hss
-%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on)
-%% \FV@RightListFrame}%
- \FV@RightListFrame
- \FV@RightListNumber}%
-%% DG/SR modification end
- \hss}}
-%% \savetabu --------------------------------------------------------
-\newcommand*\savetabu[1]{\noalign{%
- \tabu@sanitizearg{#1}\tabu@temp
- \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else
- \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}%
- \ifdefined\tabu@restored \expandafter\let
- \csname tabu@saved@\tabu@temp \endcsname \tabu@restored
- \else {\tabu@save}%
- \fi
- \fi}%
-}% \savetabu
-\def\tabu@save {%
- \toks0\expandafter{\tabu@saved@}%
- \iftabu@negcoef
- \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}%
- \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi
- \toks1\expandafter{\tabu@savedpream}%
- \toks2\expandafter{\tabu@savedpreamble}%
- \let\@preamble \relax
- \let\tabu@savedpream \relax \let\tabu@savedparams \relax
- \edef\tabu@preamble{%
- \def\noexpand\tabu@aligndefault{\tabu@align}%
- \def\tabu@savedparams {\noexpand\the\toks0}%
- \def\tabu@savedpream {\noexpand\the\toks1}}%
- \edef\tabu@usetabu{%
- \def\@preamble {\noexpand\the\toks2}%
- \tabu@target \the\tabu@target \relax
- \tabucolX \the\tabucolX \relax
- \tabu@nbcols \the\tabu@nbcols \relax
- \def\noexpand\tabu@aligndefault{\tabu@align}%
- \def\tabu@savedparams {\noexpand\the\toks0}%
- \def\tabu@savedpream {\noexpand\the\toks1}}%
- \let\tabu@aligndefault \relax \let\@sharp \relax
- \edef\@tempa{\noexpand\tabu@s@ved
- {\tabu@usetabu}
- {\tabu@preamble}
- {\the\toks1}}\@tempa
- \tabu@message@save
-}% \tabu@save
-\long\def\tabu@s@ved #1#2#3{%
- \def\tabu@usetabu{#1}%
- \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{%
- \ifodd ##1% \usetabu
- \tabu@measuringfalse \tabu@spreadfalse % Just in case...
- \gdef\tabu@usetabu {%
- \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi
- \global\let\tabu@usetabu \@undefined
- \def\@halignto {to\tabu@target}%
- #1%
- \ifx \tabu@align\tabu@aligndefault@text
- \ifnum \tabu@nested=\z@
- \let\tabu@align \tabu@aligndefault \fi\fi}%
- \else % \preamble
- \gdef\tabu@preamble {%
- \global\let\tabu@preamble \@undefined
- #2%
- \ifx \tabu@align\tabu@aligndefault@text
- \ifnum \tabu@nested=\z@
- \let\tabu@align \tabu@aligndefault \fi\fi}%
- \fi
- #3}%
-}% \tabu@s@ved
-\def\tabu@aligndefault@text {\tabu@aligndefault}%
-\def\tabu@warn@usetabu {\PackageWarning{tabu}
- {Specifying a target with \string\usetabu\space is useless
- \MessageBreak The target cannot be changed!}}
-\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi}
-\def\tabu@savewarn#1#2{\PackageInfo{tabu}
- {User-name `#1' already used for \string\savetabu
- \MessageBreak #2}}%
-\def\tabu@saveerr#1{\PackageError{tabu}
- {User-name `#1' is unknown for \string\usetabu
- \MessageBreak I cannot restore an unknown preamble!}\@ehd}
-%% \rowfont ---------------------------------------------------------
-\newskip \tabu@cellskip
-\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi
- {\ifnum0=`}\fi \tabu@row@font}
-\newcommand*\tabu@row@font[2][]{%
- \ifnum7=\currentgrouptype
- \global\let\tabu@@cellleft \tabu@cellleft
- \global\let\tabu@@cellright \tabu@cellright
- \global\let\tabu@@celllalign \tabu@celllalign
- \global\let\tabu@@cellralign \tabu@cellralign
- \global\let\tabu@@rowfontreset\tabu@rowfontreset
- \fi
- \global\let\tabu@rowfontreset \tabu@rowfont@reset
- \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}%
- \ifcsname tabu@cell@#1\endcsname % row alignment
- \csname tabu@cell@#1\endcsname \fi
- \ifnum0=`{\fi}% end of group / noalign group
-}% \rowfont
-\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}%
-\def\tabu@rowfont@reset{%
- \global\let\tabu@rowfontreset \tabu@@rowfontreset
- \global\let\tabu@cellleft \tabu@@cellleft
- \global\let\tabu@cellright \tabu@@cellright
- \global\let\tabu@cellfont \@empty
- \global\let\tabu@celllalign \tabu@@celllalign
- \global\let\tabu@cellralign \tabu@@cellralign
-}% \tabu@@rowfontreset
-\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl
-%% \tabu@prepnext@tok -----------------------------------------------
-\newif \iftabu@cellright
-\def\tabu@prepnext@tok{%
- \ifnum \count@<\z@ %
- \@tempcnta \@M %
- \tabu@nbcols\z@
- \let\tabu@fornoopORI \@fornoop
- \tabu@cellrightfalse
- \else
- \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left
- \advance \tabu@nbcols \@ne
- \iftabu@cellright % before-previous token is right and is finished
- \tabu@cellrightfalse %
- \tabu@righttok
- \fi
- \tabu@lefttok
- \or % (case 1) previous token is right
- \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop
- \else % special column: do not change the token
- \iftabu@cellright % before-previous token is right
- \tabu@cellrightfalse
- \tabu@righttok
- \fi
- \fi % \ifcase
- \fi
- \tabu@prepnext@tokORI
-}% \tabu@prepnext@tok
-\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@}
-\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{%
- \ifx \in@#2\else
- \let\@fornoop \tabu@fornoopORI
- \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}%
- \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}%
- \expandafter\prepnext@tok
- \fi
-}% \tabu@lastnoop
-\def\tabu@righttok{%
- \advance \count@ \m@ne
- \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}%
- \advance \count@ \@ne
-}% \tabu@righttok
-\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign
- \the\toks\count@ \tabu@cellleft}% after because of $
-}% \tabu@lefttok
-%% Neutralisation of glues ------------------------------------------
-\let\tabu@cellleft \@empty
-\let\tabu@cellright \@empty
-\tabu@celllalign@def{\tabu@cellleft}%
-\let\tabu@cellralign \@empty
-\def\tabu@cell@align #1#2#3{%
- \let\tabu@maybesiunitx \toks@ \tabu@celllalign
- \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}%
- \toks@\expandafter{\tabu@cellralign #2}%
- \xdef\tabu@cellralign{\the\toks@}%
- \toks@\expandafter{\tabu@cellleft #3}%
- \xdef\tabu@cellleft{\the\toks@}%
-}% \tabu@cell@align
-\def\tabu@cell@l{% force alignment to left
- \tabu@cell@align
- {\tabu@removehfil \raggedright \tabu@cellleft}% left
- {\tabu@flush1\tabu@ignorehfil}% right
- \raggedright
-}% \tabu@cell@l
-\def\tabu@cell@c{% force alignment to center
- \tabu@cell@align
- {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft}
- {\tabu@flush{.5}\tabu@ignorehfil}
- \centering
-}% \tabu@cell@c
-\def\tabu@cell@r{% force alignment to right
- \tabu@cell@align
- {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft}
- \tabu@ignorehfil
- \raggedleft
-}% \tabu@cell@r
-\def\tabu@cell@j{% force justification (for p, m, b columns)
- \tabu@cell@align
- {\tabu@justify\tabu@cellleft}
- {}
- \tabu@justify
-}% \tabu@cell@j
-\def\tabu@justify{%
- \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip
- \parfillskip\@flushglue
-}% \tabu@justify
-%% ragged2e settings
-\def\tabu@cell@L{% force alignment to left (ragged2e)
- \tabu@cell@align
- {\tabu@removehfil \RaggedRight \tabu@cellleft}
- {\tabu@flush 1\tabu@ignorehfil}
- \RaggedRight
-}% \tabu@cell@L
-\def\tabu@cell@C{% force alignment to center (ragged2e)
- \tabu@cell@align
- {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft}
- {\tabu@flush{.5}\tabu@ignorehfil}
- \Centering
-}% \tabu@cell@C
-\def\tabu@cell@R{% force alignment to right (ragged2e)
- \tabu@cell@align
- {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft}
- \tabu@ignorehfil
- \RaggedLeft
-}% \tabu@cell@R
-\def\tabu@cell@J{% force justification (ragged2e)
- \tabu@cell@align
- {\justifying \tabu@cellleft}
- {}
- \justifying
-}% \tabu@cell@J
-\def\tabu@flush#1{%
- \iftabu@colortbl % colortbl uses \hfill rather than \hfil
- \hskip \ifnum13<\currentgrouptype \stretch{#1}%
- \else \ifdim#1pt<\p@ \tabu@cellskip
- \else \stretch{#1}
- \fi\fi \relax
- \else % array.sty
- \ifnum 13<\currentgrouptype
- \hfil \hskip1sp \relax \fi
- \fi
-}% \tabu@flush
-\let\tabu@hfil \hfil
-\let\tabu@hfill \hfill
-\let\tabu@hskip \hskip
-\def\tabu@removehfil{%
- \iftabu@colortbl
- \unkern \tabu@cellskip =\lastskip
- \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip
- \else \tabu@cellskip \z@skip
- \fi
- \else
- \ifdim\lastskip=1sp\unskip\fi
- \ifnum\gluestretchorder\lastskip =\@ne
- \hfilneg % \hfilneg for array.sty but not for colortbl...
- \fi
- \fi
-}% \tabu@removehfil
-\def\tabu@ignorehfil{\aftergroup \tabu@nohfil}
-\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil
- \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group
-}% \tabu@nohfil
-\def\tabu@colortblalignments {% if colortbl
- \def\tabu@nohfil{%
- \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group
- \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff...
- \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local
-}% \tabu@colortblalignments
-%% Taking care of footnotes and hyperfootnotes ----------------------
-\long\def\tabu@footnotetext #1{%
- \edef\@tempa{\the\tabu@footnotes
- \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}%
- \global\tabu@footnotes\expandafter{\@tempa {#1}}}%
-\long\def\tabu@xfootnotetext [#1]#2{%
- \global\tabu@footnotes\expandafter{\the\tabu@footnotes
- \footnotetext [{#1}]{#2}}}
-\let\tabu@xfootnote \@xfootnote
-\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }}
-\long\def\tabu@Hy@xfootnote [#1]{%
- \begingroup
- \value\@mpfn #1\relax
- \protected@xdef \@thefnmark {\thempfn}%
- \endgroup
- \@footnotemark \tabu@Hy@ftntxt {#1}%
-}% \tabu@Hy@xfootnote
-\long\def\tabu@Hy@ftntxt #1#2{%
- \edef\@tempa{%
- \the\tabu@footnotes
- \begingroup
- \value\@mpfn #1\relax
- \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}%
- \expandafter \noexpand \expandafter
- \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}%
- }%
- \global\tabu@footnotes\expandafter{\@tempa {#2}%
- \endgroup}%
-}% \tabu@Hy@ftntxt
-\long\def\tabu@Hy@footnotetext #1#2{%
- \H@@footnotetext{%
- \ifHy@nesting
- \hyper@@anchor {#1}{#2}%
- \else
- \Hy@raisedlink{%
- \hyper@@anchor {#1}{\relax}%
- }%
- \def\@currentHref {#1}%
- \let\@currentlabelname \@empty
- #2%
- \fi
- }%
-}% \tabu@Hy@footnotetext
-%% No need for \arraybackslash ! ------------------------------------
-\def\tabu@latextwoe {%
-\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}}
-\tabu@temp \tabu@centering \centering \arraybackslash
-\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash
-\tabu@temp \tabu@raggedright \raggedright \arraybackslash
-}% \tabu@latextwoe
-\def\tabu@raggedtwoe {%
-\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}}
-\tabu@temp \tabu@Centering \Centering \arraybackslash
-\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash
-\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash
-\tabu@temp \tabu@justifying \justifying \arraybackslash
-}% \tabu@raggedtwoe
-\def\tabu@normalcrbackslash{\let\\\@normalcr}
-\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{%
- \expandafter\tabu@normalcrbackslash \@trivlist}}
-%% Utilities: \fbox \fcolorbox and \tabudecimal -------------------
-\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox}
-\def\tabu@beginfbox {\bgroup \kern\fboxsep
- \bgroup\aftergroup\tabu@endfbox}
-\def\tabu@endfbox {\kern\fboxsep\egroup\egroup
- \@frameb@x\relax}
-\def\tabu@color@b@x #1#2{\leavevmode \bgroup
- \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}%
- \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox
-}% \tabu@color@b@x
-\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup
- \aftergroup\tabu@endcolor@b@x \set@color}
-\def\tabu@endcolor@b@x {\kern\fboxsep \egroup
- \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@
- \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@
- \tabu@docolor@b@x \egroup
-}% \tabu@endcolor@b@x
-%% Corrections (arydshln, delarray, colortbl) -----------------------
-\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray
- \iftabu@colortbl
- \ifdefined\adl@array %
- \def\tabu@endarray{%
- \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup %
- \@arrayright %
- \gdef\@preamble{}}%
- \else %
- \def\tabu@endarray{%
- \crcr \egroup \egroup %
- \@arrayright %
- \gdef\@preamble{}\CT@end}%
- \fi
- \else
- \ifdefined\adl@array %
- \def\tabu@endarray{%
- \adl@endarray \egroup \adl@arrayrestore \egroup %
- \@arrayright %
- \gdef\@preamble{}}%
- \else %
- \PackageWarning{tabu}
- {\string\@arrayright\space is missing from the
- \MessageBreak definition of \string\endarray.
- \MessageBreak Compatibility with delarray.sty is broken.}%
- \fi\fi
-}% \tabu@fix@arrayright
-\def\tabu@adl@xarraydashrule #1#2#3{%
- \ifnum\@lastchclass=\adl@class@start\else
- \ifnum\@lastchclass=\@ne\else
- \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1)
- \adl@leftrulefalse \fi\fi % must be treated the same
- \fi
- \ifadl@zwvrule\else \ifadl@inactive\else
- \@addtopreamble{\vrule\@width\arrayrulewidth
- \@height\z@ \@depth\z@}\fi \fi
- \ifadl@leftrule
- \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}%
- {\number#1}#3}%
- \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}%
- {\number#2}#3}
- \fi
-}% \tabu@adl@xarraydashrule
-\def\tabu@adl@act@endpbox {%
- \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox
- \egroup \egroup
- \adl@colhtdp \box\adl@box \hfil
-}% \tabu@adl@act@endpbox
-\def\tabu@adl@fix {%
- \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln
- \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln
- \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln
- \let\@preamerror \@preamerr % arydshln
-}% \tabu@adl@fix
-%% Correction for longtable' \@startbox definition ------------------
-%% => \everypar is ``missing'' : TeX should be in vertical mode
-\def\tabu@LT@startpbox #1{%
- \bgroup
- \let\@footnotetext\LT@p@ftntext
- \setlength\hsize{#1}%
- \@arrayparboxrestore
- \everypar{%
- \vrule \@height \ht\@arstrutbox \@width \z@
- \everypar{}}%
-}% \tabu@LT@startpbox
-%% \tracingtabu and the package options ------------------
-\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}}
-\DeclareOption{linegoal}{%
- \AtEndOfPackage{%
- \RequirePackage{linegoal}[2010/12/07]%
- \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX
-}}
-\DeclareOption{scantokens}{\tabuscantokenstrue}
-\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}}
-\def\tracingtabu {\begingroup\@ifnextchar=%
- {\afterassignment\tabu@tracing\count@}
- {\afterassignment\tabu@tracing\count@1\relax}}
-\def\tabu@tracing{\expandafter\endgroup
- \expandafter\tabu@tr@cing \the\count@ \relax
-}% \tabu@tracing
-\def\tabu@tr@cing #1\relax {%
- \ifnum#1>\thr@@ \let\tabu@tracinglines\message
- \else \let\tabu@tracinglines\@gobble
- \fi
- \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG
- \def\tabu@mkarstrut {\tabu@DBG@arstrut}%
- \tabustrutrule 1.5\p@
- \else \let\tabu@DBG \@gobble
- \def\tabu@mkarstrut {\tabu@arstrut}%
- \tabustrutrule \z@
- \fi
- \ifnum#1>\@ne \let\tabu@debug \message
- \else \let\tabu@debug \@gobble
- \fi
- \ifnum#1>\z@
- \let\tabu@message \message
- \let\tabu@tracing@save \tabu@message@save
- \let\tabu@starttimer \tabu@pdftimer
- \else
- \let\tabu@message \@gobble
- \let\tabu@tracing@save \@gobble
- \let\tabu@starttimer \relax
- \fi
-}% \tabu@tr@cing
-%% Setup \AtBeginDocument
-\AtBeginDocument{\tabu@AtBeginDocument}
-\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined
- \ifdefined\arrayrulecolor \tabu@colortbltrue %
- \tabu@colortblalignments % different glues are used
- \else \tabu@colortblfalse \fi
- \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi
- \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi
- \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@
- \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname %
- \expandafter\ifx
- \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax
- \tabu@siunitxtrue
- \else \let\tabu@maybesiunitx \@firstofone %
- \let\tabu@siunitx \tabu@nosiunitx
- \tabu@siunitxfalse
- \fi
- \ifdefined\adl@array %
- \else \let\tabu@adl@fix \relax
- \let\tabu@adl@endtrial \@empty \fi
- \ifdefined\longtable %
- \else \let\longtabu \tabu@nolongtabu \fi
- \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi
- \csname\ifcsname ifHy@hyperfootnotes\endcsname %
- ifHy@hyperfootnotes\else iffalse\fi\endcsname
- \let\tabu@footnotetext \tabu@Hy@ftntext
- \let\tabu@xfootnote \tabu@Hy@xfootnote \fi
- \ifdefined\FV@DefineCheckEnd%
- \tabu@fancyvrb \fi
- \ifdefined\color %
- \let\tabu@color \color
- \def\tabu@leavevmodecolor ##1{%
- \def\tabu@leavevmodecolor {\leavevmode ##1}%
- }\expandafter\tabu@leavevmodecolor\expandafter{\color}%
- \else
- \let\tabu@color \tabu@nocolor
- \let\tabu@leavevmodecolor \@firstofone \fi
- \tabu@latextwoe
- \ifdefined\@raggedtwoe@everyselectfont %
- \tabu@raggedtwoe
- \else
- \let\tabu@cell@L \tabu@cell@l
- \let\tabu@cell@R \tabu@cell@r
- \let\tabu@cell@C \tabu@cell@c
- \let\tabu@cell@J \tabu@cell@j \fi
- \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}%
- \ifin@ \let\tabu@endarray \endarray
- \else \tabu@fix@arrayright \fi%
- \everyrow{}%
-}% \tabu@AtBeginDocument
-\def\tabu@warn@cellspace{%
- \PackageWarning{tabu}{%
- Package cellspace has some limitations
- \MessageBreak And redefines some macros of array.sty.
- \MessageBreak Please use \string\tabulinesep\space to control
- \MessageBreak vertical spacing of lines inside tabu environment}%
-}% \tabu@warn@cellspace
-%% tabu Package initialisation
-\tabuscantokensfalse
-\let\tabu@arc@G \relax
-\let\tabu@drsc@G \relax
-\let\tabu@evr@G \@empty
-\let\tabu@rc@G \@empty
-\def\tabu@ls@G {\tabu@linestyle@}%
-\let\tabu@@rowfontreset \@empty %
-\let\tabu@@celllalign \@empty
-\let\tabu@@cellralign \@empty
-\let\tabu@@cellleft \@empty
-\let\tabu@@cellright \@empty
-\def\tabu@naturalXmin {\z@}
-\def\tabu@naturalXmax {\z@}
-\let\tabu@rowfontreset \@empty
-\def\tabulineon {4pt}\let\tabulineoff \tabulineon
-\tabu@everyrowtrue
-\ifdefined\pdfelapsedtime %
- \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}%
-\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax
-\fi
-\tracingtabu=\z@
-\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@
-\tabulinestyle{}
-\taburowcolors{}
-\let\tabudefaulttarget \linewidth
-\ProcessOptions* % \ProcessOptions* is quicker !
-\endinput
-%%
-%% End of file `tabu.sty'.