init
This commit is contained in:
27
научка/code/pwm_motor_control/Modbus/latex/Makefile
Normal file
27
научка/code/pwm_motor_control/Modbus/latex/Makefile
Normal file
@@ -0,0 +1,27 @@
|
||||
LATEX_CMD?=pdflatex
|
||||
MKIDX_CMD?=makeindex
|
||||
BIBTEX_CMD?=bibtex
|
||||
LATEX_COUNT?=8
|
||||
MANUAL_FILE?=refman
|
||||
|
||||
all: $(MANUAL_FILE).pdf
|
||||
|
||||
pdf: $(MANUAL_FILE).pdf
|
||||
|
||||
$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex
|
||||
$(LATEX_CMD) $(MANUAL_FILE)
|
||||
$(MKIDX_CMD) $(MANUAL_FILE).idx
|
||||
$(LATEX_CMD) $(MANUAL_FILE)
|
||||
latex_count=$(LATEX_COUNT) ; \
|
||||
while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\
|
||||
do \
|
||||
echo "Rerunning latex...." ;\
|
||||
$(LATEX_CMD) $(MANUAL_FILE) ;\
|
||||
latex_count=`expr $$latex_count - 1` ;\
|
||||
done
|
||||
$(MKIDX_CMD) $(MANUAL_FILE).idx
|
||||
$(LATEX_CMD) $(MANUAL_FILE)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf
|
||||
7
научка/code/pwm_motor_control/Modbus/latex/annotated.tex
Normal file
7
научка/code/pwm_motor_control/Modbus/latex/annotated.tex
Normal file
@@ -0,0 +1,7 @@
|
||||
\doxysection{Data Structures}
|
||||
Here are the data structures with brief descriptions\+:\begin{DoxyCompactList}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\+\_\+\+Handle\+Type\+Def}} \\*Handle for RS communication }{\pageref{struct_r_s___handle_type_def}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\+\_\+\+Msg\+Type\+Def}} }{\pageref{struct_r_s___msg_type_def}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\+\_\+\+Settings\+Type\+Def}} }{\pageref{struct_t_i_m___settings_type_def}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\+\_\+\+Settings\+Type\+Def}} }{\pageref{struct_u_a_r_t___settings_type_def}}{}
|
||||
\end{DoxyCompactList}
|
||||
@@ -0,0 +1,14 @@
|
||||
\doxysection{crc\+\_\+algs.\+h}
|
||||
\hypertarget{crc__algs_8h_source}{}\label{crc__algs_8h_source}
|
||||
\begin{DoxyCode}{0}
|
||||
\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#include\ "{}main.h"{}}}
|
||||
\DoxyCodeLine{00002\ }
|
||||
\DoxyCodeLine{00003\ \textcolor{comment}{//\ extern\ here\ to\ use\ in\ bootloader.c}}
|
||||
\DoxyCodeLine{00004\ \textcolor{keyword}{extern}\ uint32\_t\ CRC\_calc;}
|
||||
\DoxyCodeLine{00005\ \textcolor{keyword}{extern}\ uint32\_t\ CRC\_ref;}
|
||||
\DoxyCodeLine{00006\ }
|
||||
\DoxyCodeLine{00007\ }
|
||||
\DoxyCodeLine{00008\ uint16\_t\ crc16(uint8\_t\ *data,\ uint32\_t\ data\_size);}
|
||||
\DoxyCodeLine{00009\ uint32\_t\ crc32(uint8\_t\ *data,\ uint32\_t\ data\_size);}
|
||||
|
||||
\end{DoxyCode}
|
||||
694
научка/code/pwm_motor_control/Modbus/latex/doxygen.sty
Normal file
694
научка/code/pwm_motor_control/Modbus/latex/doxygen.sty
Normal file
@@ -0,0 +1,694 @@
|
||||
\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 <pre> ... </pre>
|
||||
\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 <ol> ... </ol>)
|
||||
\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 <ul> ... </ul>)
|
||||
\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 <dl> ... </dl>)
|
||||
\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 on
|
||||
\newcommand{\doxylink}[2]{%
|
||||
\mbox{\hyperlink{#1}{#2}}%
|
||||
}
|
||||
|
||||
% Used when hyperlinks are turned on
|
||||
% Third argument is the SectionType, see the doxygen internal
|
||||
% documentation for the values (relevant: Page ... Subsubsection).
|
||||
\newcommand{\doxysectlink}[3]{%
|
||||
\mbox{\hyperlink{#1}{#2}}%
|
||||
}
|
||||
% Used when hyperlinks are turned off
|
||||
\newcommand{\doxyref}[3]{%
|
||||
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
|
||||
}
|
||||
|
||||
% Used when hyperlinks are turned off
|
||||
% Fourth argument is the SectionType, see the doxygen internal
|
||||
% documentation for the values (relevant: Page ... Subsubsection).
|
||||
\newcommand{\doxysectref}[4]{%
|
||||
\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{xmlcdata}{rgb}{0.0,0.0,0.0}
|
||||
\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
|
||||
\newcounter{subsubsubsection}[subsubsection]
|
||||
\newcounter{subsubsubsubsection}[subsubsubsection]
|
||||
\newcounter{subsubsubsubsubsection}[subsubsubsubsection]
|
||||
\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection]
|
||||
\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}}
|
||||
\newcommand{\subsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsubsubsectionmark}[1]{}
|
||||
\def\toclevel@subsubsubsection{4}
|
||||
\def\toclevel@subsubsubsubsection{5}
|
||||
\def\toclevel@subsubsubsubsubsection{6}
|
||||
\def\toclevel@subsubsubsubsubsubsection{7}
|
||||
\def\toclevel@paragraph{8}
|
||||
\def\toclevel@subparagraph{9}
|
||||
|
||||
\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\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
|
||||
\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}}
|
||||
\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}}
|
||||
\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}}
|
||||
\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}}
|
||||
\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}}
|
||||
\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}}
|
||||
\makeatother
|
||||
% the sectsty doesn't look to be maintained but gives, in our case, some warning like:
|
||||
% LaTeX Warning: Command \underline has changed.
|
||||
% Check if current package is valid.
|
||||
% unfortunately had to copy the relevant part
|
||||
\newcommand*{\doxypartfont} [1]
|
||||
{\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1}
|
||||
\gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxychapterfont} [1]
|
||||
{\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1}
|
||||
\gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxysectionfont} [1]
|
||||
{\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubsectionfont} [1]
|
||||
{\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubsubsectionfont} [1]
|
||||
{\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxyparagraphfont} [1]
|
||||
{\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubparagraphfont} [1]
|
||||
{\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxyminisecfont} [1]
|
||||
{\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}%
|
||||
\doxychapterfont{#1}%
|
||||
\doxysectionfont{#1}%
|
||||
\doxysubsectionfont{#1}%
|
||||
\doxysubsubsectionfont{#1}%
|
||||
\doxyparagraphfont{#1}%
|
||||
\doxysubparagraphfont{#1}%
|
||||
\doxyminisecfont{#1}}%
|
||||
% 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}
|
||||
2178
научка/code/pwm_motor_control/Modbus/latex/etoc_doxygen.sty
Normal file
2178
научка/code/pwm_motor_control/Modbus/latex/etoc_doxygen.sty
Normal file
@@ -0,0 +1,2178 @@
|
||||
%%
|
||||
%% This is file etoc_doxygen.sty
|
||||
%%
|
||||
%% Apart from this header notice and the renaming from etoc to
|
||||
%% etoc_doxygen (also in \ProvidesPackage) it is an identical
|
||||
%% copy of
|
||||
%%
|
||||
%% etoc.sty
|
||||
%%
|
||||
%% at version 1.2b of 2023/07/01.
|
||||
%%
|
||||
%% This file has been provided to Doxygen team courtesy of the
|
||||
%% author for benefit of users having a LaTeX installation not
|
||||
%% yet providing version 1.2a or later of etoc, whose
|
||||
%% deeplevels feature is required.
|
||||
%%
|
||||
%% The original source etoc.dtx (only of the latest version at
|
||||
%% any given time) is available at
|
||||
%%
|
||||
%% https://ctan.org/pkg/etoc
|
||||
%%
|
||||
%% and contains the terms for copying and modification as well
|
||||
%% as author contact information.
|
||||
%%
|
||||
%% In brief any modified versions of this file must be renamed
|
||||
%% with new filenames distinct from etoc.sty.
|
||||
%%
|
||||
%% Package: etoc
|
||||
%% Version: 1.2b
|
||||
%% License: LPPL 1.3c
|
||||
%% Copyright (C) 2012-2023 Jean-Francois B. <user jfbu at github>
|
||||
\NeedsTeXFormat{LaTeX2e}[2003/12/01]
|
||||
\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)]
|
||||
\newif\ifEtoc@oldLaTeX
|
||||
\@ifl@t@r\fmtversion{2020/10/01}
|
||||
{}
|
||||
{\Etoc@oldLaTeXtrue
|
||||
\PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak
|
||||
Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak
|
||||
as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak
|
||||
and used to require it (from 1.1a to 1.2).\MessageBreak
|
||||
This etoc (1.2b) does not *require* it, but has not been\MessageBreak
|
||||
tested thoroughly on old LaTeX (especially if document\MessageBreak
|
||||
does not use hyperref) and retrofitting was done only\MessageBreak
|
||||
on basis of author partial remembrances of old context.\MessageBreak
|
||||
Reported}}
|
||||
\RequirePackage{kvoptions}
|
||||
\SetupKeyvalOptions{prefix=Etoc@}
|
||||
\newif\ifEtoc@lof
|
||||
\DeclareVoidOption{lof}{\Etoc@loftrue
|
||||
\PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak
|
||||
Barely tested, use at own risk}%
|
||||
}
|
||||
\newif\ifEtoc@lot
|
||||
\DeclareVoidOption{lot}{\Etoc@lottrue
|
||||
\PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak
|
||||
Barely tested, use at own risk}%
|
||||
}
|
||||
\@ifclassloaded{memoir}{
|
||||
\PackageInfo{etoc}
|
||||
{As this is with memoir class, all `...totoc' options\MessageBreak
|
||||
are set true by default. Reported}
|
||||
\DeclareBoolOption[true]{maintoctotoc}
|
||||
\DeclareBoolOption[true]{localtoctotoc}
|
||||
\DeclareBoolOption[true]{localloftotoc}
|
||||
\DeclareBoolOption[true]{locallottotoc}
|
||||
}{
|
||||
\DeclareBoolOption[false]{maintoctotoc}
|
||||
\DeclareBoolOption[false]{localtoctotoc}
|
||||
\DeclareBoolOption[false]{localloftotoc}
|
||||
\DeclareBoolOption[false]{locallottotoc}
|
||||
}
|
||||
\DeclareBoolOption[true]{ouroboros}
|
||||
\DeclareBoolOption[false]{deeplevels}
|
||||
\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}}
|
||||
\ProcessKeyvalOptions*
|
||||
\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof}
|
||||
\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot}
|
||||
\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels}
|
||||
\def\etocsetup#1{\setkeys{etoc}{#1}}
|
||||
\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc
|
||||
\expandafter\@firstoftwo
|
||||
\else
|
||||
\expandafter\@secondoftwo
|
||||
\fi}
|
||||
\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc
|
||||
\expandafter\@firstoftwo
|
||||
\else
|
||||
\expandafter\@secondoftwo
|
||||
\fi}
|
||||
\def\etociflocalloftotoc{\ifEtoc@localloftotoc
|
||||
\expandafter\@firstoftwo
|
||||
\else
|
||||
\expandafter\@secondoftwo
|
||||
\fi}
|
||||
\def\etociflocallottotoc{\ifEtoc@locallottotoc
|
||||
\expandafter\@firstoftwo
|
||||
\else
|
||||
\expandafter\@secondoftwo
|
||||
\fi}
|
||||
\RequirePackage{multicol}
|
||||
\def\etoc@{\etoc@}
|
||||
\long\def\Etoc@gobtoetoc@ #1\etoc@{}
|
||||
\newtoks\Etoc@toctoks
|
||||
\def\Etoc@par{\par}
|
||||
\def\etocinline{\def\Etoc@par{}}
|
||||
\let\etocnopar\etocinline
|
||||
\def\etocdisplay{\def\Etoc@par{\par}}
|
||||
\let\Etoc@global\@empty
|
||||
\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global}
|
||||
\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty}
|
||||
\newif\ifEtoc@numbered
|
||||
\newif\ifEtoc@hyperref
|
||||
\newif\ifEtoc@parskip
|
||||
\newif\ifEtoc@tocwithid
|
||||
\newif\ifEtoc@standardlines
|
||||
\newif\ifEtoc@etocstyle
|
||||
\newif\ifEtoc@classstyle
|
||||
\newif\ifEtoc@keeporiginaltoc
|
||||
\newif\ifEtoc@skipprefix
|
||||
\newif\ifEtoc@isfirst
|
||||
\newif\ifEtoc@localtoc
|
||||
\newif\ifEtoc@skipthisone
|
||||
\newif\ifEtoc@stoptoc
|
||||
\newif\ifEtoc@notactive
|
||||
\newif\ifEtoc@mustclosegroup
|
||||
\newif\ifEtoc@isemptytoc
|
||||
\newif\ifEtoc@checksemptiness
|
||||
\def\etocchecksemptiness {\Etoc@checksemptinesstrue }
|
||||
\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse }
|
||||
\newif\ifEtoc@notocifnotoc
|
||||
\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue }
|
||||
\newcounter{etoc@tocid}
|
||||
\def\Etoc@tocext{toc}
|
||||
\def\Etoc@lofext{lof}
|
||||
\def\Etoc@lotext{lot}
|
||||
\let\Etoc@currext\Etoc@tocext
|
||||
\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else
|
||||
\expandafter\@secondoftwo\fi
|
||||
}
|
||||
\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext
|
||||
\expandafter\@firstoftwo\else
|
||||
\expandafter\@secondoftwo\fi}%
|
||||
{\@secondoftwo}%
|
||||
}
|
||||
\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext
|
||||
\expandafter\@firstoftwo\else
|
||||
\expandafter\@secondoftwo\fi}%
|
||||
{\@secondoftwo}%
|
||||
}
|
||||
\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext
|
||||
\expandafter\@firstoftwo\else
|
||||
\expandafter\@secondoftwo\fi}%
|
||||
{\@secondoftwo}%
|
||||
}
|
||||
\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@}
|
||||
\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@}
|
||||
\expandafter\let\csname Etoc@-1@@\endcsname \m@ne
|
||||
\expandafter\let\csname Etoc@0@@\endcsname \z@
|
||||
\expandafter\let\csname Etoc@1@@\endcsname \@ne
|
||||
\expandafter\let\csname Etoc@2@@\endcsname \tw@
|
||||
\expandafter\let\csname Etoc@3@@\endcsname \thr@@
|
||||
\expandafter\chardef\csname Etoc@4@@\endcsname 4
|
||||
\expandafter\chardef\csname Etoc@5@@\endcsname 5
|
||||
\expandafter\chardef\csname Etoc@6@@\endcsname 6
|
||||
\ifEtoc@deeplevels
|
||||
\expandafter\chardef\csname Etoc@7@@\endcsname 7
|
||||
\expandafter\chardef\csname Etoc@8@@\endcsname 8
|
||||
\expandafter\chardef\csname Etoc@9@@\endcsname 9
|
||||
\expandafter\chardef\csname Etoc@10@@\endcsname 10
|
||||
\expandafter\chardef\csname Etoc@11@@\endcsname 11
|
||||
\expandafter\chardef\csname Etoc@12@@\endcsname 12
|
||||
\fi
|
||||
\expandafter\let\expandafter\Etoc@maxlevel
|
||||
\csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname
|
||||
\edef\etocthemaxlevel{\number\Etoc@maxlevel}
|
||||
\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}}
|
||||
\let\Etoc@none@@ \Etoc@minf
|
||||
\expandafter\let\expandafter\Etoc@all@@
|
||||
\csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname
|
||||
\let\Etoc@dolevels\@empty
|
||||
\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter
|
||||
{\Etoc@dolevels\Etoc@do{#1}}}
|
||||
\ifdefined\expanded
|
||||
\def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}%
|
||||
\else
|
||||
\def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}%
|
||||
\fi
|
||||
\def\etoc@setlevel#1#2{%
|
||||
\edef\Etoc@tmp{\the\numexpr#2}%
|
||||
\if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1%
|
||||
\ifEtoc@deeplevels
|
||||
\in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,%
|
||||
.7,.8,.9,.10,.11,.12,}%
|
||||
\else
|
||||
\in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}%
|
||||
\fi
|
||||
\ifin@\else\if\@car#1\@nil @\in@true\fi\fi
|
||||
\ifin@
|
||||
\PackageWarning{etoc}
|
||||
{Sorry, but `#1' is forbidden as level name.\MessageBreak
|
||||
\if\@car#1\@nil @%
|
||||
(because of the @ as first character)\MessageBreak\fi
|
||||
Reported}%
|
||||
\else
|
||||
\etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
|
||||
\expandafter\let\csname Etoc@#1@@\expandafter\endcsname
|
||||
\csname Etoc@\Etoc@tmp @@\endcsname
|
||||
\expandafter\edef\csname Etoc@@#1@@\endcsname
|
||||
{\expandafter\noexpand\csname Etoc@#1@@\endcsname}%
|
||||
\expandafter\edef\csname toclevel@@#1\endcsname
|
||||
{\expandafter\noexpand\csname toclevel@#1\endcsname}%
|
||||
\fi
|
||||
\else
|
||||
\PackageWarning{etoc}
|
||||
{Argument `\detokenize{#2}' of \string\etocsetlevel\space should
|
||||
represent one of\MessageBreak
|
||||
\ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi,
|
||||
\the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space
|
||||
but evaluates to \Etoc@tmp.\MessageBreak
|
||||
The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak
|
||||
Tables of contents will ignore `#1' as long\MessageBreak
|
||||
as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).%
|
||||
\MessageBreak
|
||||
Reported}%
|
||||
\etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
|
||||
\expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel
|
||||
\fi
|
||||
}
|
||||
\def\etoclevel#1{\csname Etoc@#1@@\endcsname}
|
||||
\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname}
|
||||
\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}}
|
||||
\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{}
|
||||
\etocsetlevel{part}{-1}
|
||||
\etocsetlevel{chapter}{0}
|
||||
\etocsetlevel{section}{1}
|
||||
\etocsetlevel{subsection}{2}
|
||||
\etocsetlevel{subsubsection}{3}
|
||||
\etocsetlevel{paragraph}{4}
|
||||
\etocsetlevel{subparagraph}{5}
|
||||
\ifdefined\c@chapter
|
||||
\etocsetlevel{appendix}{0}
|
||||
\else
|
||||
\etocsetlevel{appendix}{1}
|
||||
\fi
|
||||
\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}}
|
||||
\Etoc@dolevels
|
||||
\let\Etoc@figure@@\Etoc@maxlevel
|
||||
\let\Etoc@table@@ \Etoc@maxlevel
|
||||
\let\Etoc@gobblethreeorfour\@gobblefour
|
||||
\ifdefined\@gobblethree
|
||||
\let\Etoc@gobblethree\@gobblethree
|
||||
\else
|
||||
\long\def\Etoc@gobblethree#1#2#3{}%
|
||||
\fi
|
||||
\AtBeginDocument{%
|
||||
\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}%
|
||||
\@ifpackageloaded{hyperref}
|
||||
{\Etoc@hyperreftrue}
|
||||
{\ifEtoc@oldLaTeX
|
||||
\let\Etoc@gobblethreeorfour\Etoc@gobblethree
|
||||
\let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@
|
||||
\long\def\Etoc@etoccontentsline@#1#2#3{%
|
||||
\Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}%
|
||||
}%
|
||||
\fi
|
||||
}%
|
||||
}
|
||||
\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue }
|
||||
\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}}
|
||||
\def\Etoc@stackofends{{-3}{}}
|
||||
\def\Etoc@doendsandbegin{%
|
||||
\expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@
|
||||
}
|
||||
\def\Etoc@traversestackofends#1{%
|
||||
\ifnum#1>\Etoc@level
|
||||
\csname Etoc@end@#1\endcsname
|
||||
\expandafter\Etoc@traversestackofends
|
||||
\else
|
||||
\Etoc@traversestackofends@done{#1}%
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@traversestackofends@done#1#2{#2%
|
||||
\ifnum#1<\Etoc@level
|
||||
\csname Etoc@begin@\the\numexpr\Etoc@level\endcsname
|
||||
\Etoc@global\Etoc@isfirsttrue
|
||||
\edef\Etoc@tmp{{\the\numexpr\Etoc@level}}%
|
||||
\else
|
||||
\Etoc@global\Etoc@isfirstfalse
|
||||
\let\Etoc@tmp\@empty
|
||||
\fi
|
||||
\expandafter\Etoc@updatestackofends\Etoc@tmp{#1}%
|
||||
}
|
||||
\def\Etoc@etoccontentsline #1{%
|
||||
\let\Etoc@next\Etoc@gobblethreeorfour
|
||||
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
|
||||
\else
|
||||
\Etoc@skipthisonefalse
|
||||
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
|
||||
\if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
|
||||
\ifEtoc@localtoc
|
||||
\ifEtoc@stoptoc
|
||||
\Etoc@skipthisonetrue
|
||||
\else
|
||||
\ifEtoc@notactive
|
||||
\Etoc@skipthisonetrue
|
||||
\else
|
||||
\unless\ifnum\Etoc@level>\etoclocaltop
|
||||
\Etoc@skipthisonetrue
|
||||
\global\Etoc@stoptoctrue
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\ifEtoc@skipthisone
|
||||
\else
|
||||
\unless\ifnum\Etoc@level>\c@tocdepth
|
||||
\ifEtoc@standardlines
|
||||
\let\Etoc@next\Etoc@savedcontentsline
|
||||
\else
|
||||
\let\Etoc@next\Etoc@etoccontentsline@
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@next{#1}%
|
||||
}
|
||||
\def\Etoc@etoccontentsline@ #1#2#3#4{%
|
||||
\Etoc@doendsandbegin
|
||||
\Etoc@global\edef\Etoc@prefix {\expandafter\noexpand
|
||||
\csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }%
|
||||
\Etoc@global\edef\Etoc@contents{\expandafter\noexpand
|
||||
\csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }%
|
||||
\ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi
|
||||
\global\Etoc@skipprefixfalse
|
||||
\Etoc@lxyz{#2}{#3}{#4}%
|
||||
\Etoc@prefix
|
||||
\Etoc@contents
|
||||
}
|
||||
\def\Etoc@lxyz #1#2#3{%
|
||||
\ifEtoc@hyperref
|
||||
\Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}%
|
||||
\else
|
||||
\Etoc@global\let\etocthelink\@firstofone
|
||||
\fi
|
||||
\Etoc@global\def\etocthepage {#2}%
|
||||
\ifEtoc@hyperref
|
||||
\ifx\etocthepage\@empty
|
||||
\Etoc@global\let\etocthelinkedpage\@empty
|
||||
\else
|
||||
\Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}%
|
||||
\fi
|
||||
\else
|
||||
\Etoc@global\let\etocthelinkedpage\etocthepage
|
||||
\fi
|
||||
\Etoc@global\def\etocthename{#1}%
|
||||
\futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@
|
||||
\ifEtoc@hyperref
|
||||
\def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}%
|
||||
\expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname
|
||||
\ifEtoc@numbered
|
||||
\expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber
|
||||
\else
|
||||
\Etoc@global\let\etocthelinkednumber\@empty
|
||||
\fi
|
||||
\else
|
||||
\Etoc@global\let\etocthelinkedname \etocthename
|
||||
\Etoc@global\let\etocthelinkednumber\etocthenumber
|
||||
\fi
|
||||
\Etoc@global\expandafter\let\csname etoclink \endcsname \etocthelink
|
||||
\Etoc@global\expandafter\let\csname etocname \endcsname \etocthename
|
||||
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber
|
||||
\Etoc@global\expandafter\let\csname etocpage \endcsname \etocthepage
|
||||
\ifEtoc@hyperref
|
||||
\Etoc@lxyz@linktoc
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@lxyz@linktoc{%
|
||||
\ifcase\Hy@linktoc
|
||||
\or
|
||||
\Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
|
||||
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
|
||||
\or % page
|
||||
\Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
|
||||
\else % all
|
||||
\Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
|
||||
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
|
||||
\Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@@getnb {%
|
||||
\let\Etoc@next\Etoc@getnb
|
||||
\ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi
|
||||
\ifx\Etoc@getnb@token\bgroup \let\Etoc@next\Etoc@getnb@nonbr\fi
|
||||
\Etoc@next
|
||||
}
|
||||
\def\Etoc@getnb #1{%
|
||||
\in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}%
|
||||
\ifin@
|
||||
\let\Etoc@next\Etoc@getnb@nmbrd
|
||||
\else
|
||||
\ifnum\Etoc@level=\m@ne
|
||||
\let\Etoc@next\Etoc@@getit
|
||||
\else
|
||||
\let\Etoc@next\Etoc@getnb@nonbr
|
||||
\fi
|
||||
\in@{#1}{\nonumberline}%
|
||||
\ifin@
|
||||
\let\Etoc@next\Etoc@getnb@nonumberline
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@next #1%
|
||||
}
|
||||
\def\Etoc@getnb@nmbrd #1#2{%
|
||||
\Etoc@global\Etoc@numberedtrue
|
||||
\Etoc@global\def\etocthenumber {#2}%
|
||||
\Etoc@getnb@nmbrd@getname\@empty
|
||||
}%
|
||||
\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {%
|
||||
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
|
||||
}
|
||||
\def\Etoc@getnb@nonbr #1\etoc@ {%
|
||||
\Etoc@global\Etoc@numberedfalse
|
||||
\Etoc@global\let\etocthenumber \@empty
|
||||
}
|
||||
\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {%
|
||||
\Etoc@global\Etoc@numberedfalse
|
||||
\Etoc@global\let\etocthenumber \@empty
|
||||
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}%
|
||||
}
|
||||
\def\Etoc@@getit #1\hspace#2{%
|
||||
\ifx\etoc@#2%
|
||||
\Etoc@global\Etoc@numberedfalse
|
||||
\Etoc@global\let\etocthenumber \@empty
|
||||
\else
|
||||
\Etoc@global\Etoc@numberedtrue
|
||||
\Etoc@global\def\etocthenumber {#1}%
|
||||
\expandafter\Etoc@getit@getname \expandafter\@empty
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@getit@getname #1\hspace\etoc@ {%
|
||||
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
|
||||
}
|
||||
\let\etocthename \@empty
|
||||
\let\etocthenumber \@empty
|
||||
\let\etocthepage \@empty
|
||||
\let\etocthelinkedname \@empty
|
||||
\let\etocthelinkednumber \@empty
|
||||
\let\etocthelinkedpage \@empty
|
||||
\let\etocthelink \@firstofone
|
||||
\DeclareRobustCommand*{\etocname} {}
|
||||
\DeclareRobustCommand*{\etocnumber}{}
|
||||
\DeclareRobustCommand*{\etocpage} {}
|
||||
\DeclareRobustCommand*{\etoclink} {\@firstofone}
|
||||
\DeclareRobustCommand*{\etocifnumbered}
|
||||
{\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
|
||||
\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname
|
||||
\DeclareRobustCommand*{\etociffirst}
|
||||
{\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
|
||||
\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname
|
||||
\def\Etoc@readtoc {%
|
||||
\ifeof \Etoc@tf
|
||||
\else
|
||||
\read \Etoc@tf to \Etoc@buffer
|
||||
\Etoc@toctoks=\expandafter\expandafter\expandafter
|
||||
{\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}%
|
||||
\expandafter\Etoc@readtoc
|
||||
\fi
|
||||
}
|
||||
\Etoc@toctoks {}% (superfluous, but for clarity)
|
||||
\AtBeginDocument{\IfFileExists{\jobname.toc}
|
||||
{{\endlinechar=\m@ne
|
||||
\makeatletter
|
||||
\newread\Etoc@tf
|
||||
\openin\Etoc@tf\@filef@und
|
||||
\Etoc@readtoc
|
||||
\global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}%
|
||||
\closein\Etoc@tf}}
|
||||
{\typeout{No file \jobname.toc.}}}
|
||||
\def\Etoc@openouttoc{%
|
||||
\ifEtoc@hyperref
|
||||
\ifx\hyper@last\@undefined
|
||||
\IfFileExists{\jobname .toc}
|
||||
{\Hy@WarningNoLine
|
||||
{old toc file detected; run LaTeX again (cheers from `etoc')}%
|
||||
\global\Etoc@toctoks={}%
|
||||
}
|
||||
{}%
|
||||
\fi
|
||||
\fi
|
||||
\if@filesw
|
||||
\newwrite \tf@toc
|
||||
\immediate \openout \tf@toc \jobname .toc\relax
|
||||
\fi
|
||||
\global\let\Etoc@openouttoc\empty
|
||||
}
|
||||
\def\Etoc@toctoc{%
|
||||
\gdef\Etoc@stackofends{{-3}{}}%
|
||||
\global\let\Etoc@level\Etoc@minf
|
||||
\global\let\Etoc@virtualtop\Etoc@minf
|
||||
\the\Etoc@toctoks
|
||||
\ifEtoc@notactive
|
||||
\else
|
||||
\gdef\Etoc@level{-\thr@@}%
|
||||
\Etoc@doendsandbegin
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@@startlocaltoc#1#2{%
|
||||
\ifEtoc@localtoc
|
||||
\ifnum #1=#2\relax
|
||||
\global\let\etoclocaltop\Etoc@virtualtop
|
||||
\Etoc@@startlocaltochook
|
||||
\etoclocaltableofcontentshook
|
||||
\ifEtoc@etocstyle
|
||||
\etocetoclocaltocmaketitle
|
||||
\fi
|
||||
\ifx\Etoc@aftertitlehook\@empty
|
||||
\else
|
||||
\ifEtoc@localtoctotoc
|
||||
\ifEtoc@ouroboros
|
||||
\else
|
||||
\let\Etoc@tmp\contentsline
|
||||
\def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}%
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\global\Etoc@notactivefalse
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\let\etoc@startlocaltoc\@gobble
|
||||
\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc
|
||||
\let\Etoc@@startlocaltochook\@empty
|
||||
\unless\ifEtoc@deeplevels
|
||||
\def\etocdivisionnameatlevel#1{%
|
||||
\ifcase\numexpr#1\relax
|
||||
\ifdefined\c@chapter chapter\else section\fi%
|
||||
\or section%
|
||||
\or subsection%
|
||||
\or subsubsection%
|
||||
\or paragraph%
|
||||
\or subparagraph%
|
||||
\or empty%
|
||||
\else\ifnum\numexpr#1<\m@ne
|
||||
book%
|
||||
\else
|
||||
part%
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\else
|
||||
\def\etocdivisionnameatlevel#1{%
|
||||
\ifcase\numexpr#1\relax
|
||||
\ifdefined\c@chapter chapter\else section\fi%
|
||||
\or section%
|
||||
\or subsection%
|
||||
\or subsubsection%
|
||||
\or subsubsubsection%
|
||||
\or subsubsubsubsection%
|
||||
\or subsubsubsubsubsection%
|
||||
\or subsubsubsubsubsubsection%
|
||||
\or paragraph%
|
||||
\or subparagraph%
|
||||
\else\ifnum\numexpr#1>\z@
|
||||
empty%
|
||||
\else\ifnum\numexpr#1=\m@ne
|
||||
part%
|
||||
\else
|
||||
book%
|
||||
\fi\fi
|
||||
\fi
|
||||
}
|
||||
\fi
|
||||
\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}}
|
||||
\def\etocglobalheadtotoc{\addcontentsline{toc}}
|
||||
\providecommand*\UseName{\@nameuse}
|
||||
\def\etocetoclocaltocmaketitle{%
|
||||
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}%
|
||||
\if@noskipsec\leavevmode\par\fi
|
||||
\etociflocaltoctotoc
|
||||
{\etocifisstarred
|
||||
{}% star variant, do not add to toc
|
||||
{\etoclocalheadtotoc
|
||||
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
|
||||
{\localcontentsname}%
|
||||
}%
|
||||
}%
|
||||
{}%
|
||||
}%
|
||||
\def\localcontentsname {\contentsname}%
|
||||
\let\etoclocaltableofcontentshook\@empty
|
||||
\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1%
|
||||
\else
|
||||
\AtBeginDocument{%
|
||||
\let\Etoc@originaladdcontentsline\addcontentsline
|
||||
\def\addcontentsline{\Etoc@hackedaddcontentsline}%
|
||||
}%
|
||||
\fi
|
||||
\ifEtoc@lof
|
||||
\ifEtoc@lot
|
||||
\def\Etoc@hackedaddcontentsline#1{%
|
||||
\expanded{\noexpand\in@{.#1,}}{.lof,.lot,}%
|
||||
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
|
||||
\else\expandafter\Etoc@originaladdcontentsline
|
||||
\fi {#1}}
|
||||
\else
|
||||
\def\Etoc@hackedaddcontentsline#1{%
|
||||
\expanded{\noexpand\in@{.#1,}}{.lof,}%
|
||||
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
|
||||
\else\expandafter\Etoc@originaladdcontentsline
|
||||
\fi {#1}}
|
||||
\fi
|
||||
\else
|
||||
\def\Etoc@hackedaddcontentsline#1{%
|
||||
\expanded{\noexpand\in@{.#1,}}{.lot,}%
|
||||
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
|
||||
\else\expandafter\Etoc@originaladdcontentsline
|
||||
\fi {#1}}
|
||||
\fi
|
||||
\def\Etoc@hackedaddcontentsline@i#1#2#3{%
|
||||
\expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}%
|
||||
\ifin@
|
||||
\addtocontents {toc}{%
|
||||
\protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
|
||||
\ifdefined\protected@file@percent\protected@file@percent\fi
|
||||
}%
|
||||
\fi
|
||||
\Etoc@originaladdcontentsline{#1}{#2}{#3}%
|
||||
}
|
||||
\unless\ifdefined\expanded
|
||||
\def\Etoc@hackedaddcontentsline#1{%
|
||||
{\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}%
|
||||
\Etoc@tmp
|
||||
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
|
||||
\else\expandafter\Etoc@originaladdcontentsline
|
||||
\fi {#1}%
|
||||
}
|
||||
\def\Etoc@hackedaddcontentsline@i#1#2#3{%
|
||||
{\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}%
|
||||
\Etoc@tmp{.lof;figure,.lot;table,}%
|
||||
\ifin@
|
||||
\addtocontents {toc}{%
|
||||
\protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
|
||||
\ifdefined\protected@file@percent\protected@file@percent\fi
|
||||
}%
|
||||
\fi
|
||||
\Etoc@originaladdcontentsline{#1}{#2}{#3}%
|
||||
}
|
||||
\fi
|
||||
\def\Etoc@@startlocallistof#1#2#3{%
|
||||
\ifEtoc@localtoc
|
||||
\ifnum #2=#3\relax
|
||||
\global\let\etoclocaltop\Etoc@virtualtop
|
||||
\global\Etoc@notactivefalse
|
||||
\Etoc@@startlocaltochook
|
||||
\csname etoclocallistof#1shook\endcsname
|
||||
\ifEtoc@etocstyle
|
||||
\csname etocetoclistof#1smaketitle\endcsname
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\def\Etoc@@startlocallistof@setlevels#1{%
|
||||
\ifnum\etoclocaltop<\z@
|
||||
\expandafter\let\csname Etoc@#1@@\endcsname\@ne
|
||||
\else
|
||||
\expandafter\let\csname Etoc@#1@@\expandafter\endcsname
|
||||
\csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname
|
||||
\fi
|
||||
\def\Etoc@do##1{%
|
||||
\ifnum\etoclevel{##1}>\etoclocaltop
|
||||
\expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel
|
||||
\fi}%
|
||||
\Etoc@dolevels
|
||||
}
|
||||
\def\etoclocallistoffigureshook{\etocstandardlines}
|
||||
\def\etoclocallistoftableshook {\etocstandardlines}
|
||||
\def\locallistfigurename{\listfigurename}
|
||||
\def\locallisttablename {\listtablename}
|
||||
\def\etocetoclistoffiguresmaketitle{%
|
||||
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}%
|
||||
\ifnum\etoclocaltop>\tw@\mbox{}\par\fi
|
||||
\etociflocalloftotoc
|
||||
{\etocifisstarred
|
||||
{}% star variant, do not add to toc
|
||||
{\etoclocalheadtotoc
|
||||
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
|
||||
{\locallistfigurename}%
|
||||
}%
|
||||
}%
|
||||
{}%
|
||||
}%
|
||||
\def\etocetoclistoftablesmaketitle{%
|
||||
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}%
|
||||
\ifnum\etoclocaltop>\tw@\mbox{}\par\fi
|
||||
\etociflocallottotoc
|
||||
{\etocifisstarred
|
||||
{}% star variant, do not add to toc
|
||||
{\etoclocalheadtotoc
|
||||
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
|
||||
{\locallisttablename}%
|
||||
}%
|
||||
}%
|
||||
{}%
|
||||
}%
|
||||
\let\Etoc@listofreset\@empty
|
||||
\ifEtoc@lof
|
||||
\def\locallistoffigures{%
|
||||
\def\Etoc@listofreset{%
|
||||
\let\Etoc@currext\Etoc@tocext
|
||||
\let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
|
||||
\let\Etoc@@startlocaltochook\@empty
|
||||
\let\Etoc@listofreset\@empty
|
||||
\let\Etoc@listofhook\@empty
|
||||
}%
|
||||
\let\Etoc@currext\Etoc@lofext
|
||||
\def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}%
|
||||
\def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}%
|
||||
\def\Etoc@listofhook{%
|
||||
\def\Etoc@do####1{%
|
||||
\expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
|
||||
}%
|
||||
\Etoc@dolevels
|
||||
}%
|
||||
\localtableofcontents
|
||||
}
|
||||
\else
|
||||
\def\locallistoffigures{%
|
||||
\PackageError{etoc}{%
|
||||
\string\locallistoffigures \on@line\space but\MessageBreak
|
||||
package was loaded without `lof' option}%
|
||||
{Try again with \string\usepackage[lof]{etoc}}%
|
||||
}
|
||||
\fi
|
||||
\ifEtoc@lot
|
||||
\def\locallistoftables{%
|
||||
\def\Etoc@listofreset{%
|
||||
\let\Etoc@currext\Etoc@tocext
|
||||
\let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
|
||||
\let\Etoc@@startlocaltochook\@empty
|
||||
\let\Etoc@listofreset\@empty
|
||||
\let\Etoc@listofhook\@empty
|
||||
}%
|
||||
\let\Etoc@currext\Etoc@lotext
|
||||
\def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}%
|
||||
\def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}%
|
||||
\def\Etoc@listofhook{%
|
||||
\def\Etoc@do####1{%
|
||||
\expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
|
||||
}%
|
||||
\Etoc@dolevels
|
||||
}%
|
||||
\localtableofcontents
|
||||
}
|
||||
\else
|
||||
\def\locallistoftables{%
|
||||
\PackageError{etoc}{%
|
||||
\string\locallistoftable \on@line\space but\MessageBreak
|
||||
package was loaded without `lot' option}%
|
||||
{Try again with \string\usepackage[lot]{etoc}}%
|
||||
}
|
||||
\fi
|
||||
\def\Etoc@checkifempty {%
|
||||
\global\Etoc@isemptytoctrue
|
||||
\global\Etoc@stoptocfalse
|
||||
\global\let\Etoc@level\Etoc@minf
|
||||
\global\let\Etoc@virtualtop\Etoc@minf
|
||||
\gdef\Etoc@stackofends{{-3}{}}%
|
||||
\begingroup
|
||||
\ifEtoc@localtoc
|
||||
\def\etoc@startlocaltoc##1{%
|
||||
\ifnum##1=\Etoc@tocid\relax
|
||||
\global\let\etoclocaltop\Etoc@virtualtop
|
||||
\Etoc@@startlocaltochook
|
||||
\global\Etoc@notactivefalse
|
||||
\fi
|
||||
}%
|
||||
\let\contentsline\Etoc@testingcontentslinelocal
|
||||
\else
|
||||
\let\contentsline\Etoc@testingcontentsline
|
||||
\fi
|
||||
\Etoc@storetocdepth
|
||||
\let\Etoc@setlocaltop@doendsandbegin\@empty
|
||||
\the\Etoc@toctoks
|
||||
\Etoc@restoretocdepth
|
||||
\endgroup
|
||||
}
|
||||
\DeclareRobustCommand*\etocifwasempty
|
||||
{\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi }
|
||||
\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname
|
||||
\def\Etoc@testingcontentslinelocal #1{%
|
||||
\ifEtoc@stoptoc
|
||||
\else
|
||||
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
|
||||
\else
|
||||
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
|
||||
\if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
|
||||
\ifEtoc@notactive
|
||||
\else
|
||||
\ifnum\Etoc@level>\etoclocaltop
|
||||
\unless\ifnum\Etoc@level>\c@tocdepth
|
||||
\global\Etoc@isemptytocfalse
|
||||
\global\Etoc@stoptoctrue
|
||||
\fi
|
||||
\else
|
||||
\global\Etoc@stoptoctrue
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@gobblethreeorfour{}%
|
||||
}
|
||||
\def\Etoc@testingcontentsline #1{%
|
||||
\ifEtoc@stoptoc
|
||||
\else
|
||||
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
|
||||
\else
|
||||
\unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth
|
||||
\global\Etoc@isemptytocfalse
|
||||
\global\Etoc@stoptoctrue
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@gobblethreeorfour{}%
|
||||
}
|
||||
\def\Etoc@localtableofcontents#1{%
|
||||
\gdef\etoclocaltop{-\@m}%
|
||||
\Etoc@localtoctrue
|
||||
\global\Etoc@isemptytocfalse
|
||||
\edef\Etoc@tocid{#1}%
|
||||
\ifnum\Etoc@tocid<\@ne
|
||||
\setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}%
|
||||
\global\Etoc@stoptoctrue
|
||||
\gdef\etoclocaltop{-\thr@@}%
|
||||
\Etoc@tableofcontents
|
||||
\expandafter\Etoc@gobtoetoc@
|
||||
\fi
|
||||
\global\Etoc@notactivetrue
|
||||
\ifEtoc@checksemptiness
|
||||
\Etoc@checkifempty
|
||||
\fi
|
||||
\ifEtoc@isemptytoc
|
||||
\ifEtoc@notactive
|
||||
\setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}%
|
||||
\global\Etoc@isemptytocfalse
|
||||
\global\Etoc@stoptoctrue
|
||||
\gdef\etoclocaltop{-\thr@@}%
|
||||
\Etoc@tableofcontents
|
||||
\expandafter\expandafter\expandafter\Etoc@gobtoetoc@
|
||||
\fi
|
||||
\else
|
||||
\global\Etoc@stoptocfalse
|
||||
\global\Etoc@notactivetrue
|
||||
\edef\etoc@startlocaltoc##1%
|
||||
{\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}%
|
||||
\Etoc@tableofcontents
|
||||
\fi
|
||||
\@gobble\etoc@
|
||||
\endgroup\ifEtoc@mustclosegroup\endgroup\fi
|
||||
\Etoc@tocdepthreset
|
||||
\Etoc@listofreset
|
||||
\etocaftertochook
|
||||
}% \Etoc@localtableofcontents
|
||||
\def\Etoc@getref #1{%
|
||||
\@ifundefined{r@#1}
|
||||
{0}
|
||||
{\expandafter\Etoc@getref@i\romannumeral-`0%
|
||||
\expandafter\expandafter\expandafter
|
||||
\@car\csname r@#1\endcsname0\@nil\@etoc
|
||||
}%
|
||||
}
|
||||
\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi}
|
||||
\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}}
|
||||
\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
|
||||
\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
|
||||
\def\Etoc@dothis #1#2\etoc@ {\fi #1}
|
||||
\def\Etoc@t@bleofcontents{%
|
||||
\gdef\etoclocaltop{-\@M}%
|
||||
\ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi
|
||||
\ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi
|
||||
\ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi
|
||||
\ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi
|
||||
\global\Etoc@isemptytocfalse
|
||||
\ifEtoc@checksemptiness\Etoc@checkifempty\fi
|
||||
\ifEtoc@isemptytoc
|
||||
\ifEtoc@notocifnotoc
|
||||
\expandafter\expandafter\expandafter\@gobble
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@tableofcontents
|
||||
\endgroup
|
||||
\ifEtoc@mustclosegroup\endgroup\fi
|
||||
\Etoc@tocdepthreset
|
||||
\Etoc@listofreset
|
||||
\etocaftertochook
|
||||
\@gobble\etoc@
|
||||
}% \Etoc@t@bleofcontents
|
||||
\def\Etoc@table@fcontents{%
|
||||
\refstepcounter{etoc@tocid}%
|
||||
\Etoc@tocwithidfalse
|
||||
\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
|
||||
}
|
||||
\def\Etoc@localtable@fcontents{%
|
||||
\refstepcounter{etoc@tocid}%
|
||||
\addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}%
|
||||
\Etoc@tocwithidtrue
|
||||
\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
|
||||
}
|
||||
\def\etoctableofcontents{%
|
||||
\Etoc@openouttoc
|
||||
\Etoc@tocdepthset
|
||||
\begingroup
|
||||
\@ifstar
|
||||
{\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents}
|
||||
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}%
|
||||
}% \etoctableofcontents
|
||||
\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty
|
||||
\expandafter\@firstoftwo\else
|
||||
\expandafter\@secondoftwo
|
||||
\fi}
|
||||
\let\etocoriginaltableofcontents\tableofcontents
|
||||
\let\tableofcontents\etoctableofcontents
|
||||
\let\Etoc@listofhook\@empty
|
||||
\newcommand*\localtableofcontents{%
|
||||
\Etoc@openouttoc
|
||||
\Etoc@tocdepthset
|
||||
\begingroup
|
||||
\Etoc@listofhook
|
||||
\@ifstar
|
||||
{\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents}
|
||||
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}%
|
||||
}% \localtableofcontents
|
||||
\newcommand*\localtableofcontentswithrelativedepth[1]{%
|
||||
\def\Etoc@@startlocaltochook{%
|
||||
\global\c@tocdepth\numexpr\etoclocaltop+#1\relax
|
||||
}%
|
||||
\def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty
|
||||
\let\Etoc@listofreset\@empty}%
|
||||
\localtableofcontents
|
||||
}% \localtableofcontentswithrelativedepth
|
||||
\newcommand\etocsettocstyle[2]{%
|
||||
\Etoc@etocstylefalse
|
||||
\Etoc@classstylefalse
|
||||
\def\Etoc@tableofcontents@user@before{#1}%
|
||||
\def\Etoc@tableofcontents@user@after {#2}%
|
||||
}%
|
||||
\def\etocstoretocstyleinto#1{%
|
||||
%% \@ifdefinable#1{%
|
||||
\edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse
|
||||
\def\noexpand\Etoc@tableofcontents@user@before{%
|
||||
\unexpanded\expandafter{\Etoc@tableofcontents@user@before}%
|
||||
}%
|
||||
\def\noexpand\Etoc@tableofcontents@user@after{%
|
||||
\unexpanded\expandafter{\Etoc@tableofcontents@user@after}%
|
||||
}%
|
||||
}%
|
||||
%% }%
|
||||
}%
|
||||
\def\Etoc@tableofcontents {%
|
||||
\Etoc@tableofcontents@etoc@before
|
||||
\ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
|
||||
\Etoc@tableofcontents@user@before
|
||||
\Etoc@tableofcontents@contents
|
||||
\ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
|
||||
\Etoc@tableofcontents@user@after
|
||||
\Etoc@tableofcontents@etoc@after
|
||||
\@gobble\etoc@
|
||||
}
|
||||
\def\Etoc@tableofcontents@etoc@before{%
|
||||
\ifnum\c@tocdepth>\Etoc@minf
|
||||
\else
|
||||
\expandafter\Etoc@gobtoetoc@
|
||||
\fi
|
||||
\Etoc@par
|
||||
\Etoc@beforetitlehook
|
||||
\etocbeforetitlehook
|
||||
\Etoc@storetocdepth
|
||||
\let\Etoc@savedcontentsline\contentsline
|
||||
\let\contentsline\Etoc@etoccontentsline
|
||||
\ifEtoc@standardlines
|
||||
\else
|
||||
\def\Etoc@do##1{%
|
||||
\expandafter\def\csname etocsaved##1tocline\endcsname
|
||||
{\PackageError{etoc}{%
|
||||
\expandafter\string\csname etocsaved##1tocline\endcsname\space
|
||||
has been deprecated\MessageBreak
|
||||
at 1.1a and is removed at 1.2.\MessageBreak
|
||||
Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak
|
||||
Reported \on@line}%
|
||||
{I will use \expandafter\string
|
||||
\csname l@##1\endcsname\space myself for this time.%
|
||||
}%
|
||||
\csname l@##1\endcsname
|
||||
}%
|
||||
}%
|
||||
\Etoc@dolevels
|
||||
\fi
|
||||
}%
|
||||
\def\Etoc@tableofcontents@contents{%
|
||||
\Etoc@tocdepthset
|
||||
\ifEtoc@parskip\parskip\z@skip\fi
|
||||
\Etoc@aftertitlehook
|
||||
\gdef\etoclocaltop{-\thr@@}%
|
||||
\Etoc@toctoc
|
||||
\etocaftercontentshook
|
||||
}%
|
||||
\def\Etoc@tableofcontents@etoc@after{%
|
||||
\@nobreakfalse
|
||||
\Etoc@restoretocdepth
|
||||
\ifx\Etoc@global\global
|
||||
\@ifundefined{tof@finish}
|
||||
{}
|
||||
{\ifx\tof@finish\@empty
|
||||
\else
|
||||
\global\let\contentsline\Etoc@savedcontentsline
|
||||
\fi
|
||||
}%
|
||||
\fi
|
||||
}
|
||||
\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname
|
||||
\expandafter\Etoc@setstyle@a
|
||||
\else
|
||||
\expandafter\Etoc@setstyle@error
|
||||
\fi {#1}%
|
||||
}
|
||||
\def\Etoc@setstyle@error #1{%
|
||||
\PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak
|
||||
forget some \string\etocsetlevel{#1}{<level>}?\MessageBreak
|
||||
Reported}%
|
||||
\@gobblefour
|
||||
}
|
||||
\def\Etoc@setstyle@a #1{%
|
||||
\edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}%
|
||||
\if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi
|
||||
\unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1%
|
||||
\Etoc@standardlinesfalse
|
||||
\expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp
|
||||
\else
|
||||
\ifnum\Etoc@tmp=\Etoc@maxlevel
|
||||
\in@{.#1,}{.figure,.table,}%
|
||||
\ifin@
|
||||
\PackageWarning{etoc}
|
||||
{You can not use \string\etocsetstyle\space with `#1'.\MessageBreak
|
||||
Check the package documentation (in particular about\MessageBreak
|
||||
\string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)%
|
||||
\MessageBreak on how to customize
|
||||
figure and table entries in local\MessageBreak lists. Reported}%
|
||||
\else
|
||||
\PackageInfo{etoc}
|
||||
{Attempt to set the style of `#1',\MessageBreak
|
||||
whose level is currently the maximal one \etocthemaxlevel,\MessageBreak
|
||||
which is never displayed. \space This will be ignored\MessageBreak
|
||||
but note that we do quit compatibility mode.\MessageBreak
|
||||
Reported}%
|
||||
\Etoc@standardlinesfalse
|
||||
\fi
|
||||
\else
|
||||
\PackageWarning{etoc}{This should not happen. Reported}%
|
||||
\fi
|
||||
\expandafter\@gobblefour
|
||||
\fi
|
||||
}
|
||||
\long\def\Etoc@setstyle@b#1#2#3#4#5{%
|
||||
\expandafter\def\csname Etoc@begin@#1\endcsname {#2}%
|
||||
\expandafter\def\csname Etoc@prefix@#1\endcsname {#3}%
|
||||
\expandafter\def\csname Etoc@contents@#1\endcsname {#4}%
|
||||
\expandafter\def\csname Etoc@end@#1\endcsname {#5}%
|
||||
}
|
||||
\def\Etoc@setstyle@e#1{%
|
||||
\expandafter\let\csname Etoc@begin@#1\endcsname \@empty
|
||||
\expandafter\let\csname Etoc@prefix@#1\endcsname \@empty
|
||||
\expandafter\let\csname Etoc@contents@#1\endcsname \@empty
|
||||
\expandafter\let\csname Etoc@end@#1\endcsname \@empty
|
||||
}
|
||||
\def\Etoc@storelines@a#1{%
|
||||
\noexpand\Etoc@setstyle@b{#1}%
|
||||
{\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}%
|
||||
{\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}%
|
||||
{\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}%
|
||||
{\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}%
|
||||
}
|
||||
\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}}
|
||||
\def\etocstorelinestylesinto#1{%
|
||||
\edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}%
|
||||
\Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}%
|
||||
\Etoc@storelines@a {4}\Etoc@storelines@a {5}%
|
||||
\ifEtoc@deeplevels
|
||||
\Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}%
|
||||
\Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}%
|
||||
\fi
|
||||
}%
|
||||
}
|
||||
\def\etocstorethislinestyleinto#1#2{%
|
||||
\edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}%
|
||||
}%
|
||||
\def\etocfontminustwo {\normalfont \LARGE \bfseries}
|
||||
\def\etocfontminusone {\normalfont \large \bfseries}
|
||||
\def\etocfontzero {\normalfont \large \bfseries}
|
||||
\def\etocfontone {\normalfont \normalsize \bfseries}
|
||||
\def\etocfonttwo {\normalfont \normalsize}
|
||||
\def\etocfontthree {\normalfont \footnotesize}
|
||||
\def\etocsepminustwo {4ex \@plus .5ex \@minus .5ex}
|
||||
\def\etocsepminusone {4ex \@plus .5ex \@minus .5ex}
|
||||
\def\etocsepzero {2.5ex \@plus .4ex \@minus .4ex}
|
||||
\def\etocsepone {1.5ex \@plus .3ex \@minus .3ex}
|
||||
\def\etocseptwo {.5ex \@plus .1ex \@minus .1ex}
|
||||
\def\etocsepthree {.25ex \@plus .05ex \@minus .05ex}
|
||||
\def\etocbaselinespreadminustwo {1}
|
||||
\def\etocbaselinespreadminusone {1}
|
||||
\def\etocbaselinespreadzero {1}
|
||||
\def\etocbaselinespreadone {1}
|
||||
\def\etocbaselinespreadtwo {1}
|
||||
\def\etocbaselinespreadthree {.9}
|
||||
\def\etocminustwoleftmargin {1.5em plus 0.5fil}
|
||||
\def\etocminustworightmargin {1.5em plus -0.5fil}
|
||||
\def\etocminusoneleftmargin {1em}
|
||||
\def\etocminusonerightmargin {1em}
|
||||
\def\etoctoclineleaders
|
||||
{\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}}
|
||||
\def\etocabbrevpagename {p.~}
|
||||
\def\etocpartname {Part}
|
||||
\def\etocbookname {Book}
|
||||
\def\etocdefaultlines{%
|
||||
\Etoc@standardlinesfalse
|
||||
\etocdefaultlines@setbook
|
||||
\etocdefaultlines@setpart
|
||||
\etocdefaultlines@setchapter
|
||||
\etocdefaultlines@setsection
|
||||
\etocdefaultlines@setsubsection
|
||||
\etocdefaultlines@setsubsubsection
|
||||
\etocdefaultlines@setdeeperones
|
||||
}
|
||||
\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@}
|
||||
\@ifclassloaded{memoir}{%
|
||||
\def\etocdefaultlines@setbook{%
|
||||
\Etoc@setstyle@b
|
||||
{-2}%
|
||||
{\addpenalty\@M\etocskipfirstprefix}
|
||||
{\addpenalty\@secpenalty}
|
||||
{\begingroup
|
||||
\etocfontminustwo
|
||||
\addvspace{\etocsepminustwo}%
|
||||
\parindent \z@
|
||||
\leftskip \etocminustwoleftmargin
|
||||
\rightskip \etocminustworightmargin
|
||||
\parfillskip \@flushglue
|
||||
\vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}%
|
||||
\etocname
|
||||
\baselineskip\etocbaselinespreadminustwo\baselineskip
|
||||
\par}%
|
||||
\addpenalty\@M\addvspace{\etocsepminusone}%
|
||||
\endgroup}
|
||||
{}%
|
||||
}
|
||||
}{\let\etocdefaultlines@setbook\@empty}
|
||||
\def\etocdefaultlines@setpart{%
|
||||
\Etoc@setstyle@b
|
||||
{-1}%
|
||||
{\addpenalty\@M\etocskipfirstprefix}
|
||||
{\addpenalty\@secpenalty}
|
||||
{\begingroup
|
||||
\etocfontminusone
|
||||
\addvspace{\etocsepminusone}%
|
||||
\parindent \z@
|
||||
\leftskip \etocminusoneleftmargin
|
||||
\rightskip \etocminusonerightmargin
|
||||
\parfillskip \@flushglue
|
||||
\vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}%
|
||||
\etocname
|
||||
\baselineskip\etocbaselinespreadminusone\baselineskip
|
||||
\par}%
|
||||
\addpenalty\@M\addvspace{\etocsepzero}%
|
||||
\endgroup}
|
||||
{}%
|
||||
}
|
||||
\def\etocdefaultlines@setchapter{%
|
||||
\Etoc@setstyle@b
|
||||
{0}%
|
||||
{\addpenalty\@M\etocskipfirstprefix}
|
||||
{\addpenalty\@itempenalty}
|
||||
{\begingroup
|
||||
\etocfontzero
|
||||
\addvspace{\etocsepzero}%
|
||||
\parindent \z@ \parfillskip \@flushglue
|
||||
\vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname
|
||||
\baselineskip\etocbaselinespreadzero\baselineskip
|
||||
\par}%
|
||||
\endgroup}
|
||||
{\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}%
|
||||
}
|
||||
\def\etocdefaultlines@setsection{%
|
||||
\Etoc@setstyle@b
|
||||
{1}%
|
||||
{\addpenalty\@M\etocskipfirstprefix}
|
||||
{\addpenalty\@itempenalty}
|
||||
{\begingroup
|
||||
\etocfontone
|
||||
\addvspace{\etocsepone}%
|
||||
\parindent \z@ \parfillskip \z@
|
||||
\setbox\z@\vbox{\parfillskip\@flushglue
|
||||
\etocname\par
|
||||
\setbox\tw@\lastbox
|
||||
\global\setbox\@ne\hbox{\unhbox\tw@\ }}%
|
||||
\dimen\z@=\wd\@ne
|
||||
\setbox\z@=\etoctoclineleaders
|
||||
\advance\dimen\z@\wd\z@
|
||||
\etocifnumbered
|
||||
{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
|
||||
{\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
|
||||
\advance\dimen\z@\wd\tw@
|
||||
\ifdim\dimen\z@ < \linewidth
|
||||
\vbox{\etocname~%
|
||||
\leaders\box\z@\hfil\box\tw@
|
||||
\baselineskip\etocbaselinespreadone\baselineskip
|
||||
\par}%
|
||||
\else
|
||||
\vbox{\etocname~%
|
||||
\leaders\copy\z@\hfil\break
|
||||
\hbox{}\leaders\box\z@\hfil\box\tw@
|
||||
\baselineskip\etocbaselinespreadone\baselineskip
|
||||
\par}%
|
||||
\fi
|
||||
\endgroup}
|
||||
{\addpenalty\@secpenalty\addvspace{\etocsepzero}}%
|
||||
}
|
||||
\def\etocdefaultlines@setsubsection{%
|
||||
\Etoc@setstyle@b
|
||||
{2}%
|
||||
{\addpenalty\@medpenalty\etocskipfirstprefix}
|
||||
{\addpenalty\@itempenalty}
|
||||
{\begingroup
|
||||
\etocfonttwo
|
||||
\addvspace{\etocseptwo}%
|
||||
\parindent \z@ \parfillskip \z@
|
||||
\setbox\z@\vbox{\parfillskip\@flushglue
|
||||
\etocname\par\setbox\tw@\lastbox
|
||||
\global\setbox\@ne\hbox{\unhbox\tw@}}%
|
||||
\dimen\z@=\wd\@ne
|
||||
\setbox\z@=\etoctoclineleaders
|
||||
\advance\dimen\z@\wd\z@
|
||||
\etocifnumbered
|
||||
{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
|
||||
{\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
|
||||
\advance\dimen\z@\wd\tw@
|
||||
\ifdim\dimen\z@ < \linewidth
|
||||
\vbox{\etocname~%
|
||||
\leaders\box\z@\hfil\box\tw@
|
||||
\baselineskip\etocbaselinespreadtwo\baselineskip
|
||||
\par}%
|
||||
\else
|
||||
\vbox{\etocname~%
|
||||
\leaders\copy\z@\hfil\break
|
||||
\hbox{}\leaders\box\z@\hfil\box\tw@
|
||||
\baselineskip\etocbaselinespreadtwo\baselineskip
|
||||
\par}%
|
||||
\fi
|
||||
\endgroup}
|
||||
{\addpenalty\@secpenalty\addvspace{\etocsepone}}%
|
||||
}
|
||||
\def\etocdefaultlines@setsubsubsection{%
|
||||
\Etoc@setstyle@b
|
||||
{3}%
|
||||
{\addpenalty\@M
|
||||
\etocfontthree
|
||||
\vspace{\etocsepthree}%
|
||||
\noindent
|
||||
\etocskipfirstprefix}
|
||||
{\allowbreak\,--\,}
|
||||
{\etocname}
|
||||
{.\hfil
|
||||
\begingroup
|
||||
\baselineskip\etocbaselinespreadthree\baselineskip
|
||||
\par
|
||||
\endgroup
|
||||
\addpenalty{-\@highpenalty}}
|
||||
}
|
||||
\def\etocdefaultlines@setdeeperones{%
|
||||
\Etoc@setstyle@e{4}%
|
||||
\Etoc@setstyle@e{5}%
|
||||
\ifEtoc@deeplevels
|
||||
\Etoc@setstyle@e{6}%
|
||||
\Etoc@setstyle@e{7}%
|
||||
\Etoc@setstyle@e{8}%
|
||||
\Etoc@setstyle@e{9}%
|
||||
\Etoc@setstyle@e{10}%
|
||||
\Etoc@setstyle@e{11}%
|
||||
\fi
|
||||
}
|
||||
\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex}
|
||||
\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex}
|
||||
\def\etoccolumnsep{2em}
|
||||
\def\etocmulticolsep{0ex}
|
||||
\def\etocmulticolpretolerance{-1}
|
||||
\def\etocmulticoltolerance{200}
|
||||
\def\etocdefaultnbcol{2}
|
||||
\def\etocinnertopsep{2ex}
|
||||
\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{%
|
||||
\etocsettocstyle
|
||||
{\let\etocoldpar\par
|
||||
\addvspace{\etocabovetocskip}%
|
||||
\ifnum #1>\@ne
|
||||
\expandafter\@firstoftwo
|
||||
\else \expandafter\@secondoftwo
|
||||
\fi
|
||||
{\multicolpretolerance\etocmulticolpretolerance
|
||||
\multicoltolerance\etocmulticoltolerance
|
||||
\setlength{\columnsep}{\etoccolumnsep}%
|
||||
\setlength{\multicolsep}{\etocmulticolsep}%
|
||||
\begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]}
|
||||
{#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip
|
||||
\@@par\endgroup
|
||||
\fi
|
||||
\nobreak\addvspace{\etocinnertopsep}%
|
||||
\pretolerance\etocmulticolpretolerance
|
||||
\tolerance\etocmulticoltolerance}%
|
||||
}%
|
||||
{\ifnum #1>\@ne
|
||||
\expandafter\@firstofone
|
||||
\else \expandafter\@gobble
|
||||
\fi
|
||||
{\end{multicols}}%
|
||||
\addvspace{\etocbelowtocskip}}%
|
||||
}
|
||||
\def\etocinnerbottomsep{3.5ex}
|
||||
\def\etocinnerleftsep{2em}
|
||||
\def\etocinnerrightsep{2em}
|
||||
\def\etoctoprule{\hrule}
|
||||
\def\etocleftrule{\vrule}
|
||||
\def\etocrightrule{\vrule}
|
||||
\def\etocbottomrule{\hrule}
|
||||
\def\etoctoprulecolorcmd{\relax}
|
||||
\def\etocbottomrulecolorcmd{\relax}
|
||||
\def\etocleftrulecolorcmd{\relax}
|
||||
\def\etocrightrulecolorcmd{\relax}
|
||||
\def\etoc@ruledheading #1{%
|
||||
\hb@xt@\linewidth{\color@begingroup
|
||||
\hss #1\hss\hskip-\linewidth
|
||||
\etoctoprulecolorcmd\leaders\etoctoprule\hss
|
||||
\phantom{#1}%
|
||||
\leaders\etoctoprule\hss\color@endgroup}%
|
||||
\nointerlineskip\nobreak\vskip\etocinnertopsep}
|
||||
\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{%
|
||||
\etocsettocstyle
|
||||
{\addvspace{\etocabovetocskip}%
|
||||
\ifnum #1>\@ne
|
||||
\expandafter\@firstoftwo
|
||||
\else \expandafter\@secondoftwo
|
||||
\fi
|
||||
{\multicolpretolerance\etocmulticolpretolerance
|
||||
\multicoltolerance\etocmulticoltolerance
|
||||
\setlength{\columnsep}{\etoccolumnsep}%
|
||||
\setlength{\multicolsep}{\etocmulticolsep}%
|
||||
\begin{multicols}{#1}[\etoc@ruledheading{#2}]}
|
||||
{\etoc@ruledheading{#2}%
|
||||
\pretolerance\etocmulticolpretolerance
|
||||
\tolerance\etocmulticoltolerance}}
|
||||
{\ifnum #1>\@ne\expandafter\@firstofone
|
||||
\else \expandafter\@gobble
|
||||
\fi
|
||||
{\end{multicols}}%
|
||||
\addvspace{\etocbelowtocskip}}}
|
||||
\def\etocframedmphook{\relax}
|
||||
\long\def\etocbkgcolorcmd{\relax}
|
||||
\long\def\Etoc@relax{\relax}
|
||||
\newbox\etoc@framed@titlebox
|
||||
\newbox\etoc@framed@contentsbox
|
||||
\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{%
|
||||
\etocsettocstyle{%
|
||||
\addvspace{\etocabovetocskip}%
|
||||
\sbox\z@{#2}%
|
||||
\dimen\z@\dp\z@
|
||||
\ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi
|
||||
\setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup
|
||||
\hss
|
||||
\ifx\etocbkgcolorcmd\Etoc@relax
|
||||
\else
|
||||
\sbox\tw@{\color{white}%
|
||||
\vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}%
|
||||
\ifdim\wd\z@<\linewidth \dp\tw@\z@\fi
|
||||
\box\tw@
|
||||
\hskip-\wd\z@
|
||||
\fi
|
||||
\copy\z@
|
||||
\hss
|
||||
\hskip-\linewidth
|
||||
\etoctoprulecolorcmd\leaders\etoctoprule\hss
|
||||
\hskip\wd\z@
|
||||
\etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}%
|
||||
\setbox\z@\hbox{\etocleftrule\etocrightrule}%
|
||||
\dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@
|
||||
\advance\dimen\tw@-\etocinnerleftsep
|
||||
\advance\dimen\tw@-\etocinnerrightsep
|
||||
\setbox\etoc@framed@contentsbox=\vbox\bgroup
|
||||
\hsize\dimen\tw@
|
||||
\kern\dimen\z@
|
||||
\vskip\etocinnertopsep
|
||||
\hbox\bgroup
|
||||
\begin{minipage}{\hsize}%
|
||||
\etocframedmphook
|
||||
\ifnum #1>\@ne
|
||||
\expandafter\@firstoftwo
|
||||
\else \expandafter\@secondoftwo
|
||||
\fi
|
||||
{\multicolpretolerance\etocmulticolpretolerance
|
||||
\multicoltolerance\etocmulticoltolerance
|
||||
\setlength{\columnsep}{\etoccolumnsep}%
|
||||
\setlength{\multicolsep}{\etocmulticolsep}%
|
||||
\begin{multicols}{#1}}
|
||||
{\pretolerance\etocmulticolpretolerance
|
||||
\tolerance\etocmulticoltolerance}}
|
||||
{\ifnum #1>\@ne\expandafter\@firstofone
|
||||
\else \expandafter\@gobble
|
||||
\fi
|
||||
{\end{multicols}\unskip }%
|
||||
\end{minipage}%
|
||||
\egroup
|
||||
\vskip\etocinnerbottomsep
|
||||
\egroup
|
||||
\vbox{\hsize\linewidth
|
||||
\ifx\etocbkgcolorcmd\Etoc@relax
|
||||
\else
|
||||
\kern\ht\etoc@framed@titlebox
|
||||
\kern\dp\etoc@framed@titlebox
|
||||
\hb@xt@\linewidth{\color@begingroup
|
||||
\etocleftrulecolorcmd\etocleftrule
|
||||
\etocbkgcolorcmd
|
||||
\leaders\vrule
|
||||
\@height\ht\etoc@framed@contentsbox
|
||||
\@depth\dp\etoc@framed@contentsbox
|
||||
\hss
|
||||
\etocrightrulecolorcmd\etocrightrule
|
||||
\color@endgroup}\nointerlineskip
|
||||
\vskip-\dp\etoc@framed@contentsbox
|
||||
\vskip-\ht\etoc@framed@contentsbox
|
||||
\vskip-\dp\etoc@framed@titlebox
|
||||
\vskip-\ht\etoc@framed@titlebox
|
||||
\fi
|
||||
\box\etoc@framed@titlebox\nointerlineskip
|
||||
\hb@xt@\linewidth{\color@begingroup
|
||||
{\etocleftrulecolorcmd\etocleftrule}%
|
||||
\hss\box\etoc@framed@contentsbox\hss
|
||||
\etocrightrulecolorcmd\etocrightrule\color@endgroup}
|
||||
\nointerlineskip
|
||||
\vskip\ht\etoc@framed@contentsbox
|
||||
\vskip\dp\etoc@framed@contentsbox
|
||||
\hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd
|
||||
\leaders\etocbottomrule\hss\color@endgroup}}
|
||||
\addvspace{\etocbelowtocskip}}}
|
||||
\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{%
|
||||
\etocmulticolstyle[#1]{#2}%
|
||||
\tableofcontents}
|
||||
\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{%
|
||||
\etocmulticolstyle[#1]{#2}%
|
||||
\tableofcontents*}
|
||||
\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{%
|
||||
\etocmulticolstyle[#1]{#2}%
|
||||
\localtableofcontents}
|
||||
\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{%
|
||||
\etocmulticolstyle[#1]{#2}%
|
||||
\localtableofcontents*}
|
||||
\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{%
|
||||
\etocruledstyle[#1]{#2}%
|
||||
\tableofcontents}
|
||||
\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{%
|
||||
\etocruledstyle[#1]{#2}%
|
||||
\tableofcontents*}
|
||||
\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{%
|
||||
\etocruledstyle[#1]{#2}%
|
||||
\localtableofcontents}
|
||||
\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{%
|
||||
\etocruledstyle[#1]{#2}%
|
||||
\localtableofcontents*}
|
||||
\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{%
|
||||
\etocframedstyle[#1]{#2}%
|
||||
\tableofcontents}
|
||||
\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{%
|
||||
\etocframedstyle[#1]{#2}%
|
||||
\tableofcontents*}
|
||||
\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{%
|
||||
\etocframedstyle[#1]{#2}%
|
||||
\localtableofcontents}
|
||||
\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{%
|
||||
\etocframedstyle[#1]{#2}%
|
||||
\localtableofcontents*}
|
||||
\def\etocmulticol{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@multicoltoci}
|
||||
{\etoc@multicoltoc}}
|
||||
\def\etocruled{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@ruledtoci}
|
||||
{\etoc@ruledtoc}}
|
||||
\def\etocframed{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@framedtoci}
|
||||
{\etoc@framedtoc}}
|
||||
\def\etoclocalmulticol{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@local@multicoltoci}
|
||||
{\etoc@local@multicoltoc}}
|
||||
\def\etoclocalruled{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@local@ruledtoci}
|
||||
{\etoc@local@ruledtoc}}
|
||||
\def\etoclocalframed{\begingroup
|
||||
\Etoc@mustclosegrouptrue
|
||||
\@ifstar
|
||||
{\etoc@local@framedtoci}
|
||||
{\etoc@local@framedtoc}}
|
||||
\def\etocmemoirtoctotocfmt #1#2{%
|
||||
\PackageWarning{etoc}
|
||||
{\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak
|
||||
Use in its place \string\etocsettoclineforclasstoc,\MessageBreak
|
||||
and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}).
|
||||
I will do this now.\MessageBreak
|
||||
Reported}%
|
||||
\etocsettoclineforclasstoc{#1}{#2}%
|
||||
\etocsettoclineforclasslistof{toc}{#1}{#2}%
|
||||
}
|
||||
\def\etocsettoclineforclasstoc #1#2{%
|
||||
\def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}%
|
||||
}
|
||||
\def\etocsettoclineforclasslistof #1#2#3{%
|
||||
\@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}%
|
||||
}
|
||||
\let\etocclasslocaltocaddtotoc\@empty
|
||||
\let\etocclasslocallofaddtotoc\@empty
|
||||
\let\etocclasslocallotaddtotoc\@empty
|
||||
\ifdefined\c@chapter
|
||||
\def\etocclasslocaltocmaketitle{\section*{\localcontentsname}}
|
||||
\def\etocclasslocallofmaketitle{\section*{\locallistfigurename}}
|
||||
\def\etocclasslocallotmaketitle{\section*{\locallisttablename}}
|
||||
\etocsettoclineforclasstoc {chapter}{\contentsname}
|
||||
\etocsettoclineforclasslistof{toc}{section}{\localcontentsname}
|
||||
\etocsettoclineforclasslistof{lof}{section}{\locallistfigurename}
|
||||
\etocsettoclineforclasslistof{lot}{section}{\locallisttablename}
|
||||
\else
|
||||
\def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}%
|
||||
\def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}%
|
||||
\def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}%
|
||||
\etocsettoclineforclasstoc {section}{\contentsname}
|
||||
\etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname}
|
||||
\etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename}
|
||||
\etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename}
|
||||
\fi
|
||||
\def\etocclasslocalperhapsaddtotoc #1{%
|
||||
\etocifisstarred
|
||||
{}
|
||||
{\csname ifEtoc@local#1totoc\endcsname
|
||||
\csname etocclasslocal#1addtotoc\endcsname
|
||||
\fi
|
||||
}%
|
||||
}
|
||||
\def\etocarticlestyle{%
|
||||
\etocsettocstyle
|
||||
{\ifEtoc@localtoc
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\section *{\contentsname
|
||||
\@mkboth {\MakeUppercase \contentsname}
|
||||
{\MakeUppercase \contentsname}}%
|
||||
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
|
||||
\fi
|
||||
}
|
||||
{}%
|
||||
}
|
||||
\def\etocarticlestylenomarks{%
|
||||
\etocsettocstyle
|
||||
{\ifEtoc@localtoc
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\section *{\contentsname}%
|
||||
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
|
||||
\fi
|
||||
}
|
||||
{}%
|
||||
}
|
||||
\def\etocbookstyle{%
|
||||
\etocsettocstyle
|
||||
{\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
|
||||
\ifEtoc@localtoc
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\chapter *{\contentsname
|
||||
\@mkboth {\MakeUppercase \contentsname}
|
||||
{\MakeUppercase \contentsname}}%
|
||||
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
|
||||
\fi
|
||||
}%
|
||||
{\if@restonecol \twocolumn \fi}%
|
||||
}
|
||||
\def\etocbookstylenomarks{%
|
||||
\etocsettocstyle
|
||||
{\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
|
||||
\ifEtoc@localtoc
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\chapter *{\contentsname}%
|
||||
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
|
||||
\fi
|
||||
}%
|
||||
{\if@restonecol \twocolumn \fi}%
|
||||
}
|
||||
\let\etocreportstyle\etocbookstyle
|
||||
\let\etocreportstylenomarks\etocbookstylenomarks
|
||||
\def\etocmemoirstyle{%
|
||||
\etocsettocstyle
|
||||
{\ensureonecol \par \begingroup \phantomsection
|
||||
\ifx\Etoc@aftertitlehook\@empty
|
||||
\else
|
||||
\ifmem@em@starred@listof
|
||||
\else
|
||||
\ifEtoc@localtoc
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\ifEtoc@maintoctotoc
|
||||
\etocclassmaintocaddtotoc
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\ifEtoc@localtoc
|
||||
\@namedef{@\Etoc@currext maketitle}{%
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
}%
|
||||
\fi
|
||||
\@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code
|
||||
\ifx\Etoc@aftertitlehook\@empty
|
||||
\else
|
||||
\Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax
|
||||
\fi
|
||||
\parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}%
|
||||
}%
|
||||
{\@nameuse {cft\Etoc@currext afterlisthook}%
|
||||
\endgroup\restorefromonecol
|
||||
}%
|
||||
}
|
||||
\let\Etoc@beforetitlehook\@empty
|
||||
\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}%
|
||||
\expandafter\@gobble
|
||||
\else
|
||||
\ifdefined\setuptoc
|
||||
\def\Etoc@beforetitlehook{%
|
||||
\ifEtoc@localtoc
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\setuptoc{\Etoc@currext}{leveldown}%
|
||||
\else
|
||||
\etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}%
|
||||
\fi
|
||||
}%
|
||||
\fi
|
||||
\expandafter\@firstofone
|
||||
\fi
|
||||
{\def\etocclasslocalperhapsaddtotoc #1{%
|
||||
\etocifisstarred
|
||||
{}%
|
||||
{\csname ifEtoc@local#1totoc\endcsname
|
||||
\setuptoc{\Etoc@currext}{totoc}%
|
||||
\fi
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\ifdefined\Iftocfeature
|
||||
\def\etoc@Iftocfeature{\Iftocfeature}%
|
||||
\else
|
||||
\def\etoc@Iftocfeature{\iftocfeature}%
|
||||
\fi
|
||||
\def\etocscrartclstyle{%
|
||||
\etocsettocstyle
|
||||
{\ifx\Etoc@currext\Etoc@tocext
|
||||
\expandafter\@firstofone
|
||||
\else
|
||||
\expandafter\@gobble
|
||||
\fi
|
||||
{\let\if@dynlist\if@tocleft}%
|
||||
\edef\@currext{\Etoc@currext}%
|
||||
\@ifundefined{listof\@currext name}%
|
||||
{\def\list@fname{\listofname~\@currext}}%
|
||||
{\expandafter\let\expandafter\list@fname
|
||||
\csname listof\@currext name\endcsname}%
|
||||
\etoc@Iftocfeature {\@currext}{onecolumn}
|
||||
{\etoc@Iftocfeature {\@currext}{leveldown}
|
||||
{}
|
||||
{\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }}
|
||||
{}%
|
||||
\etoc@Iftocfeature {\@currext}{numberline}%
|
||||
{\def \nonumberline {\numberline {}}}{}%
|
||||
\expandafter\tocbasic@listhead\expandafter {\list@fname}%
|
||||
\begingroup \expandafter \expandafter \expandafter
|
||||
\endgroup \expandafter
|
||||
\ifx
|
||||
\csname microtypesetup\endcsname \relax
|
||||
\else
|
||||
\etoc@Iftocfeature {\@currext}{noprotrusion}{}
|
||||
{\microtypesetup {protrusion=false}%
|
||||
\PackageInfo {tocbasic}%
|
||||
{character protrusion at \@currext\space deactivated}}%
|
||||
\fi
|
||||
\etoc@Iftocfeature{\@currext}{noparskipfake}{}{%
|
||||
\ifvmode \@tempskipa\lastskip \vskip-\lastskip
|
||||
\addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi
|
||||
}%
|
||||
\setlength {\parskip }{\z@ }%
|
||||
\setlength {\parindent }{\z@ }%
|
||||
\setlength {\parfillskip }{\z@ \@plus 1fil}%
|
||||
\csname tocbasic@@before@hook\endcsname
|
||||
\csname tb@\@currext @before@hook\endcsname
|
||||
}% end of before_toc
|
||||
{% start of after_toc
|
||||
\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file
|
||||
\edef\@currext{\Etoc@currext}%
|
||||
\csname tb@\@currext @after@hook\endcsname
|
||||
\csname tocbasic@@after@hook\endcsname
|
||||
}% end of after_toc
|
||||
}
|
||||
\let\etocscrbookstyle\etocscrartclstyle
|
||||
\let\etocscrreprtstyle\etocscrartclstyle
|
||||
\def\etocclasstocstyle{\etocarticlestyle}
|
||||
\newcommand*\etocmarkboth[1]{%
|
||||
\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
|
||||
\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}}
|
||||
\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]%
|
||||
{\csname #1\endcsname *{#3}}}
|
||||
\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]%
|
||||
{\csname #1\endcsname *{#3\etocmarkboth{#4}}}}
|
||||
\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]%
|
||||
{\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}}
|
||||
\def\Etoc@redefetocstylesforchapters{%
|
||||
\renewcommand\etoctocstylewithmarks[4][chapter]{%
|
||||
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}%
|
||||
}
|
||||
\renewcommand\etoctocstylewithmarksnouc[4][chapter]{%
|
||||
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}%
|
||||
}
|
||||
\renewcommand\etoctocstyle[3][chapter]{%
|
||||
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}}
|
||||
}
|
||||
}
|
||||
\@ifclassloaded{scrartcl}
|
||||
{\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{}
|
||||
\@ifclassloaded{book}
|
||||
{\renewcommand*\etocfontone{\normalfont\normalsize}
|
||||
\renewcommand*\etocclasstocstyle{\etocbookstyle}
|
||||
\Etoc@redefetocstylesforchapters}{}
|
||||
\@ifclassloaded{report}
|
||||
{\renewcommand*\etocfontone{\normalfont\normalsize}
|
||||
\renewcommand*\etocclasstocstyle{\etocreportstyle}
|
||||
\Etoc@redefetocstylesforchapters}{}
|
||||
\@ifclassloaded{scrbook}
|
||||
{\renewcommand*\etocfontone{\normalfont\normalsize}
|
||||
\renewcommand*\etocclasstocstyle{\etocscrbookstyle}
|
||||
\Etoc@redefetocstylesforchapters}{}
|
||||
\@ifclassloaded{scrreprt}
|
||||
{\renewcommand*\etocfontone{\normalfont\normalsize}
|
||||
\renewcommand*\etocclasstocstyle{\etocscrreprtstyle}
|
||||
\Etoc@redefetocstylesforchapters}{}
|
||||
\@ifclassloaded{memoir}
|
||||
{\renewcommand*\etocfontone{\normalfont\normalsize}
|
||||
\renewcommand*\etocclasstocstyle{\etocmemoirstyle}
|
||||
\Etoc@redefetocstylesforchapters}{}
|
||||
\def\etoctocloftstyle {%
|
||||
\etocsettocstyle{%
|
||||
\@cfttocstart
|
||||
\par
|
||||
\begingroup
|
||||
\parindent\z@ \parskip\cftparskip
|
||||
\@nameuse{@cftmake\Etoc@currext title}%
|
||||
\ifEtoc@localtoc
|
||||
\etoctocloftlocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}%
|
||||
\fi
|
||||
}%
|
||||
{%
|
||||
\endgroup
|
||||
\@cfttocfinish
|
||||
}%
|
||||
}
|
||||
\def\etoctocloftlocalperhapsaddtotoc#1{%
|
||||
\etocifisstarred
|
||||
{}%
|
||||
{\csname ifEtoc@local#1totoc\endcsname
|
||||
\ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi
|
||||
\csname @cftdobib#1\endcsname
|
||||
\fi
|
||||
}%
|
||||
}
|
||||
\def\etoctocbibindstyle {%
|
||||
\etocsettocstyle {%
|
||||
\toc@start
|
||||
\ifEtoc@localtoc
|
||||
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
|
||||
\etocclasslocalperhapsaddtotoc\Etoc@currext
|
||||
\else
|
||||
\etoc@tocbibind@dotoctitle
|
||||
\fi
|
||||
}%
|
||||
{\toc@finish}%
|
||||
}
|
||||
\def\etoc@tocbibind@dotoctitle {%
|
||||
\if@bibchapter
|
||||
\etocifisstarred
|
||||
{\chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
|
||||
}%
|
||||
{\ifEtoc@maintoctotoc
|
||||
\toc@chapter{\contentsname} %<-space from original
|
||||
\else
|
||||
\chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
|
||||
\fi
|
||||
}%
|
||||
\else
|
||||
\etocifisstarred
|
||||
{\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space
|
||||
}
|
||||
{\ifEtoc@maintoctotoc
|
||||
\toc@section{\@tocextra}{\contentsname} %<-space from original
|
||||
\else
|
||||
\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id.
|
||||
\fi
|
||||
}%
|
||||
\fi
|
||||
}%
|
||||
\@ifclassloaded{memoir}
|
||||
{}
|
||||
{% memoir not loaded
|
||||
\@ifpackageloaded{tocloft}
|
||||
{\if@cftnctoc\else
|
||||
\ifEtoc@keeporiginaltoc
|
||||
\else
|
||||
\AtBeginDocument{\let\tableofcontents\etoctableofcontents}%
|
||||
\fi
|
||||
\fi }
|
||||
{\AtBeginDocument
|
||||
{\@ifpackageloaded{tocloft}
|
||||
{\if@cftnctoc\else
|
||||
\PackageWarningNoLine {etoc}
|
||||
{Package `tocloft' was loaded after `etoc'.\MessageBreak
|
||||
To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak
|
||||
be tricked into believing to have been loaded with its\MessageBreak
|
||||
option `titles'. \space But this will cause the `tocloft'\MessageBreak
|
||||
customization of the titles of the main list of figures\MessageBreak
|
||||
and list of tables to not apply either.\MessageBreak
|
||||
You should load `tocloft' before `etoc'.}%
|
||||
\AtEndDocument{\PackageWarning{etoc}
|
||||
{Please load `tocloft' before `etoc'!\@gobbletwo}}%
|
||||
\fi
|
||||
\@cftnctoctrue }%
|
||||
{}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\@ifclassloaded{memoir}
|
||||
{}
|
||||
{% memoir not loaded
|
||||
\AtBeginDocument{%
|
||||
\@ifpackageloaded{tocloft}
|
||||
{%
|
||||
\def\etocclasstocstyle{%
|
||||
\etoctocloftstyle
|
||||
\Etoc@classstyletrue
|
||||
}%
|
||||
\ifEtoc@etocstyle
|
||||
\ifEtoc@classstyle
|
||||
\etocclasstocstyle
|
||||
\Etoc@etocstyletrue
|
||||
\fi
|
||||
\else
|
||||
\ifEtoc@classstyle
|
||||
\etocclasstocstyle
|
||||
\fi
|
||||
\fi
|
||||
}%
|
||||
{% no tocloft
|
||||
\@ifpackageloaded {tocbibind}
|
||||
{\if@dotoctoc
|
||||
\def\etocclasstocstyle{%
|
||||
\etoctocbibindstyle
|
||||
\Etoc@classstyletrue
|
||||
}%
|
||||
\ifEtoc@etocstyle
|
||||
\ifEtoc@classstyle
|
||||
\etocclasstocstyle
|
||||
\Etoc@etocstyletrue
|
||||
\fi
|
||||
\else
|
||||
\ifEtoc@classstyle
|
||||
\etocclasstocstyle
|
||||
\fi
|
||||
\fi
|
||||
\ifEtoc@keeporiginaltoc
|
||||
\else
|
||||
\let\tableofcontents\etoctableofcontents
|
||||
\fi
|
||||
}%
|
||||
{}%
|
||||
}%
|
||||
\@ifpackageloaded{tocbibind}
|
||||
{% tocbibind, perhaps with tocloft
|
||||
\if@dotoctoc
|
||||
\ifEtoc@keeporiginaltoc
|
||||
\else
|
||||
\let\tableofcontents\etoctableofcontents
|
||||
\fi
|
||||
\etocsetup{maintoctotoc,localtoctotoc}%
|
||||
\PackageInfo{etoc}{%
|
||||
Setting (or re-setting) the options `maintoctotoc' and\MessageBreak
|
||||
`localtoctotoc' to true as tocbibind was detected and\MessageBreak
|
||||
found to be configured for `TOC to toc'.\MessageBreak
|
||||
Reported at begin document}%
|
||||
\fi
|
||||
\if@dotoclof
|
||||
\ifEtoc@lof
|
||||
\etocsetup{localloftotoc}%
|
||||
\PackageInfo{etoc}{%
|
||||
Setting (or re-setting) `localloftotoc=true' as the\MessageBreak
|
||||
package tocbibind was detected and is configured for\MessageBreak
|
||||
`LOF to toc'. Reported at begin document}%
|
||||
\fi
|
||||
\fi
|
||||
\if@dotoclot
|
||||
\ifEtoc@lot
|
||||
\etocsetup{locallottotoc}%
|
||||
\PackageInfo{etoc}{%
|
||||
Setting (or re-setting) `locallottotoc=true' as the\MessageBreak
|
||||
package tocbibind was detected and is configured for\MessageBreak
|
||||
`LOT to toc'. Reported at begin document}%
|
||||
\fi
|
||||
\fi
|
||||
}% end of tocbibind branch
|
||||
{}%
|
||||
}% end of at begin document
|
||||
}% end of not with memoir branch
|
||||
\def\Etoc@addtocontents #1#2{%
|
||||
\addtocontents {toc}{%
|
||||
\protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
|
||||
\ifdefined\protected@file@percent\protected@file@percent\fi
|
||||
}%
|
||||
}
|
||||
\def\Etoc@addcontentsline@ #1#2#3{%
|
||||
\@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}%
|
||||
}
|
||||
\DeclareRobustCommand*{\etoctoccontentsline}
|
||||
{\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}}
|
||||
\def\Etoc@addtocontents@immediately#1#2{%
|
||||
\begingroup
|
||||
\let\Etoc@originalwrite\write
|
||||
\def\write{\immediate\Etoc@originalwrite}%
|
||||
\Etoc@addtocontents{#1}{#2}%
|
||||
\endgroup
|
||||
}
|
||||
\def\Etoc@addcontentsline@@immediately#1#2#3{%
|
||||
\begingroup
|
||||
\let\Etoc@originalwrite\write
|
||||
\def\write{\immediate\Etoc@originalwrite}%
|
||||
\Etoc@addcontentsline@{#1}{#2}{#3}%
|
||||
\endgoroup
|
||||
}
|
||||
\DeclareRobustCommand*{\etocimmediatetoccontentsline}
|
||||
{\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}}
|
||||
\def\Etoc@storetocdepth {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}}
|
||||
\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax}
|
||||
\def\etocobeytoctocdepth {\def\etoc@settocdepth
|
||||
{\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}}
|
||||
\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth
|
||||
\global\c@tocdepth\Etoc@savedtocdepth\relax\fi }
|
||||
\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble }
|
||||
\def\etocsettocdepth {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth }
|
||||
\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup
|
||||
\expandafter\Etoc@set@tocdepth@
|
||||
\else\expandafter\Etoc@set@toctocdepth
|
||||
\fi }
|
||||
\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@}
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}}
|
||||
{\global\c@tocdepth\csname Etoc@#1@@\endcsname}%
|
||||
}
|
||||
\def\Etoc@set@toctocdepth #1#{\Etoc@set@toctocdepth@ }
|
||||
\def\Etoc@set@toctocdepth@ #1{%
|
||||
\@ifundefined{Etoc@#1@@}%
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}%
|
||||
{\addtocontents {toc}
|
||||
{\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}%
|
||||
}
|
||||
\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately}
|
||||
\def\Etoc@set@toctocdepth@immediately #1{%
|
||||
\@ifundefined{Etoc@#1@@}%
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}%
|
||||
{\begingroup
|
||||
\let\Etoc@originalwrite\write
|
||||
\def\write{\immediate\Etoc@originalwrite}%
|
||||
\addtocontents {toc}
|
||||
{\protect\etoc@settocdepth\expandafter\protect
|
||||
\csname Etoc@#1@@\endcsname}%
|
||||
\endgroup
|
||||
}%
|
||||
}
|
||||
\def\etocdepthtag #1#{\Etoc@depthtag }
|
||||
\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}}
|
||||
\def\etocimmediatedepthtag #1#{\Etoc@depthtag@immediately }
|
||||
\def\Etoc@depthtag@immediately #1{%
|
||||
\begingroup
|
||||
\let\Etoc@originalwrite\write
|
||||
\def\write{\immediate\Etoc@originalwrite}%
|
||||
\addtocontents {toc}{\protect\etoc@depthtag {#1}}%
|
||||
\endgroup
|
||||
}
|
||||
\def\etocignoredepthtags {\let\etoc@depthtag \@gobble }
|
||||
\def\etocobeydepthtags {\let\etoc@depthtag \Etoc@depthtag@ }
|
||||
\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}%
|
||||
{}% ignore in silence if tag has no associated depth
|
||||
{\afterassignment\Etoc@@nottoodeep
|
||||
\global\c@tocdepth\csname Etoc@depthof@#1\endcsname}%
|
||||
}
|
||||
\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}%
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}%
|
||||
{\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}%
|
||||
}
|
||||
\def\Etoc@tocvsec@err #1{\PackageError {etoc}
|
||||
{The command \protect#1\space is incompatible with `etoc'}
|
||||
{Use \protect\etocsettocdepth.toc as replacement}%
|
||||
}%
|
||||
\AtBeginDocument {%
|
||||
\@ifclassloaded{memoir}
|
||||
{\PackageInfo {etoc}
|
||||
{Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak
|
||||
\protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak
|
||||
capabilities (see `etoc' manual). \space
|
||||
Also, \protect\etocsettocdepth\MessageBreak
|
||||
and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak
|
||||
`memoir' command \protect\maxtocdepth\@gobble}%
|
||||
}%
|
||||
{\@ifpackageloaded {tocvsec2}{%
|
||||
\def\maxtocdepth #1{\Etoc@tocvsec@err \maxtocdepth }%
|
||||
\def\settocdepth #1{\Etoc@tocvsec@err \settocdepth }%
|
||||
\def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }%
|
||||
{\Etoc@tocvsec@err \resettocdepth }%
|
||||
}%
|
||||
\def\save@tocdepth #1#2#3{}%
|
||||
\let\reset@tocdepth\relax
|
||||
\let\remax@tocdepth\relax
|
||||
\let\tableofcontents\etoctableofcontents
|
||||
\PackageWarningNoLine {etoc}
|
||||
{Package `tocvsec2' detected and its modification of\MessageBreak
|
||||
\protect\tableofcontents\space reverted. \space Use
|
||||
\protect\etocsettocdepth.toc\MessageBreak as a replacement
|
||||
for `tocvsec2' toc-related commands}%
|
||||
}% tocvsec2 loaded
|
||||
{}% tocvsec2 not loaded
|
||||
}%
|
||||
}%
|
||||
\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }%
|
||||
\def\invisiblelocaltableofcontents
|
||||
{\etocsetnexttocdepth {-3}\localtableofcontents }%
|
||||
\def\etocsetnexttocdepth #1{%
|
||||
\@ifundefined{Etoc@#1@@}
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}}
|
||||
{\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}%
|
||||
}%
|
||||
\def\Etoc@setnexttocdepth#1{%
|
||||
\def\Etoc@tocdepthset{%
|
||||
\Etoc@tocdepthreset
|
||||
\edef\Etoc@tocdepthreset {%
|
||||
\global\c@tocdepth\the\c@tocdepth\space
|
||||
\global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty
|
||||
}%
|
||||
\global\c@tocdepth#1%
|
||||
\global\let\Etoc@tocdepthset\@empty
|
||||
}%
|
||||
}%
|
||||
\let\Etoc@tocdepthreset\@empty
|
||||
\let\Etoc@tocdepthset \@empty
|
||||
\def\etocsetlocaltop #1#{\Etoc@set@localtop}%
|
||||
\def\Etoc@set@localtop #1{%
|
||||
\@ifundefined{Etoc@#1@@}%
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}%
|
||||
{\addtocontents {toc}
|
||||
{\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}%
|
||||
}%
|
||||
\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}%
|
||||
\def\Etoc@set@localtop@immediately #1{%
|
||||
\@ifundefined{Etoc@#1@@}%
|
||||
{\PackageWarning{etoc}
|
||||
{Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}%
|
||||
{\begingroup
|
||||
\let\Etoc@originalwrite\write
|
||||
\def\write{\immediate\Etoc@originalwrite}%
|
||||
\addtocontents {toc}
|
||||
{\protect\etoc@setlocaltop\expandafter\protect
|
||||
\csname Etoc@#1@@\endcsname}%
|
||||
\endgroup
|
||||
}%
|
||||
}%
|
||||
\def\etoc@setlocaltop #1{%
|
||||
\ifnum#1=\Etoc@maxlevel
|
||||
\Etoc@skipthisonetrue
|
||||
\else
|
||||
\Etoc@skipthisonefalse
|
||||
\global\let\Etoc@level #1%
|
||||
\global\let\Etoc@virtualtop #1%
|
||||
\ifEtoc@localtoc
|
||||
\ifEtoc@stoptoc
|
||||
\Etoc@skipthisonetrue
|
||||
\else
|
||||
\ifEtoc@notactive
|
||||
\Etoc@skipthisonetrue
|
||||
\else
|
||||
\unless\ifnum\Etoc@level>\etoclocaltop
|
||||
\Etoc@skipthisonetrue
|
||||
\global\Etoc@stoptoctrue
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\let\Etoc@next\@empty
|
||||
\ifEtoc@skipthisone
|
||||
\else
|
||||
\ifnum\Etoc@level>\c@tocdepth
|
||||
\else
|
||||
\ifEtoc@standardlines
|
||||
\else
|
||||
\let\Etoc@next\Etoc@setlocaltop@doendsandbegin
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\Etoc@next
|
||||
}%
|
||||
\def\Etoc@setlocaltop@doendsandbegin{%
|
||||
\Etoc@doendsandbegin
|
||||
\global\Etoc@skipprefixfalse
|
||||
}
|
||||
\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}%
|
||||
{\let\protect\etoc@startlocaltoc\protect\@gobble
|
||||
\let\protect\etoc@settocdepth\protect\@gobble
|
||||
\let\protect\etoc@depthtag\protect\@gobble
|
||||
\let\protect\etoc@setlocaltop\protect\@gobble}{}}%
|
||||
\def\etocstandardlines {\Etoc@standardlinestrue}
|
||||
\def\etoctoclines {\Etoc@standardlinesfalse}
|
||||
\etocdefaultlines
|
||||
\etocstandardlines
|
||||
\def\etocstandarddisplaystyle{%
|
||||
\PackageWarningNoLine{etoc}{%
|
||||
\string\etocstandarddisplaystyle \on@line\MessageBreak
|
||||
is deprecated. \space Please use \string\etocclasstocstyle}%
|
||||
}
|
||||
\expandafter\def\expandafter\etocclasstocstyle\expandafter{%
|
||||
\etocclasstocstyle
|
||||
\Etoc@classstyletrue
|
||||
}
|
||||
\def\etocetoclocaltocstyle{\Etoc@etocstyletrue}
|
||||
\def\etocusertocstyle{\Etoc@etocstylefalse}
|
||||
\etocclasstocstyle
|
||||
\etocetoclocaltocstyle
|
||||
\etocobeytoctocdepth
|
||||
\etocobeydepthtags
|
||||
\let\etocbeforetitlehook \@empty
|
||||
\let\etocaftertitlehook \@empty
|
||||
\let\etocaftercontentshook \@empty
|
||||
\let\etocaftertochook \@empty
|
||||
\def\etockeeporiginaltableofcontents
|
||||
{\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}%
|
||||
\endinput
|
||||
%%
|
||||
%% End of file `etoc.sty'.
|
||||
7
научка/code/pwm_motor_control/Modbus/latex/files.tex
Normal file
7
научка/code/pwm_motor_control/Modbus/latex/files.tex
Normal file
@@ -0,0 +1,7 @@
|
||||
\doxysection{File List}
|
||||
Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{crc__algs_8h_source}{crc\+\_\+algs.\+h}} }{\pageref{crc__algs_8h_source}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{modbus_8h_source}{modbus.\+h}} }{\pageref{modbus_8h_source}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{rs__message_8h_source}{rs\+\_\+message.\+h}} }{\pageref{rs__message_8h_source}}{}
|
||||
\item\contentsline{section}{\mbox{\hyperlink{tim__general_8h_source}{tim\+\_\+general.\+h}} }{\pageref{tim__general_8h_source}}{}
|
||||
\end{DoxyCompactList}
|
||||
456
научка/code/pwm_motor_control/Modbus/latex/longtable_doxygen.sty
Normal file
456
научка/code/pwm_motor_control/Modbus/latex/longtable_doxygen.sty
Normal file
@@ -0,0 +1,456 @@
|
||||
%%
|
||||
%% 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}
|
||||
%% added \long to prevent:
|
||||
% LaTeX Warning: Command \LT@p@ftntext has changed.
|
||||
%
|
||||
% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx):
|
||||
% \changes{v4.15}{2021/03/28}
|
||||
% {make long for gh/364}
|
||||
% Inside the `p' column, just save up the footnote text in a token
|
||||
% register.
|
||||
\long\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'.
|
||||
172
научка/code/pwm_motor_control/Modbus/latex/modbus_8h_source.tex
Normal file
172
научка/code/pwm_motor_control/Modbus/latex/modbus_8h_source.tex
Normal file
@@ -0,0 +1,172 @@
|
||||
\doxysection{modbus.\+h}
|
||||
\hypertarget{modbus_8h_source}{}\label{modbus_8h_source}
|
||||
\begin{DoxyCode}{0}
|
||||
\DoxyCodeLine{00001\ \textcolor{comment}{/********************************MODBUS*************************************}}
|
||||
\DoxyCodeLine{00002\ \textcolor{comment}{Данный\ файл\ содержит\ объявления\ базовых\ функции\ и\ дефайны\ для\ реализации\ }}
|
||||
\DoxyCodeLine{00003\ \textcolor{comment}{протоколов\ \ \ \ \ \ \ \ \ \ }}
|
||||
\DoxyCodeLine{00004\ \textcolor{comment}{***************************************************************************/}}
|
||||
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ \_\_MODBUS\_H\_}}
|
||||
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ \_\_MODBUS\_H\_}}
|
||||
\DoxyCodeLine{00007\ }
|
||||
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ "{}main.h"{}}}
|
||||
\DoxyCodeLine{00009\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/DEFINES\ FOR\ MODBUS\ SETTING-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#define\ MB\_UART\_NUMB\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ number\ of\ used\ uart}}
|
||||
\DoxyCodeLine{00011\ \textcolor{comment}{/*\ accord\ to\ this\ define\ sets\ define\ USED\_MB\_UART\ =\ USARTx\ */}}
|
||||
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#define\ MB\_TIM\_NUMB\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 7\ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ number\ of\ used\ uart}}
|
||||
\DoxyCodeLine{00013\ \textcolor{comment}{/*\ accord\ to\ this\ define\ sets\ define\ USED\_MB\_TIM\ =\ TIMx\ */}}
|
||||
\DoxyCodeLine{00014\ }
|
||||
\DoxyCodeLine{00015\ }
|
||||
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#define\ COILS\_NUMB\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 16\ \ \ \ \ \ }\textcolor{comment}{//\ minimum\ 16}}
|
||||
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#define\ INPUT\_REGS\_NUMB\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 100}}
|
||||
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#define\ HOLD\_REGS\_NUMB\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 100\ }}
|
||||
\DoxyCodeLine{00019\ \textcolor{comment}{/*\ defines\ for\ modbus\ behaviour\ */}}
|
||||
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#define\ MB\_MAX\_TIMEOUT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 5000\ \ \ \ }\textcolor{comment}{//\ is\ ms}}
|
||||
\DoxyCodeLine{00021\ \textcolor{preprocessor}{\#define\ RX\_FIRST\_PART\_IND\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 6\ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ up\ to\ NUMB\ of\ bytes\ if\ its\ there,\ or\ up\ to\ first\ byte\ CRC}}
|
||||
\DoxyCodeLine{00022\ \textcolor{comment}{//\ custom\ define\ for\ size\ of\ receive\ message\ }}
|
||||
\DoxyCodeLine{00023\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00024\ }
|
||||
\DoxyCodeLine{00025\ }
|
||||
\DoxyCodeLine{00028\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/DEFINES\ FOR\ STRUCTURE-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00029\ \textcolor{comment}{/*\ defines\ for\ structure\ of\ modbus\ message\ */}}
|
||||
\DoxyCodeLine{00030\ \textcolor{preprocessor}{\#define\ DEVICE\_ID\_SIZE\ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (MbAddr)}}
|
||||
\DoxyCodeLine{00031\ \textcolor{preprocessor}{\#define\ FUNC\_CODE\_SIZE\ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (Func\_Code)}}
|
||||
\DoxyCodeLine{00032\ \textcolor{preprocessor}{\#define\ DATA\_SIZE\_SIZE\ \ \ \ \ \ \ \ \ \ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (ByteCnt)}}
|
||||
\DoxyCodeLine{00033\ \textcolor{preprocessor}{\#define\ ADDRESS\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (Qnt)}}
|
||||
\DoxyCodeLine{00034\ \textcolor{preprocessor}{\#define\ NUMBorVAL\_SIZE\ \ \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (Qnt)}}
|
||||
\DoxyCodeLine{00035\ \textcolor{preprocessor}{\#define\ DATA\_MAX\_SIZE\ \ \ \ \ \ \ \ \ \ \ 32\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ maximum\ number\ of\ data:\ DWORD\ (NOT\ MESSAGE\ SIZE)}}
|
||||
\DoxyCodeLine{00036\ \textcolor{preprocessor}{\#define\ CRC\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ size\ of\ (MB\_CRC)\ in\ bytes}}
|
||||
\DoxyCodeLine{00037\ }
|
||||
\DoxyCodeLine{00038\ \textcolor{preprocessor}{\#define\ ERR\_VALUES\_START\ \ \ \ \ \ \ \ 0x80U\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{//\ first\ number\ of\ (Except\_Code)}}
|
||||
\DoxyCodeLine{00039\ }
|
||||
\DoxyCodeLine{00040\ \textcolor{comment}{/*\ size\ of\ info\ */}}
|
||||
\DoxyCodeLine{00041\ \textcolor{preprocessor}{\#define\ INFO\_SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ DEVICE\_ID\_SIZE+FUNC\_CODE\_SIZE+DATA\_SIZE\_SIZE+ADDRESS\_SIZE+NUMBorVAL\_SIZE}}
|
||||
\DoxyCodeLine{00042\ }
|
||||
\DoxyCodeLine{00043\ \textcolor{comment}{/*\ size\ of\ buffer:\ max\ size\ of\ whole\ message\ */}}
|
||||
\DoxyCodeLine{00044\ \textcolor{preprocessor}{\#define\ MSG\_SIZE\_MAX\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (DATA\_MAX\_SIZE+INFO\_SIZE+CRC\_SIZE)\ }\textcolor{comment}{//\ max\ possible\ size\ of\ message}}
|
||||
\DoxyCodeLine{00045\ }
|
||||
\DoxyCodeLine{00046\ \textcolor{preprocessor}{\#define\ Message\_Data(\_msg\_,\ \_ind\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_msg\_-\/>DATA[\_ind\_].DATA}}
|
||||
\DoxyCodeLine{00047\ \textcolor{preprocessor}{\#define\ Message\_Data\_Byte(\_msg\_,\ \_ind\_,\ \_byte\_)\ \ \ \ \ \_msg\_-\/>DATA[\_ind\_].\_byte\_}}
|
||||
\DoxyCodeLine{00048\ }
|
||||
\DoxyCodeLine{00049\ \textcolor{comment}{//\ choose\ certain\ coil}}
|
||||
\DoxyCodeLine{00050\ \textcolor{preprocessor}{\#define\ Set\_Coils\_Origin(\_coils\_,\ \_source\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ *(\_coils\_)\ =\ (uint16\_t\ *)(\&(\_source\_))}}
|
||||
\DoxyCodeLine{00051\ \textcolor{preprocessor}{\#define\ Set\_Hold\_Regs\_Origin(\_hregs\_,\ \_source\_)\ \ \ \ \ \ \ \ \ uint16\_t\ *(\_hregs\_)\ =\ (uint16\_t\ *)(\&(\_source\_))}}
|
||||
\DoxyCodeLine{00052\ \textcolor{comment}{/*\ Structure\ for\ modbus\ messsage\ */}}
|
||||
\DoxyCodeLine{00053\ }
|
||||
\DoxyCodeLine{00054\ }
|
||||
\DoxyCodeLine{00055\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \textcolor{comment}{//RS\_FunctonTypeDef}}
|
||||
\DoxyCodeLine{00056\ \{}
|
||||
\DoxyCodeLine{00057\ \ \ \ \ \textcolor{comment}{//\ reading}}
|
||||
\DoxyCodeLine{00058\ \ \ \ \ MB\_R\_COILS\ =\ \ \ \ \ \ \ \ \ \ \ \ 0x01,}
|
||||
\DoxyCodeLine{00059\ \ \ \ \ MB\_R\_DISC\_IN\ =\ \ \ \ \ \ 0x02,}
|
||||
\DoxyCodeLine{00060\ \ \ \ \ MB\_R\_IN\_REGS\ =\ \ \ \ \ \ 0x03,}
|
||||
\DoxyCodeLine{00061\ \ \ \ \ MB\_R\_HOLD\_REGS\ =\ \ \ \ 0x04,}
|
||||
\DoxyCodeLine{00062\ \ \ \ \ }
|
||||
\DoxyCodeLine{00063\ \ \ \ \ \textcolor{comment}{//\ writting}}
|
||||
\DoxyCodeLine{00064\ \ \ \ \ MB\_W\_COIL\ =\ \ \ \ \ \ \ \ \ \ \ \ \ 0x05,}
|
||||
\DoxyCodeLine{00065\ \ \ \ \ MB\_W\_HOLD\_REG\ =\ \ \ \ \ 0x06,}
|
||||
\DoxyCodeLine{00066\ \ \ \ \ MB\_W\_COILS\ =\ \ \ \ \ \ \ \ \ \ \ \ 0x0F,}
|
||||
\DoxyCodeLine{00067\ \ \ \ \ MB\_W\_HOLD\_REGS\ =\ \ \ \ 0x10,}
|
||||
\DoxyCodeLine{00068\ \}RS\_FunctonTypeDef;}
|
||||
\DoxyCodeLine{00069\ }
|
||||
\DoxyCodeLine{00070\ }
|
||||
\DoxyCodeLine{00071\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ \ }\textcolor{comment}{//\ RS\_MsgTypeDef}}
|
||||
\DoxyCodeLine{00072\ \{}
|
||||
\DoxyCodeLine{00073\ \ \ \ \ uint8\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MbAddr;}
|
||||
\DoxyCodeLine{00074\ \ \ \ \ RS\_FunctonTypeDef\ \ \ Func\_Code;}
|
||||
\DoxyCodeLine{00075\ \ \ \ \ uint8\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Except\_Code;}
|
||||
\DoxyCodeLine{00076\ \ \ \ \ uint16\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Addr;}
|
||||
\DoxyCodeLine{00077\ \ \ \ \ uint16\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Qnt;}
|
||||
\DoxyCodeLine{00078\ }
|
||||
\DoxyCodeLine{00079\ \ \ \ \ uint8\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ByteCnt;}
|
||||
\DoxyCodeLine{00080\ \ \ \ \ uint16\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ DATA[DATA\_MAX\_SIZE];}
|
||||
\DoxyCodeLine{00081\ \ \ \ \ }
|
||||
\DoxyCodeLine{00082\ \ \ \ \ uint16\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MB\_CRC;}
|
||||
\DoxyCodeLine{00083\ \}\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}};}
|
||||
\DoxyCodeLine{00084\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00085\ }
|
||||
\DoxyCodeLine{00086\ }
|
||||
\DoxyCodeLine{00088\ }
|
||||
\DoxyCodeLine{00089\ }
|
||||
\DoxyCodeLine{00090\ \textcolor{preprocessor}{\#define\ write16\_to\_8(\_16bit\_,\ \_2\_8bit\_)}}
|
||||
\DoxyCodeLine{00091\ }
|
||||
\DoxyCodeLine{00092\ }
|
||||
\DoxyCodeLine{00093\ }
|
||||
\DoxyCodeLine{00094\ }
|
||||
\DoxyCodeLine{00095\ }
|
||||
\DoxyCodeLine{00098\ }
|
||||
\DoxyCodeLine{00104\ uint8\_t\ Modbus\_Command\_1(\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *modbus\_msg);}
|
||||
\DoxyCodeLine{00111\ uint8\_t\ Modbus\_Command\_3(\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *modbus\_msg);}
|
||||
\DoxyCodeLine{00118\ uint8\_t\ Modbus\_Command\_5(\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *modbus\_msg);}
|
||||
\DoxyCodeLine{00125\ uint8\_t\ Modbus\_Command\_15(\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *modbus\_msg);}
|
||||
\DoxyCodeLine{00126\ }
|
||||
\DoxyCodeLine{00128\ }
|
||||
\DoxyCodeLine{00129\ }
|
||||
\DoxyCodeLine{00132\ }
|
||||
\DoxyCodeLine{00133\ \textcolor{comment}{/*\ set\ USART\_TypeDef\ for\ choosen\ numb\ of\ usart\ */}}
|
||||
\DoxyCodeLine{00134\ \textcolor{preprocessor}{\#if\ (MB\_UART\_NUMB\ ==\ 1)\ }}
|
||||
\DoxyCodeLine{00135\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ USART1\ }}
|
||||
\DoxyCodeLine{00136\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_USART1}}
|
||||
\DoxyCodeLine{00137\ \textcolor{preprocessor}{\#elif\ (MB\_UART\_NUMB\ ==\ 2)}}
|
||||
\DoxyCodeLine{00138\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ USART2\ }}
|
||||
\DoxyCodeLine{00139\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_USART2}}
|
||||
\DoxyCodeLine{00140\ \textcolor{preprocessor}{\#elif\ (MB\_UART\_NUMB\ ==\ 3)}}
|
||||
\DoxyCodeLine{00141\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ USART3\ }}
|
||||
\DoxyCodeLine{00142\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_USART3}}
|
||||
\DoxyCodeLine{00143\ \textcolor{preprocessor}{\#elif\ (MB\_UART\_NUMB\ ==\ 4)}}
|
||||
\DoxyCodeLine{00144\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ UART4\ }}
|
||||
\DoxyCodeLine{00145\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_UART4}}
|
||||
\DoxyCodeLine{00146\ \textcolor{preprocessor}{\#elif\ (MB\_UART\_NUMB\ ==\ 5)}}
|
||||
\DoxyCodeLine{00147\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ UART5}}
|
||||
\DoxyCodeLine{00148\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_UART6}}
|
||||
\DoxyCodeLine{00149\ \textcolor{preprocessor}{\#elif\ (MB\_UART\_NUMB\ ==\ 6)}}
|
||||
\DoxyCodeLine{00150\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_UART\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ USART6\ }}
|
||||
\DoxyCodeLine{00151\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_USART6}}
|
||||
\DoxyCodeLine{00152\ \textcolor{preprocessor}{\#endif}}
|
||||
\DoxyCodeLine{00153\ }
|
||||
\DoxyCodeLine{00154\ \textcolor{preprocessor}{\#if\ (MB\_TIM\_NUMB\ ==\ 1)\ }}
|
||||
\DoxyCodeLine{00155\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM1\ }}
|
||||
\DoxyCodeLine{00156\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM1}}
|
||||
\DoxyCodeLine{00157\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 2)}}
|
||||
\DoxyCodeLine{00158\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM2\ }}
|
||||
\DoxyCodeLine{00159\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM2}}
|
||||
\DoxyCodeLine{00160\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 3)}}
|
||||
\DoxyCodeLine{00161\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM3\ }}
|
||||
\DoxyCodeLine{00162\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM3}}
|
||||
\DoxyCodeLine{00163\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 4)}}
|
||||
\DoxyCodeLine{00164\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM4\ }}
|
||||
\DoxyCodeLine{00165\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM4}}
|
||||
\DoxyCodeLine{00166\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 5)}}
|
||||
\DoxyCodeLine{00167\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM5}}
|
||||
\DoxyCodeLine{00168\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM5}}
|
||||
\DoxyCodeLine{00169\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 6)}}
|
||||
\DoxyCodeLine{00170\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM6\ }}
|
||||
\DoxyCodeLine{00171\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM6}}
|
||||
\DoxyCodeLine{00172\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 7)}}
|
||||
\DoxyCodeLine{00173\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM7\ }}
|
||||
\DoxyCodeLine{00174\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM7}}
|
||||
\DoxyCodeLine{00175\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 8)}}
|
||||
\DoxyCodeLine{00176\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM8}}
|
||||
\DoxyCodeLine{00177\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM8\ }}
|
||||
\DoxyCodeLine{00178\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 9)}}
|
||||
\DoxyCodeLine{00179\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM9\ }}
|
||||
\DoxyCodeLine{00180\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM9}}
|
||||
\DoxyCodeLine{00181\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 10)}}
|
||||
\DoxyCodeLine{00182\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM10\ }}
|
||||
\DoxyCodeLine{00183\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM10}}
|
||||
\DoxyCodeLine{00184\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 11)}}
|
||||
\DoxyCodeLine{00185\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM11}}
|
||||
\DoxyCodeLine{00186\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM11}}
|
||||
\DoxyCodeLine{00187\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 12)}}
|
||||
\DoxyCodeLine{00188\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM12\ }}
|
||||
\DoxyCodeLine{00189\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM12}}
|
||||
\DoxyCodeLine{00190\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 13)}}
|
||||
\DoxyCodeLine{00191\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM13\ }}
|
||||
\DoxyCodeLine{00192\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM13}}
|
||||
\DoxyCodeLine{00193\ \textcolor{preprocessor}{\#elif\ (MB\_TIM\_NUMB\ ==\ 14)}}
|
||||
\DoxyCodeLine{00194\ \textcolor{preprocessor}{\ \ \ \ \#define\ USED\_MODBUS\_TIM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ TIM14\ }}
|
||||
\DoxyCodeLine{00195\ \textcolor{preprocessor}{\ \ \ \ \#define\ USE\_TIM14}}
|
||||
\DoxyCodeLine{00196\ \textcolor{preprocessor}{\#endif}}
|
||||
\DoxyCodeLine{00197\ }
|
||||
\DoxyCodeLine{00198\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MODBUS\_H\_}}
|
||||
|
||||
\end{DoxyCode}
|
||||
233
научка/code/pwm_motor_control/Modbus/latex/refman.tex
Normal file
233
научка/code/pwm_motor_control/Modbus/latex/refman.tex
Normal file
@@ -0,0 +1,233 @@
|
||||
% Handle batch mode
|
||||
% to overcome problems with too many open files
|
||||
\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
|
||||
\pdfminorversion=7
|
||||
% 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
|
||||
\makeatletter
|
||||
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
|
||||
% suppress package identification of infwarerr as it contains the word "warning"
|
||||
\let\@@protected@wlog\protected@wlog
|
||||
\def\protected@wlog#1{\wlog{package info suppressed}}
|
||||
\RequirePackage{infwarerr}
|
||||
\let\protected@wlog\@@protected@wlog
|
||||
\makeatother
|
||||
\IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript
|
||||
\IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{}
|
||||
\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}
|
||||
\doxyallsectionsfont{%
|
||||
\fontseries{bc}\selectfont%
|
||||
\color{darkgray}%
|
||||
}
|
||||
\renewcommand{\DoxyLabelFont}{%
|
||||
\fontseries{bc}\selectfont%
|
||||
\color{darkgray}%
|
||||
}
|
||||
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
|
||||
% Arguments of doxygenemoji:
|
||||
% 1) ':<text>:' 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 ':<text>:' 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}
|
||||
\makeatletter
|
||||
\def\doxynewunicodechar#1#2{%
|
||||
\@tempswafalse
|
||||
\edef\nuc@tempa{\detokenize{#1}}%
|
||||
\if\relax\nuc@tempa\relax
|
||||
\nuc@emptyargerr
|
||||
\else
|
||||
\edef\@tempb{\expandafter\@car\nuc@tempa\@nil}%
|
||||
\nuc@check
|
||||
\if@tempswa
|
||||
\@namedef{u8:\nuc@tempa}{#2}%
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\makeatother
|
||||
\doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus
|
||||
\doxynewunicodechar{²}{${}^{2}$}% Superscript two
|
||||
\doxynewunicodechar{³}{${}^{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
|
||||
\IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}}
|
||||
\etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
|
||||
\etocsetlevel{subsubsubsection}{4}
|
||||
\etocsetlevel{subsubsubsubsection}{5}
|
||||
\etocsetlevel{subsubsubsubsubsection}{6}
|
||||
\etocsetlevel{subsubsubsubsubsubsection}{7}
|
||||
\etocsetlevel{paragraph}{8}
|
||||
\etocsetlevel{subparagraph}{9}
|
||||
% 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}\\
|
||||
[1ex]\large 1.\+0 \\
|
||||
\vspace*{1cm}
|
||||
{\large Generated by Doxygen 1.10.0}\\
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{roman}
|
||||
\tableofcontents
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{arabic}
|
||||
% re-enable anchors again
|
||||
\hypersetup{pageanchor=true}
|
||||
%--- Begin generated contents ---
|
||||
\chapter{Data Structure Index}
|
||||
\input{annotated}
|
||||
\chapter{File Index}
|
||||
\input{files}
|
||||
\chapter{Data Structure Documentation}
|
||||
\input{struct_r_s___handle_type_def}
|
||||
\input{struct_r_s___msg_type_def}
|
||||
\input{struct_t_i_m___settings_type_def}
|
||||
\input{struct_u_a_r_t___settings_type_def}
|
||||
\chapter{File Documentation}
|
||||
\input{crc__algs_8h_source}
|
||||
\input{modbus_8h_source}
|
||||
\input{rs__message_8h_source}
|
||||
\input{tim__general_8h_source}
|
||||
%--- 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}
|
||||
@@ -0,0 +1,244 @@
|
||||
\doxysection{rs\+\_\+message.\+h}
|
||||
\hypertarget{rs__message_8h_source}{}\label{rs__message_8h_source}
|
||||
\begin{DoxyCode}{0}
|
||||
\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ \_\_UART\_USER\_H\_}}
|
||||
\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ \_\_UART\_USER\_H\_}}
|
||||
\DoxyCodeLine{00003\ }
|
||||
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ HAL\_UART\_MODULE\_ENABLED\ \ \ \ \ }\textcolor{comment}{//\ need\ to\ uncomment\ these\ defines\ in\ stm32f4xx\_hal\_conf.h}}
|
||||
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#define\ HAL\_USART\_MODULE\_ENABLED\ \ \ \ }\textcolor{comment}{//\ also\ need\ to\ add\ hal\_uart.c\ (source\ code)}}
|
||||
\DoxyCodeLine{00008\ }
|
||||
\DoxyCodeLine{00009\ \textcolor{comment}{//\#define\ USE\_USART1}}
|
||||
\DoxyCodeLine{00010\ \textcolor{comment}{//\#define\ USE\_USART2}}
|
||||
\DoxyCodeLine{00011\ \textcolor{comment}{//\#define\ USE\_USART3}}
|
||||
\DoxyCodeLine{00012\ \textcolor{comment}{//\#define\ USE\_UART4}}
|
||||
\DoxyCodeLine{00013\ \textcolor{comment}{//\#define\ USE\_UART5}}
|
||||
\DoxyCodeLine{00014\ \textcolor{comment}{//\#define\ USE\_USART6}}
|
||||
\DoxyCodeLine{00015\ \textcolor{comment}{/*\ note:\ used\ uart\ defines\ in\ modbus.h\ */}}
|
||||
\DoxyCodeLine{00016\ }
|
||||
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ "{}modbus.h"{}}\ }
|
||||
\DoxyCodeLine{00019\ }
|
||||
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ "{}stm32f4xx\_hal.h"{}}}
|
||||
\DoxyCodeLine{00021\ \textcolor{preprocessor}{\#include\ "{}crc\_algs.h"{}}}
|
||||
\DoxyCodeLine{00022\ \textcolor{preprocessor}{\#include\ "{}tim\_general.h"{}}}
|
||||
\DoxyCodeLine{00023\ }
|
||||
\DoxyCodeLine{00026\ \textcolor{comment}{/*\ Clear\ message-\/uart\ buffer\ */}}
|
||||
\DoxyCodeLine{00027\ \textcolor{preprocessor}{\#define\ RS\_Clear\_Buff(\_buff\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for(int\ i=0;\ i<MSG\_SIZE\_MAX;i++)\ \ \ \ \_buff\_[i]\ =\ NULL}}
|
||||
\DoxyCodeLine{00028\ }
|
||||
\DoxyCodeLine{00029\ \textcolor{comment}{/*\ Set/Reset\ flags\ */}}
|
||||
\DoxyCodeLine{00030\ \textcolor{preprocessor}{\#define\ RS\_Set\_Free(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_hRS\_-\/>fRS\_Busy\ =\ 0}}
|
||||
\DoxyCodeLine{00031\ \textcolor{preprocessor}{\#define\ RS\_Set\_Busy(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_hRS\_-\/>fRS\_Busy\ =\ 1}}
|
||||
\DoxyCodeLine{00032\ }
|
||||
\DoxyCodeLine{00033\ \textcolor{preprocessor}{\#define\ RS\_Set\_RX\_Flags(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \_hRS\_-\/>fRX\_Busy\ =\ 1;\ \_hRS\_-\/>fRX\_Done\ =\ 0;\ \_hRS\_-\/>fRX\_Half\ =\ 0}}
|
||||
\DoxyCodeLine{00034\ \textcolor{preprocessor}{\#define\ RS\_Set\_TX\_Flags(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \_hRS\_-\/>fTX\_Busy\ =\ 1;\ \_hRS\_-\/>fTX\_Done\ =\ 0}}
|
||||
\DoxyCodeLine{00035\ }
|
||||
\DoxyCodeLine{00036\ \textcolor{preprocessor}{\#define\ RS\_Reset\_RX\_Flags(\_hRS\_)\ \ \ \ \ \ \ \ \_hRS\_-\/>fRX\_Busy\ =\ 0;\ \_hRS\_-\/>fRX\_Done\ =\ 0;\ \_hRS\_-\/>fRX\_Half\ =\ 0}}
|
||||
\DoxyCodeLine{00037\ \textcolor{preprocessor}{\#define\ RS\_Reset\_TX\_Flags(\_hRS\_)\ \ \ \ \ \ \ \ \_hRS\_-\/>fTX\_Busy\ =\ 0;\ \_hRS\_-\/>fTX\_Done\ =\ 0}}
|
||||
\DoxyCodeLine{00038\ }
|
||||
\DoxyCodeLine{00039\ \textcolor{preprocessor}{\#define\ RS\_Set\_RX\_End\_Flag(\_hRS\_)\ \ \ \ \ \ \ \_hRS\_-\/>fRX\_Done\ =\ 1}}
|
||||
\DoxyCodeLine{00040\ \textcolor{preprocessor}{\#define\ RS\_Set\_TX\_End\_Flag(\_hRS\_)\ \ \ \ \ \ \ \_hRS\_-\/>fTX\_Done\ =\ 1}}
|
||||
\DoxyCodeLine{00041\ }
|
||||
\DoxyCodeLine{00042\ \textcolor{preprocessor}{\#define\ RS\_Set\_RX\_End(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_Reset\_RX\_Flags(\_hRS\_);\ RS\_Set\_RX\_End\_Flag(\_hRS\_)}}
|
||||
\DoxyCodeLine{00043\ \textcolor{preprocessor}{\#define\ RS\_Set\_TX\_End(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_Reset\_TX\_Flags(\_hRS\_);\ RS\_Set\_TX\_End\_Flag(\_hRS\_)}}
|
||||
\DoxyCodeLine{00044\ }
|
||||
\DoxyCodeLine{00045\ \textcolor{comment}{/*\ Clear\ all\ RS\ stuff\ */}}
|
||||
\DoxyCodeLine{00046\ \textcolor{preprocessor}{\#define\ RS\_Clear\_All(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_Clear\_Buff(\_hRS\_-\/>pBufferPtr);\ \ \ RS\_Reset\_RX\_Flags(\_hRS\_);\ \ \ RS\_Reset\_TX\_Flags(\_hRS\_);}}
|
||||
\DoxyCodeLine{00047\ }
|
||||
\DoxyCodeLine{00048\ \textcolor{comment}{//\#define\ MB\_Is\_RX\_Busy(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_hRS\_-\/>huartx-\/>gState\&HAL\_USART\_STATE\_BUSY\_RX)\ ==\ HAL\_USART\_STATE\_BUSY\_RX)}}
|
||||
\DoxyCodeLine{00049\ \textcolor{comment}{//\#define\ MB\_Is\_TX\_Busy(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_hRS\_-\/>huartx-\/>gState\&HAL\_USART\_STATE\_BUSY\_RX)\ ==\ HAL\_USART\_STATE\_BUSY\_TX)}}
|
||||
\DoxyCodeLine{00050\ \textcolor{preprocessor}{\#define\ RS\_Is\_RX\_Busy(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_hRS\_-\/>fRX\_Busy\ ==\ 1)}}
|
||||
\DoxyCodeLine{00051\ \textcolor{preprocessor}{\#define\ RS\_Is\_TX\_Busy(\_hRS\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_hRS\_-\/>fTX\_Busy\ ==\ 1)}}
|
||||
\DoxyCodeLine{00052\ }
|
||||
\DoxyCodeLine{00053\ }
|
||||
\DoxyCodeLine{00054\ \textcolor{preprocessor}{\#define\ IS\_IRQ\_MASKED()\ \ \ \ \ \ \ \ \ \ \ (\_\_get\_PRIMASK()\ !=\ 0U)}}
|
||||
\DoxyCodeLine{00055\ \textcolor{preprocessor}{\#define\ IS\_IRQ\_MODE()\ \ \ \ \ \ \ \ \ \ \ \ \ (\_\_get\_IPSR()\ !=\ 0U)}}
|
||||
\DoxyCodeLine{00056\ \textcolor{preprocessor}{\#define\ IS\_IRQ()\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (IS\_IRQ\_MODE()\ ||\ IS\_IRQ\_MASKED())}}
|
||||
\DoxyCodeLine{00058\ }
|
||||
\DoxyCodeLine{00059\ }
|
||||
\DoxyCodeLine{00060\ }
|
||||
\DoxyCodeLine{00063\ }
|
||||
\DoxyCodeLine{00064\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}}
|
||||
\DoxyCodeLine{00065\ \{}
|
||||
\DoxyCodeLine{00066\ \ \ \ \ UART\_HandleTypeDef\ *huartx;}
|
||||
\DoxyCodeLine{00067\ \ \ \ \ DMA\_HandleTypeDef\ *hdma\_uartx\_rx;}
|
||||
\DoxyCodeLine{00068\ \ \ \ \ }
|
||||
\DoxyCodeLine{00069\ \ \ \ \ GPIO\_TypeDef\ *GPIOx;}
|
||||
\DoxyCodeLine{00070\ \ \ \ \ uint16\_t\ GPIO\_PIN\_RX;}
|
||||
\DoxyCodeLine{00071\ \ \ \ \ uint16\_t\ GPIO\_PIN\_TX;}
|
||||
\DoxyCodeLine{00072\ \ \ \ \ }
|
||||
\DoxyCodeLine{00073\ \ \ \ \ DMA\_Stream\_TypeDef\ *DMAChannel;\ \textcolor{comment}{//\ DMAChannel\ =\ 0\ if\ doesnt\ need}}
|
||||
\DoxyCodeLine{00074\ \ \ \ \ uint32\_t\ DMA\_CHANNEL\_X;\ \textcolor{comment}{//\ DMAChannel\ =\ 0\ if\ doesnt\ need}}
|
||||
\DoxyCodeLine{00075\ \ \ \ \ }
|
||||
\DoxyCodeLine{00076\ \ \ \ \ }
|
||||
\DoxyCodeLine{00077\ \}\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}};}
|
||||
\DoxyCodeLine{00078\ }
|
||||
\DoxyCodeLine{00079\ }
|
||||
\DoxyCodeLine{00080\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/ENUMERATIONS-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00081\ \textcolor{comment}{/*\ Enums\ for\ respond\ CMD\ about\ RS\ status*/}}
|
||||
\DoxyCodeLine{00082\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \ \ \ \ \textcolor{comment}{//\ RS\_StatusTypeDef}}
|
||||
\DoxyCodeLine{00083\ \{}
|
||||
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{comment}{/*\ IN-\/CODE\ STATUS\ (start\ from\ 0x01,\ and\ goes\ up)*/}}
|
||||
\DoxyCodeLine{00085\ \ \ \ \ \textcolor{comment}{/*0x01*/}\ \ \ \ RS\_OK\ =\ 0x01,}
|
||||
\DoxyCodeLine{00086\ \ \ \ \ \textcolor{comment}{/*0x02*/}\ \ \ \ RS\_ERR,\ }
|
||||
\DoxyCodeLine{00087\ \ \ \ \ \textcolor{comment}{/*0x03*/}\ \ \ \ RS\_ABORTED,\ }
|
||||
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{comment}{/*0x04*/}\ \ \ \ RS\_BUSY,}
|
||||
\DoxyCodeLine{00089\ \ \ \ \ }
|
||||
\DoxyCodeLine{00090\ \ \ \ \ \textcolor{comment}{/*0x06*/}\ \ \ \ RS\_COLLECT\_MSG\_ERR,}
|
||||
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{comment}{/*0x07*/}\ \ \ \ RS\_PARSE\_MSG\_ERR,}
|
||||
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{comment}{/*0x01*/}\ \ \ \ RS\_NOT\_MINE\_DATA,}
|
||||
\DoxyCodeLine{00093\ \ \ \ \ }
|
||||
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{comment}{//\ reserved\ values}}
|
||||
\DoxyCodeLine{00095\ \textcolor{comment}{//\ \ /*0x00*/\ \ \ \ RS\_UNKNOWN\_ERR\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0x00,\ //\ reserved\ for\ case,\ if\ no\ one\ error\ founded\ (nothing\ changed\ response\ from\ zero)}}
|
||||
\DoxyCodeLine{00096\ \}RS\_StatusTypeDef;}
|
||||
\DoxyCodeLine{00097\ }
|
||||
\DoxyCodeLine{00098\ }
|
||||
\DoxyCodeLine{00099\ \textcolor{comment}{/*\ Enums\ for\ RS\ Modes\ */}}
|
||||
\DoxyCodeLine{00100\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \textcolor{comment}{//\ RS\_ModeTypeDef}}
|
||||
\DoxyCodeLine{00101\ \{}
|
||||
\DoxyCodeLine{00102\ \ \ \ \ SLAVE\_ALWAYS\_WAIT\ =\ \ \ \ \ \ \ \ \ \ \ \ \ 0x01,\ \ \ \ \ \ \ \textcolor{comment}{//\ Slave\ mode\ with\ infinity\ waiting}}
|
||||
\DoxyCodeLine{00103\ \ \ \ \ SLAVE\_TIMEOUT\_WAIT\ =\ \ \ \ \ \ \ \ \ \ \ \ 0x02,\ \ \ \ \ \ \ \textcolor{comment}{//\ Slave\ mode\ with\ waiting\ with\ timeout}}
|
||||
\DoxyCodeLine{00104\ \textcolor{comment}{//\ \ MASTER\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0x03,\ \ \ \ \ \ \ //\ Master\ mode}}
|
||||
\DoxyCodeLine{00105\ \}RS\_ModeTypeDef;}
|
||||
\DoxyCodeLine{00106\ }
|
||||
\DoxyCodeLine{00107\ \textcolor{comment}{/*\ Enums\ for\ RS\ UART\ Modes\ */}}
|
||||
\DoxyCodeLine{00108\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \textcolor{comment}{//\ RS\_ITModeTypeDef}}
|
||||
\DoxyCodeLine{00109\ \{}
|
||||
\DoxyCodeLine{00110\ \ \ \ \ BLCK\_MODE\ =\ \ \ \ \ \ \ \ \ 0x00,\ \ \ \ \ \ \ \textcolor{comment}{//\ Blocking\ mode}}
|
||||
\DoxyCodeLine{00111\ \ \ \ \ IT\_MODE\ =\ \ \ \ \ \ \ \ \ \ \ 0x01,\ \ \ \ \ \ \ \textcolor{comment}{//\ Interrupt\ mode}}
|
||||
\DoxyCodeLine{00112\ \}RS\_ITModeTypeDef;}
|
||||
\DoxyCodeLine{00113\ }
|
||||
\DoxyCodeLine{00114\ \textcolor{comment}{/*\ Enums\ for\ Response\ modes\ */}}
|
||||
\DoxyCodeLine{00115\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \textcolor{comment}{//\ RS\_RespModeTypeDef}}
|
||||
\DoxyCodeLine{00116\ \{}
|
||||
\DoxyCodeLine{00117\ \ \ \ \ NO\_RESPONSE\ =\ \ \ 0x00,\ \ \ \ \ \ \ \textcolor{comment}{//\ No\ response:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ only\ receive/transmit\ without\ any\ response}}
|
||||
\DoxyCodeLine{00118\ \ \ \ \ SING\_RESPONSE\ =\ 0x01,\ \ \ \ \ \ \ \textcolor{comment}{//\ Single\ response:\ \ \ \ \ \ \ \ \ respond\ once\ after\ receive\ /\ wait\ for\ one\ respond\ after\ transmit}}
|
||||
\DoxyCodeLine{00119\ \ \ \ \ CIRC\_RESPONSE\ =\ 0x02,\ \ \ \ \ \ \ \textcolor{comment}{//\ Circular\ response:\ \ \ }}
|
||||
\DoxyCodeLine{00120\ \textcolor{comment}{//\ IT\_MODE:\ \ \ \ \ Receive\ -\/\ permanent\ receive\ mode\ and\ after\ any\ received\ message\ send\ respond,\ Transmit\ -\/\ same\ as\ in\ Receive,\ but\ it\ start\ with\ Transmit}}
|
||||
\DoxyCodeLine{00121\ \textcolor{comment}{//\ BLCK\_MODE:\ Transmit\ -\/\ transmit\ until\ response\ is\ taken,\ Receive\ -\/\ unused}}
|
||||
\DoxyCodeLine{00122\ \}RS\_RespModeTypeDef;}
|
||||
\DoxyCodeLine{00123\ }
|
||||
\DoxyCodeLine{00124\ \textcolor{comment}{/*\ Enums\ for\ Abort\ modes\ */}}
|
||||
\DoxyCodeLine{00125\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \textcolor{comment}{//\ RS\_AbortTypeDef}}
|
||||
\DoxyCodeLine{00126\ \{}
|
||||
\DoxyCodeLine{00127\ \ \ \ \ ABORT\_TX\ =\ \ \ \ \ \ \ \ \ \ 0x01,\ \ \ \ \ \ \ \textcolor{comment}{//\ Abort\ transmit}}
|
||||
\DoxyCodeLine{00128\ \ \ \ \ ABORT\_RX\ =\ \ \ \ \ \ \ \ \ \ 0x02,\ \ \ \ \ \ \ \textcolor{comment}{//\ Abort\ receive}}
|
||||
\DoxyCodeLine{00129\ \ \ \ \ ABORT\_RX\_TX\ =\ \ \ \ \ \ \ 0x03,\ \ \ \ \ \ \ \textcolor{comment}{//\ Abort\ receive\ and\ transmit}}
|
||||
\DoxyCodeLine{00130\ \ \ \ \ ABORT\_RS\ =\ \ \ \ \ \ \ \ \ \ 0x04,\ \ \ \ \ \ \ \textcolor{comment}{//\ Abort\ uart\ and\ reset\ RS\ structure}}
|
||||
\DoxyCodeLine{00131\ \}RS\_AbortTypeDef;}
|
||||
\DoxyCodeLine{00132\ }
|
||||
\DoxyCodeLine{00133\ \textcolor{comment}{/*\ Enums\ for\ RX\ Size\ modes\ */}}
|
||||
\DoxyCodeLine{00134\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}\ \ \ \ \textcolor{comment}{//\ RS\_RXSizeTypeDef}}
|
||||
\DoxyCodeLine{00135\ \{}
|
||||
\DoxyCodeLine{00136\ \ \ \ \ RS\_RX\_Size\_Const\ =\ \ \ \ \ \ 0x01,\ \ \ \ \ \ \ \textcolor{comment}{//\ size\ of\ receiving\ message\ is\ constant}}
|
||||
\DoxyCodeLine{00137\ \ \ \ \ RS\_RX\_Size\_NotConst\ =\ \ \ 0x02,\ \ \ \ \ \ \ \textcolor{comment}{//\ size\ of\ receiving\ message\ isnt\ constant}}
|
||||
\DoxyCodeLine{00138\ \}RS\_RXSizeTypeDef;}
|
||||
\DoxyCodeLine{00139\ }
|
||||
\DoxyCodeLine{00140\ }
|
||||
\DoxyCodeLine{00141\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/STRUCTURE\ FOR\ HANDLE\ RS-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00146\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ \ }\textcolor{comment}{//\ RS\_HandleTypeDef}}
|
||||
\DoxyCodeLine{00147\ \{\ \ \ \ \ \ \ }
|
||||
\DoxyCodeLine{00148\ \ \ \ \ \textcolor{comment}{/*\ MESSAGE\ */}}
|
||||
\DoxyCodeLine{00149\ \ \ \ \ uint8\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ID;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ ID\ of\ RS\ "{}channel"{}}}
|
||||
\DoxyCodeLine{00150\ \ \ \ \ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *pMessagePtr;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ pointer\ to\ message\ struct}}
|
||||
\DoxyCodeLine{00151\ \ \ \ \ uint8\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *pBufferPtr;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ pointer\ to\ message\ buffer}}
|
||||
\DoxyCodeLine{00152\ \ \ \ \ uint32\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_Message\_Size;\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ size\ of\ whole\ message,\ not\ only\ data}}
|
||||
\DoxyCodeLine{00153\ \ \ \ \ }
|
||||
\DoxyCodeLine{00154\ \ \ \ \ \textcolor{comment}{/*\ HANDLERS\ and\ SETTINGS\ */}}
|
||||
\DoxyCodeLine{00155\ \ \ \ \ UART\_HandleTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ *huartx;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ handler\ for\ used\ uart}}
|
||||
\DoxyCodeLine{00156\ \ \ \ \ TIM\_HandleTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *htimx;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ handler\ for\ used\ tim}}
|
||||
\DoxyCodeLine{00157\ \ \ \ \ RS\_ModeTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sRS\_Mode;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ slave\ or\ master\ @ref\ RS\_ModeTypeDef}}
|
||||
\DoxyCodeLine{00158\ \ \ \ \ RS\_ITModeTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sRS\_IT\_Mode;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ IT\ mode,\ \ \ \ \ 0\ -\/\ Blocking\ mode\ }}
|
||||
\DoxyCodeLine{00159\ \ \ \ \ uint32\_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sRS\_Timeout;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ setting:\ timeout\ in\ ms}}
|
||||
\DoxyCodeLine{00160\ \ \ \ \ RS\_RXSizeTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sRS\_RX\_Size\_Mode;\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ setting:\ 1\ -\/\ not\ const,\ 0\ -\/\ const\ }}
|
||||
\DoxyCodeLine{00161\ \ \ \ \ }
|
||||
\DoxyCodeLine{00162\ \ \ \ \ \textcolor{comment}{/*\ FLAGS\ */}\ \ \ \ \ }
|
||||
\DoxyCodeLine{00163\ \ \ \ \ \textcolor{comment}{//\ These\ flags\ for\ controling\ receive/transmit}}
|
||||
\DoxyCodeLine{00164\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fRX\_Half:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 0\ -\/\ receiving\ msg\ before\ ByteCnt,\ \ \ \ 0\ -\/\ receiving\ msg\ after\ ByteCnt}}
|
||||
\DoxyCodeLine{00165\ \ \ \ \ }
|
||||
\DoxyCodeLine{00166\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fRS\_Busy:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ RS\ is\ busy,\ 0\ -\/\ RS\ isnt\ busy\ \ \ \ \ }}
|
||||
\DoxyCodeLine{00167\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fRX\_Busy:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ receiving\ is\ active,\ \ \ \ \ 0\ -\/\ receiving\ isnt\ active}}
|
||||
\DoxyCodeLine{00168\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fTX\_Busy:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ transmiting\ is\ active,\ 0\ -\/\ transmiting\ isnt\ active\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }}
|
||||
\DoxyCodeLine{00169\ \ \ \ \ }
|
||||
\DoxyCodeLine{00170\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fRX\_Done:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ receiving\ is\ done,\ 0\ -\/\ receiving\ isnt\ done\ \ \ }}
|
||||
\DoxyCodeLine{00171\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fTX\_Done:1;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ transmiting\ is\ done,\ 0\ -\/\ transmiting\ isnt\ done\ \ \ }}
|
||||
\DoxyCodeLine{00172\ \ \ \ \ \ \ \ \ }
|
||||
\DoxyCodeLine{00173\ \ \ \ \ \textcolor{comment}{//\ setted\ by\ user}}
|
||||
\DoxyCodeLine{00174\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fMessageHandled:1;\ \ \ \ \ \ \textcolor{comment}{//\ 1\ -\/\ RS\ command\ is\ handled,\ 0\ -\/\ RS\ command\ isnt\ handled\ yet}}
|
||||
\DoxyCodeLine{00175\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fEchoResponse:1;\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ 0\ -\/\ receiving\ msg\ before\ ByteCnt,\ \ \ \ 0\ -\/\ receiving\ msg\ after\ ByteCnt}}
|
||||
\DoxyCodeLine{00176\ \ \ \ \ \textcolor{keywordtype}{unsigned}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fDeferredResponse:1;\ \ \ \ \textcolor{comment}{//\ 0\ -\/\ receiving\ msg\ before\ ByteCnt,\ \ \ \ 0\ -\/\ receiving\ msg\ after\ ByteCnt}}
|
||||
\DoxyCodeLine{00177\ \ \ \ \ }
|
||||
\DoxyCodeLine{00178\ \ \ \ \ \textcolor{comment}{/*\ RS\ STATUS\ */}}
|
||||
\DoxyCodeLine{00179\ \ \ \ \ RS\_StatusTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_STATUS;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ RS\ status}}
|
||||
\DoxyCodeLine{00180\ \ \ \ \ RS\_FunctonTypeDef\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\_RESPONSE;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ RS\ response}}
|
||||
\DoxyCodeLine{00181\ \}\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}};}
|
||||
\DoxyCodeLine{00182\ }
|
||||
\DoxyCodeLine{00183\ }
|
||||
\DoxyCodeLine{00185\ }
|
||||
\DoxyCodeLine{00186\ }
|
||||
\DoxyCodeLine{00187\ }
|
||||
\DoxyCodeLine{00188\ }
|
||||
\DoxyCodeLine{00189\ }
|
||||
\DoxyCodeLine{00190\ }
|
||||
\DoxyCodeLine{00191\ }
|
||||
\DoxyCodeLine{00192\ }
|
||||
\DoxyCodeLine{00193\ }
|
||||
\DoxyCodeLine{00194\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/FUNCTIONS\ FOR\ PROCESSING\ MESSAGE-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00195\ \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/Defined\ by\ users\ purposes-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
|
||||
\DoxyCodeLine{00203\ RS\_StatusTypeDef\ RS\_Response(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg);}
|
||||
\DoxyCodeLine{00204\ }
|
||||
\DoxyCodeLine{00213\ RS\_StatusTypeDef\ Collect\_Message(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg,\ uint8\_t\ *msg\_uart\_buff);}
|
||||
\DoxyCodeLine{00214\ }
|
||||
\DoxyCodeLine{00223\ RS\_StatusTypeDef\ Parse\_Message(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg,\ uint8\_t\ *msg\_uart\_buff);}
|
||||
\DoxyCodeLine{00224\ }
|
||||
\DoxyCodeLine{00232\ RS\_StatusTypeDef\ RS\_Define\_Size\_of\_RX\_Message(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ uint32\_t\ *rx\_data\_size);}
|
||||
\DoxyCodeLine{00233\ }
|
||||
\DoxyCodeLine{00234\ }
|
||||
\DoxyCodeLine{00235\ \textcolor{comment}{/*\ MORE\ USER\ FUNCTION\ BEGIN*/}}
|
||||
\DoxyCodeLine{00236\ \textcolor{comment}{/*\ MORE\ USER\ FUNCTION\ END*/}}
|
||||
\DoxyCodeLine{00237\ }
|
||||
\DoxyCodeLine{00238\ }
|
||||
\DoxyCodeLine{00239\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/GENERAL\ FUNCTIONS-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00240\ \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/Should\ be\ called\ from\ main\ code-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
|
||||
\DoxyCodeLine{00248\ RS\_StatusTypeDef\ RS\_Receive\_IT(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg);}
|
||||
\DoxyCodeLine{00249\ }
|
||||
\DoxyCodeLine{00257\ RS\_StatusTypeDef\ RS\_Transmit\_IT(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg);}
|
||||
\DoxyCodeLine{00258\ }
|
||||
\DoxyCodeLine{00268\ RS\_StatusTypeDef\ RS\_Init(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}}\ *suart,\ \mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\_SettingsTypeDef}}\ *stim,\ uint8\_t\ *pRS\_BufferPtr);}
|
||||
\DoxyCodeLine{00269\ }
|
||||
\DoxyCodeLine{00283\ RS\_StatusTypeDef\ RS\_Abort(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ RS\_AbortTypeDef\ AbortMode);}
|
||||
\DoxyCodeLine{00284\ }
|
||||
\DoxyCodeLine{00285\ \textcolor{comment}{//-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/SUPPORT\ FUNCTIONS-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
|
||||
\DoxyCodeLine{00286\ \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/Called\ from\ General\ functions-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
|
||||
\DoxyCodeLine{00294\ RS\_StatusTypeDef\ RS\_Handle\_Receive\_Start(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg);}
|
||||
\DoxyCodeLine{00302\ RS\_StatusTypeDef\ RS\_Handle\_Transmit\_Start(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS,\ \mbox{\hyperlink{struct_r_s___msg_type_def}{RS\_MsgTypeDef}}\ *RS\_msg);}
|
||||
\DoxyCodeLine{00303\ \textcolor{comment}{/*\ UART\ RX\ Callback:\ define\ behaviour\ after\ receiving\ message\ */}}
|
||||
\DoxyCodeLine{00304\ RS\_StatusTypeDef\ RS\_UART\_RxCpltCallback(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS);}
|
||||
\DoxyCodeLine{00305\ \textcolor{comment}{/*\ UART\ RX\ Callback:\ define\ behaviour\ after\ transmiting\ message\ */}}
|
||||
\DoxyCodeLine{00306\ RS\_StatusTypeDef\ RS\_UART\_TxCpltCallback(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS);}
|
||||
\DoxyCodeLine{00307\ \textcolor{comment}{/*\ Handler\ for\ UART\ */}}
|
||||
\DoxyCodeLine{00308\ \textcolor{keywordtype}{void}\ RS\_UART\_Handler(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS);}
|
||||
\DoxyCodeLine{00309\ \textcolor{comment}{/*\ Handler\ for\ TIM\ */}}
|
||||
\DoxyCodeLine{00310\ \textcolor{keywordtype}{void}\ RS\_TIM\_Handler(\mbox{\hyperlink{struct_r_s___handle_type_def}{RS\_HandleTypeDef}}\ *hRS);}
|
||||
\DoxyCodeLine{00311\ }
|
||||
\DoxyCodeLine{00312\ }
|
||||
\DoxyCodeLine{00313\ }
|
||||
\DoxyCodeLine{00314\ }
|
||||
\DoxyCodeLine{00315\ }
|
||||
\DoxyCodeLine{00316\ }
|
||||
\DoxyCodeLine{00317\ HAL\_StatusTypeDef\ RS\_UART\_Init(\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}}\ *suart);}
|
||||
\DoxyCodeLine{00318\ \textcolor{keywordtype}{void}\ UART\_GPIO\_Init(GPIO\_TypeDef\ *GPIOx,\ uint16\_t\ GPIO\_PIN\_RX,\ uint16\_t\ GPIO\_PIN\_TX);}
|
||||
\DoxyCodeLine{00319\ \textcolor{keywordtype}{void}\ UART\_DMA\_Init(UART\_HandleTypeDef\ *huart,\ DMA\_HandleTypeDef\ *hdma\_rx,\ DMA\_Stream\_TypeDef\ *DMAChannel,\ uint32\_t\ DMA\_CHANNEL\_X);}
|
||||
\DoxyCodeLine{00320\ \textcolor{keywordtype}{void}\ User\_UART\_MspInit(UART\_HandleTypeDef\ *huart);}
|
||||
\DoxyCodeLine{00321\ }
|
||||
\DoxyCodeLine{00322\ HAL\_StatusTypeDef\ User\_UART\_Check(\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}}\ *suart);}
|
||||
\DoxyCodeLine{00323\ }
|
||||
\DoxyCodeLine{00324\ \textcolor{preprocessor}{\#define\ \_\_USER\_LINKDMA(\_\_HANDLE\_\_,\ \_\_PPP\_DMA\_FIELD\_\_,\ \_\_DMA\_HANDLE\_\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
|
||||
\DoxyCodeLine{00325\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ do\{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
|
||||
\DoxyCodeLine{00326\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_\_HANDLE\_\_)-\/>\_\_PPP\_DMA\_FIELD\_\_\ =\ (\_\_DMA\_HANDLE\_\_);\ \(\backslash\)}}
|
||||
\DoxyCodeLine{00327\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\_\_DMA\_HANDLE\_\_)-\/>Parent\ =\ (\_\_HANDLE\_\_);\}\ while(0U)}}
|
||||
\DoxyCodeLine{00328\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
|
||||
\DoxyCodeLine{00329\ }
|
||||
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
|
||||
\DoxyCodeLine{00331\ }
|
||||
\DoxyCodeLine{00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_UART\_USER\_H\_}}
|
||||
|
||||
\end{DoxyCode}
|
||||
@@ -0,0 +1,90 @@
|
||||
\doxysection{RS\+\_\+\+Handle\+Type\+Def Struct Reference}
|
||||
\hypertarget{struct_r_s___handle_type_def}{}\label{struct_r_s___handle_type_def}\index{RS\_HandleTypeDef@{RS\_HandleTypeDef}}
|
||||
|
||||
|
||||
Handle for RS communication.
|
||||
|
||||
|
||||
|
||||
|
||||
{\ttfamily \#include $<$rs\+\_\+message.\+h$>$}
|
||||
|
||||
\doxysubsubsection*{Data Fields}
|
||||
\begin{DoxyCompactItemize}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_ae05e4021c05cb62085215a5b3d03c0bc}\label{struct_r_s___handle_type_def_ae05e4021c05cb62085215a5b3d03c0bc}
|
||||
uint8\+\_\+t {\bfseries ID}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a88ae0a4f03c2dcacd81b52096623d889}\label{struct_r_s___handle_type_def_a88ae0a4f03c2dcacd81b52096623d889}
|
||||
\mbox{\hyperlink{struct_r_s___msg_type_def}{RS\+\_\+\+Msg\+Type\+Def}} \texorpdfstring{$\ast$}{*} {\bfseries p\+Message\+Ptr}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a669517eccd963ae4f9d2d577e2d0934f}\label{struct_r_s___handle_type_def_a669517eccd963ae4f9d2d577e2d0934f}
|
||||
uint8\+\_\+t \texorpdfstring{$\ast$}{*} {\bfseries p\+Buffer\+Ptr}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a16caf9f00c09a4d54890da6e4fc4274b}\label{struct_r_s___handle_type_def_a16caf9f00c09a4d54890da6e4fc4274b}
|
||||
uint32\+\_\+t {\bfseries RS\+\_\+\+Message\+\_\+\+Size}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a0e36e9b1b63956cd293971aed1093181}\label{struct_r_s___handle_type_def_a0e36e9b1b63956cd293971aed1093181}
|
||||
UART\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries huartx}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a910371de958804a12d90272976015b91}\label{struct_r_s___handle_type_def_a910371de958804a12d90272976015b91}
|
||||
TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries htimx}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a5a3d42cab7d7603dc8d31be5c8645e02}\label{struct_r_s___handle_type_def_a5a3d42cab7d7603dc8d31be5c8645e02}
|
||||
RS\+\_\+\+Mode\+Type\+Def {\bfseries s\+RS\+\_\+\+Mode}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a95952089da1c4c2eef20380db162bb77}\label{struct_r_s___handle_type_def_a95952089da1c4c2eef20380db162bb77}
|
||||
RS\+\_\+\+ITMode\+Type\+Def {\bfseries s\+RS\+\_\+\+IT\+\_\+\+Mode}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_adc5c4a4075d22fc7cdd538d284c45158}\label{struct_r_s___handle_type_def_adc5c4a4075d22fc7cdd538d284c45158}
|
||||
uint32\+\_\+t {\bfseries s\+RS\+\_\+\+Timeout}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a08481653f3280f5486083bd696598634}\label{struct_r_s___handle_type_def_a08481653f3280f5486083bd696598634}
|
||||
RS\+\_\+\+RXSize\+Type\+Def {\bfseries s\+RS\+\_\+\+RX\+\_\+\+Size\+\_\+\+Mode}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a0ab58800ad233c8d78c3f5bd84d5dd05}\label{struct_r_s___handle_type_def_a0ab58800ad233c8d78c3f5bd84d5dd05}
|
||||
unsigned {\bfseries f\+RX\+\_\+\+Half}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a9e1f372e541cf388be0c52d47bb80cb8}\label{struct_r_s___handle_type_def_a9e1f372e541cf388be0c52d47bb80cb8}
|
||||
unsigned {\bfseries f\+RS\+\_\+\+Busy}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a947a1fe0d91ba0395187d18a14b505fb}\label{struct_r_s___handle_type_def_a947a1fe0d91ba0395187d18a14b505fb}
|
||||
unsigned {\bfseries f\+RX\+\_\+\+Busy}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a24ccf83bfa9917253d2ff36cc312df27}\label{struct_r_s___handle_type_def_a24ccf83bfa9917253d2ff36cc312df27}
|
||||
unsigned {\bfseries f\+TX\+\_\+\+Busy}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_ae79c8a604d2842548e685fce1635040c}\label{struct_r_s___handle_type_def_ae79c8a604d2842548e685fce1635040c}
|
||||
unsigned {\bfseries f\+RX\+\_\+\+Done}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a5b45936c5266e15b9daa67cbd1480706}\label{struct_r_s___handle_type_def_a5b45936c5266e15b9daa67cbd1480706}
|
||||
unsigned {\bfseries f\+TX\+\_\+\+Done}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a6909a2ee1bb3513505bbd4984ff591b5}\label{struct_r_s___handle_type_def_a6909a2ee1bb3513505bbd4984ff591b5}
|
||||
unsigned {\bfseries f\+Message\+Handled}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_aec772d6a0db85220c5db8634ddf16120}\label{struct_r_s___handle_type_def_aec772d6a0db85220c5db8634ddf16120}
|
||||
unsigned {\bfseries f\+Echo\+Response}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a0c3c3aee0342b80b75a782aec6d46c2e}\label{struct_r_s___handle_type_def_a0c3c3aee0342b80b75a782aec6d46c2e}
|
||||
unsigned {\bfseries f\+Deferred\+Response}\+:1
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_a81db00ae327dbd10d04207c3db186fbf}\label{struct_r_s___handle_type_def_a81db00ae327dbd10d04207c3db186fbf}
|
||||
RS\+\_\+\+Status\+Type\+Def {\bfseries RS\+\_\+\+STATUS}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___handle_type_def_ac5e044058c7c85e15623836e8e832057}\label{struct_r_s___handle_type_def_ac5e044058c7c85e15623836e8e832057}
|
||||
RS\+\_\+\+Functon\+Type\+Def {\bfseries RS\+\_\+\+RESPONSE}
|
||||
\end{DoxyCompactItemize}
|
||||
|
||||
|
||||
\doxysubsection{Detailed Description}
|
||||
Handle for RS communication.
|
||||
|
||||
\begin{DoxyNote}{Note}
|
||||
Prefixes\+: h -\/ handle, s -\/ settings, f -\/ flag
|
||||
\end{DoxyNote}
|
||||
|
||||
|
||||
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
|
||||
\item
|
||||
rs\+\_\+message.\+h\end{DoxyCompactItemize}
|
||||
@@ -0,0 +1,34 @@
|
||||
\doxysection{RS\+\_\+\+Msg\+Type\+Def Struct Reference}
|
||||
\hypertarget{struct_r_s___msg_type_def}{}\label{struct_r_s___msg_type_def}\index{RS\_MsgTypeDef@{RS\_MsgTypeDef}}
|
||||
\doxysubsubsection*{Data Fields}
|
||||
\begin{DoxyCompactItemize}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_a6186caa23a7d17866abb7d27cb8d9b13}\label{struct_r_s___msg_type_def_a6186caa23a7d17866abb7d27cb8d9b13}
|
||||
uint8\+\_\+t {\bfseries Mb\+Addr}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_a49661162da2af9d2e939dfd8ccec633b}\label{struct_r_s___msg_type_def_a49661162da2af9d2e939dfd8ccec633b}
|
||||
RS\+\_\+\+Functon\+Type\+Def {\bfseries Func\+\_\+\+Code}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_ac2fbbe9d6ed859cacb2928626be8f70d}\label{struct_r_s___msg_type_def_ac2fbbe9d6ed859cacb2928626be8f70d}
|
||||
uint8\+\_\+t {\bfseries Except\+\_\+\+Code}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_aba418f23e6ab48bb7fe6ff160373d10f}\label{struct_r_s___msg_type_def_aba418f23e6ab48bb7fe6ff160373d10f}
|
||||
uint16\+\_\+t {\bfseries Addr}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_aab19fca65df39b3dfc1161bf1abd2530}\label{struct_r_s___msg_type_def_aab19fca65df39b3dfc1161bf1abd2530}
|
||||
uint16\+\_\+t {\bfseries Qnt}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_a98b3d756f2da2ddac397749bee665e60}\label{struct_r_s___msg_type_def_a98b3d756f2da2ddac397749bee665e60}
|
||||
uint8\+\_\+t {\bfseries Byte\+Cnt}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_af808c7dd6b4ba12cf5e106f027cf324c}\label{struct_r_s___msg_type_def_af808c7dd6b4ba12cf5e106f027cf324c}
|
||||
uint16\+\_\+t {\bfseries DATA} \mbox{[}DATA\+\_\+\+MAX\+\_\+\+SIZE\mbox{]}
|
||||
\item
|
||||
\Hypertarget{struct_r_s___msg_type_def_ab36aadc5b220463d41e442a39f3f13e8}\label{struct_r_s___msg_type_def_ab36aadc5b220463d41e442a39f3f13e8}
|
||||
uint16\+\_\+t {\bfseries MB\+\_\+\+CRC}
|
||||
\end{DoxyCompactItemize}
|
||||
|
||||
|
||||
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
|
||||
\item
|
||||
modbus.\+h\end{DoxyCompactItemize}
|
||||
@@ -0,0 +1,16 @@
|
||||
\doxysection{TIM\+\_\+\+Settings\+Type\+Def Struct Reference}
|
||||
\hypertarget{struct_t_i_m___settings_type_def}{}\label{struct_t_i_m___settings_type_def}\index{TIM\_SettingsTypeDef@{TIM\_SettingsTypeDef}}
|
||||
\doxysubsubsection*{Data Fields}
|
||||
\begin{DoxyCompactItemize}
|
||||
\item
|
||||
\Hypertarget{struct_t_i_m___settings_type_def_a910371de958804a12d90272976015b91}\label{struct_t_i_m___settings_type_def_a910371de958804a12d90272976015b91}
|
||||
TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries htimx}
|
||||
\item
|
||||
\Hypertarget{struct_t_i_m___settings_type_def_a8d6c153e149fb61b28a4eb94f1e6a939}\label{struct_t_i_m___settings_type_def_a8d6c153e149fb61b28a4eb94f1e6a939}
|
||||
TIM\+\_\+\+ITMode\+Type\+Def {\bfseries TIM\+\_\+\+IT\+\_\+\+MODE}\+:1
|
||||
\end{DoxyCompactItemize}
|
||||
|
||||
|
||||
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
|
||||
\item
|
||||
tim\+\_\+general.\+h\end{DoxyCompactItemize}
|
||||
@@ -0,0 +1,31 @@
|
||||
\doxysection{UART\+\_\+\+Settings\+Type\+Def Struct Reference}
|
||||
\hypertarget{struct_u_a_r_t___settings_type_def}{}\label{struct_u_a_r_t___settings_type_def}\index{UART\_SettingsTypeDef@{UART\_SettingsTypeDef}}
|
||||
\doxysubsubsection*{Data Fields}
|
||||
\begin{DoxyCompactItemize}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a0e36e9b1b63956cd293971aed1093181}\label{struct_u_a_r_t___settings_type_def_a0e36e9b1b63956cd293971aed1093181}
|
||||
UART\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries huartx}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a2320e05e7b39955a916a627a7a27a332}\label{struct_u_a_r_t___settings_type_def_a2320e05e7b39955a916a627a7a27a332}
|
||||
DMA\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries hdma\+\_\+uartx\+\_\+rx}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a1cb502d7339fa12f24109da591102eb2}\label{struct_u_a_r_t___settings_type_def_a1cb502d7339fa12f24109da591102eb2}
|
||||
GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries GPIOx}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_abaeeb4afab801fd79f4ec7d2a5dea905}\label{struct_u_a_r_t___settings_type_def_abaeeb4afab801fd79f4ec7d2a5dea905}
|
||||
uint16\+\_\+t {\bfseries GPIO\+\_\+\+PIN\+\_\+\+RX}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a94c85d6469c4e147ad9eb64c90c65361}\label{struct_u_a_r_t___settings_type_def_a94c85d6469c4e147ad9eb64c90c65361}
|
||||
uint16\+\_\+t {\bfseries GPIO\+\_\+\+PIN\+\_\+\+TX}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a33f6f0ee5f51c9743f371c9f0cd150cd}\label{struct_u_a_r_t___settings_type_def_a33f6f0ee5f51c9743f371c9f0cd150cd}
|
||||
DMA\+\_\+\+Stream\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*} {\bfseries DMAChannel}
|
||||
\item
|
||||
\Hypertarget{struct_u_a_r_t___settings_type_def_a368dd11dde59368be144107b6027e892}\label{struct_u_a_r_t___settings_type_def_a368dd11dde59368be144107b6027e892}
|
||||
uint32\+\_\+t {\bfseries DMA\+\_\+\+CHANNEL\+\_\+X}
|
||||
\end{DoxyCompactItemize}
|
||||
|
||||
|
||||
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
|
||||
\item
|
||||
rs\+\_\+message.\+h\end{DoxyCompactItemize}
|
||||
2557
научка/code/pwm_motor_control/Modbus/latex/tabu_doxygen.sty
Normal file
2557
научка/code/pwm_motor_control/Modbus/latex/tabu_doxygen.sty
Normal file
@@ -0,0 +1,2557 @@
|
||||
%%
|
||||
%% 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 <dimen>{ preamble } => target specified
|
||||
%% \begin{tabu} spread <dimen>{ 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=<dimen> \extrarowdepth=<dimen>
|
||||
%% or: \extrarowsep=<dimen> => may be prefixed by \global
|
||||
%%
|
||||
%% Dynamic vertical spacing adjustment:
|
||||
%% \abovetabulinesep=<dimen> \belowtabulinesep=<dimen>
|
||||
%% or: \tabulinesep=<dimen> => 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 <florent.chervet@free.fr>
|
||||
%%
|
||||
|
||||
\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 % <babel>
|
||||
@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 % <babel>
|
||||
@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 % <leaders>
|
||||
\else \in@false % <rule>
|
||||
\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 % <For LyX: some users redefine \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 % <nested tabu>
|
||||
\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 %<restore \\=\@normalcr inside lists>
|
||||
\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 % <fix> 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 % <init>
|
||||
\let\tabu@drsc@Gsave \tabu@drsc@G
|
||||
\let\tabu@drsc@G \tabu@drsc@L % <init>
|
||||
\let\tabu@ls@Gsave \tabu@ls@G
|
||||
\let\tabu@ls@G \tabu@ls@L % <init>
|
||||
\let\tabu@rc@Gsave \tabu@rc@G
|
||||
\let\tabu@rc@G \tabu@rc@L % <init>
|
||||
\let\tabu@evr@Gsave \tabu@evr@G
|
||||
\let\tabu@evr@G \tabu@evr@L % <init>
|
||||
\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 % <end of \globaldefs>
|
||||
\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\\% <shortcut when no option>
|
||||
\def\tabu@rewritten{p}\tabucolX \p@ % <default coef = 1>
|
||||
\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 % <the whole implementation is here !>
|
||||
\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 % <siunitx S and s columns>
|
||||
\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 <original>
|
||||
\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 % <trials group>
|
||||
\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{% <arydshln in nested trials - problem for global column counters!>
|
||||
\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 % <for ialign>
|
||||
}% \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 % <incompressible material>
|
||||
\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 % <got my \tabu@box>
|
||||
\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 % <got my \tabu@box>
|
||||
\@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{% <local in \noalign>
|
||||
\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{% <local in \noalign>
|
||||
\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% <original definition (if fancyvrb is loaded)>
|
||||
\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}% <for \tabu@message@save>
|
||||
\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@ % <first initialisation>
|
||||
\@tempcnta \@M % <not initialized by array.sty>
|
||||
\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 % <only once>
|
||||
\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 % <colortbl + arydshln>
|
||||
\def\tabu@endarray{%
|
||||
\adl@endarray \egroup \adl@arrayrestore \CT@end \egroup %<original>
|
||||
\@arrayright % <FC>
|
||||
\gdef\@preamble{}}% <FC>
|
||||
\else % <colortbl / no arydshln>
|
||||
\def\tabu@endarray{%
|
||||
\crcr \egroup \egroup %<original>
|
||||
\@arrayright % <FC>
|
||||
\gdef\@preamble{}\CT@end}%
|
||||
\fi
|
||||
\else
|
||||
\ifdefined\adl@array % <arydshln / no colortbl>
|
||||
\def\tabu@endarray{%
|
||||
\adl@endarray \egroup \adl@arrayrestore \egroup %<original>
|
||||
\@arrayright % <FC>
|
||||
\gdef\@preamble{}}% <FC>
|
||||
\else % <no arydshln / no colotbl + \@arrayright missing>
|
||||
\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 % <FC> @-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 % <fix> arydshln
|
||||
\let\adl@act@endpbox \tabu@adl@act@endpbox % <fix> arydshln
|
||||
\let\adl@act@@endpbox \tabu@adl@act@endpbox % <fix> arydshln
|
||||
\let\@preamerror \@preamerr % <fix> 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 % <colortbl>
|
||||
\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 % <siunitx: ok>
|
||||
\expandafter\ifx
|
||||
\csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax
|
||||
\tabu@siunitxtrue
|
||||
\else \let\tabu@maybesiunitx \@firstofone % <not siunitx: setup>
|
||||
\let\tabu@siunitx \tabu@nosiunitx
|
||||
\tabu@siunitxfalse
|
||||
\fi
|
||||
\ifdefined\adl@array % <arydshln>
|
||||
\else \let\tabu@adl@fix \relax
|
||||
\let\tabu@adl@endtrial \@empty \fi
|
||||
\ifdefined\longtable % <longtable>
|
||||
\else \let\longtabu \tabu@nolongtabu \fi
|
||||
\ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi
|
||||
\csname\ifcsname ifHy@hyperfootnotes\endcsname % <hyperfootnotes>
|
||||
ifHy@hyperfootnotes\else iffalse\fi\endcsname
|
||||
\let\tabu@footnotetext \tabu@Hy@ftntext
|
||||
\let\tabu@xfootnote \tabu@Hy@xfootnote \fi
|
||||
\ifdefined\FV@DefineCheckEnd% <fancyvrb>
|
||||
\tabu@fancyvrb \fi
|
||||
\ifdefined\color % <color / xcolor>
|
||||
\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 % <ragged2e>
|
||||
\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% <fix for colortbl & arydshln (delarray)>
|
||||
\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 % <init>
|
||||
\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 % <pdfTeX>
|
||||
\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'.
|
||||
@@ -0,0 +1,59 @@
|
||||
\doxysection{tim\+\_\+general.\+h}
|
||||
\hypertarget{tim__general_8h_source}{}\label{tim__general_8h_source}
|
||||
\begin{DoxyCode}{0}
|
||||
\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ \_\_TIM\_USER\_H\_}}
|
||||
\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ \_\_TIM\_USER\_H\_}}
|
||||
\DoxyCodeLine{00003\ }
|
||||
\DoxyCodeLine{00004\ }
|
||||
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#define\ HAL\_TIM\_MODULE\_ENABLED\ }\textcolor{comment}{//\ need\ to\ uncomment\ this\ define\ in\ stm32f4xx\_hal\_conf.h}}
|
||||
\DoxyCodeLine{00008\ }
|
||||
\DoxyCodeLine{00009\ \textcolor{comment}{//\#define\ USE\_TIM1}}
|
||||
\DoxyCodeLine{00010\ \textcolor{comment}{//\#define\ USE\_TIM2}}
|
||||
\DoxyCodeLine{00011\ \textcolor{comment}{//\#define\ USE\_TIM3}}
|
||||
\DoxyCodeLine{00012\ \textcolor{comment}{//\#define\ USE\_TIM4}}
|
||||
\DoxyCodeLine{00013\ \textcolor{comment}{//\#define\ USE\_TIM5}}
|
||||
\DoxyCodeLine{00014\ \textcolor{comment}{//\#define\ USE\_TIM6}}
|
||||
\DoxyCodeLine{00015\ \textcolor{comment}{//\#define\ USE\_TIM7}}
|
||||
\DoxyCodeLine{00016\ \textcolor{comment}{//\#define\ USE\_TIM8}}
|
||||
\DoxyCodeLine{00017\ \textcolor{comment}{//\#define\ USE\_TIM9}}
|
||||
\DoxyCodeLine{00018\ \textcolor{comment}{//\#define\ USE\_TIM10}}
|
||||
\DoxyCodeLine{00019\ \textcolor{comment}{//\#define\ USE\_TIM11}}
|
||||
\DoxyCodeLine{00020\ \textcolor{comment}{//\#define\ USE\_TIM12}}
|
||||
\DoxyCodeLine{00021\ \textcolor{comment}{//\#define\ USE\_TIM13}}
|
||||
\DoxyCodeLine{00022\ \textcolor{comment}{//\#define\ USE\_TIM14}}
|
||||
\DoxyCodeLine{00023\ \textcolor{comment}{/*\ note:\ used\ uart\ defines\ in\ modbus.h\ */}}
|
||||
\DoxyCodeLine{00024\ \textcolor{preprocessor}{\#include\ "{}modbus.h"{}}\ }
|
||||
\DoxyCodeLine{00025\ }
|
||||
\DoxyCodeLine{00027\ \textcolor{preprocessor}{\#include\ "{}stm32f4xx\_hal.h"{}}}
|
||||
\DoxyCodeLine{00028\ }
|
||||
\DoxyCodeLine{00029\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{enum}}
|
||||
\DoxyCodeLine{00030\ \{}
|
||||
\DoxyCodeLine{00031\ \ \ \ \ TIM\_IT\_DISABLE\ =\ 0x00,}
|
||||
\DoxyCodeLine{00032\ \ \ \ \ TIM\_IT\_ENABLE\ =\ 0x01,}
|
||||
\DoxyCodeLine{00033\ \}TIM\_ITModeTypeDef;}
|
||||
\DoxyCodeLine{00034\ }
|
||||
\DoxyCodeLine{00035\ }
|
||||
\DoxyCodeLine{00036\ \textcolor{comment}{//typedef\ enum}}
|
||||
\DoxyCodeLine{00037\ \textcolor{comment}{//\{}}
|
||||
\DoxyCodeLine{00038\ \textcolor{comment}{//\ \ TIM\_1MS\_BASE\ =\ 0xFFFF,}}
|
||||
\DoxyCodeLine{00039\ \textcolor{comment}{//\ \ TIM\_1US\_BASE\ =\ 0xFFFF-\/1,}}
|
||||
\DoxyCodeLine{00040\ \textcolor{comment}{//\}TIM\_TickBaseTypeDef;}}
|
||||
\DoxyCodeLine{00041\ }
|
||||
\DoxyCodeLine{00042\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}}
|
||||
\DoxyCodeLine{00043\ \{}
|
||||
\DoxyCodeLine{00044\ \ \ \ \ TIM\_HandleTypeDef\ *htimx;}
|
||||
\DoxyCodeLine{00045\ \ \ \ \ }
|
||||
\DoxyCodeLine{00046\ \textcolor{comment}{//\ \ TIM\_TickBaseTypeDef\ TickBase;}}
|
||||
\DoxyCodeLine{00047\ \textcolor{comment}{//\ \ TIM\_TickBaseTypeDef\ TimPeriod;}}
|
||||
\DoxyCodeLine{00048\ \ \ \ \ }
|
||||
\DoxyCodeLine{00049\ \ \ \ \ TIM\_ITModeTypeDef\ \ \ TIM\_IT\_MODE:1;}
|
||||
\DoxyCodeLine{00050\ \ \ \ \ }
|
||||
\DoxyCodeLine{00051\ \}\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\_SettingsTypeDef}};}
|
||||
\DoxyCodeLine{00052\ }
|
||||
\DoxyCodeLine{00053\ HAL\_StatusTypeDef\ User\_TIM\_Init(\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\_SettingsTypeDef}}*\ stim);}
|
||||
\DoxyCodeLine{00054\ \textcolor{keywordtype}{void}\ User\_TIM\_Base\_MspInit(TIM\_HandleTypeDef*\ htim,\ TIM\_ITModeTypeDef\ it\_mode);}
|
||||
\DoxyCodeLine{00055\ }
|
||||
\DoxyCodeLine{00056\ }
|
||||
\DoxyCodeLine{00057\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_TIM\_BOOT\_H}}
|
||||
|
||||
\end{DoxyCode}
|
||||
Reference in New Issue
Block a user