diff options
author | Karl Berry <karl@freefriends.org> | 2021-11-04 20:42:24 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-11-04 20:42:24 +0000 |
commit | be1ce1d52289cd50b0dcfdbbdcbd226aa825cecc (patch) | |
tree | ba2f6786d9e2f46cb2daff27f5420239e1026be4 | |
parent | 5756ebdeaa806b197873eee270569830f8f0ce60 (diff) |
srdp-mathematik (4nov21)
git-svn-id: svn://tug.org/texlive/trunk@60951 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/srdp-mathematik/README.txt | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.pdf | bin | 176727 -> 42330 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.tex | 2042 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty | 39 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/srdp-mathematik/srdp-tables.sty | 2491 |
5 files changed, 3535 insertions, 1041 deletions
diff --git a/Master/texmf-dist/doc/latex/srdp-mathematik/README.txt b/Master/texmf-dist/doc/latex/srdp-mathematik/README.txt index af803dd1eb6..3990c159a19 100644 --- a/Master/texmf-dist/doc/latex/srdp-mathematik/README.txt +++ b/Master/texmf-dist/doc/latex/srdp-mathematik/README.txt @@ -2,9 +2,9 @@ __________________________________ The srdp-mathematik package - v1.9.0 + v1.9.1 - 2021/03/29 + 2021/11/04 ___________________________________ Maintainer: Christoph Weberndorfer diff --git a/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.pdf b/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.pdf Binary files differindex 81b5cbc4494..d929c29c1dd 100644 --- a/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.pdf +++ b/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.pdf diff --git a/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.tex b/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.tex index 1df75d3560c..582be22a653 100644 --- a/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.tex +++ b/Master/texmf-dist/doc/latex/srdp-mathematik/srdp-mathematik.tex @@ -55,7 +55,7 @@ hidelinks \vfill -\Huge The \textit{srdp-mathematik} package v1.9.0\\[1cm] +\Huge The \textit{srdp-mathematik} package v1.9.1\\[1cm] Documentation \\ [1cm] @@ -120,112 +120,62 @@ In diesen Bereich kommt das Beispiel. Dabei kann ein beliebig langer Text (ohne Seitenumbruch) geschrieben werden. Die Spalte mit den Punkten wird dabei immer frei gehalten. Aber auch mathematische Formeln sind möglich: $\frac{x^2+x+5}{\sqrt{x^3}}$ - - \end{beispiel} - - -\vspace{1cm} - -\subsubsection{\texttt{\textbackslash begin\{langesbeispiel\} \ldots\ \textbackslash end\{langesbeispiel\}}} - -Die \texttt{langesbeispiel}-Umgebung dient ebenso zur Erstellung eines Beispiels, funktioniert analog, erlaubt aber im Gegensatz zur \texttt{beispiel}-Umgebung Seitenumbrüche. Auch lange Beispiele werden weiterführend nummeriert. - -\leer - -\textsc{Eingabe:} -\begin{verbatim} -\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS - -In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur -beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei -Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind -mathematische Formeln möglich: -$\frac{x^2+x+5}{\sqrt{x^3}}$. - -\end{langesbeispiel} - -\end{verbatim} - - -\textsc{Ausgabe:} - -\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS - -In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind mathematische Formeln möglich: -$\frac{x^2+x+5}{\sqrt{x^3}}$. - -\end{langesbeispiel} - - - -\subsubsection{\texttt{\textbackslash notenschluessel}} - -Werden für alle Beispiele die \texttt{beispiel}- oder die \texttt{langesbeispiel}-Umgebung verwendet, wird die Gesamtpunktezahl sowie der Notenschlüssel automatisch berechnet. Die Werte in Klammer geben dabei den prozentualen Notenschlüssel vor und können beliebig variiert werden: - -\vspace{0.4cm} -\setcounter{punkte}{48} - - -\vspace{0.3cm} - -\textsc{Ausgabe:} -\notenschluessel{0.91}{0.8}{0.64}{0.5} -\vfill - -Der Befehl \texttt{notenschluessel} bietet auch die Eingabe von drei unterschiedlichen Optionen, die alle einzeln oder gemeinsam verwendet werden können. Wichtig: Wird Option 3 benötigt (jedoch Option 1 \& 2 nicht) müssen die Optionen 1 \& 2 jeweils mit leerer Klammer \texttt{[]} angegeben werden. - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 1: Halbe Punkte-Schritte} - -Durch die Option 1 \texttt{[1/2]} wird die Anzeige auf halbe Punkte-Schritten geändert. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} - - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 2: Prozentanzeige} - -Die Option 2 \texttt{[prozent]} ergänzt die erste Zeile des Notenschlüssel mit einer prozentuellen Angabe. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 3: Standard der Mittelschule} - -Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entsprechend des Standards der Mittelschule. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} - -%\paragraph{Notenschlüssel - Ohne Prozentangabe} -%Analog zum \texttt{notenschluessel} funktioniert auch der Befehl \texttt{notenschluesselop}. Es wird dabei jedoch die Prozentspalte nicht angezeigt. +% +%% +%\vspace{1cm} +% +%\subsubsection{\texttt{\textbackslash begin\{langesbeispiel\} \ldots\ \textbackslash end\{langesbeispiel\}}} +% +%Die \texttt{langesbeispiel}-Umgebung dient ebenso zur Erstellung eines Beispiels, funktioniert analog, erlaubt aber im Gegensatz zur \texttt{beispiel}-Umgebung Seitenumbrüche. Auch lange Beispiele werden weiterführend nummeriert. +% +%\leer % %\textsc{Eingabe:} %\begin{verbatim} -%\notenschluesselop{0.91}{0.8}{0.64}{0.5} +%\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS +% +%In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur +%beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei +%Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind +%mathematische Formeln möglich: +%$\frac{x^2+x+5}{\sqrt{x^3}}$. +% +%\end{langesbeispiel} +% %\end{verbatim} + + +%\textsc{Ausgabe:} +% +%\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS +% +%In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind mathematische Formeln möglich: +%$\frac{x^2+x+5}{\sqrt{x^3}}$. +% +%\end{langesbeispiel} +% +% +% +%\subsubsection{\texttt{\textbackslash notenschluessel}} +% +%Werden für alle Beispiele die \texttt{beispiel}- oder die \texttt{langesbeispiel}-Umgebung verwendet, wird die Gesamtpunktezahl sowie der Notenschlüssel automatisch berechnet. Die Werte in Klammer geben dabei den prozentualen Notenschlüssel vor und können beliebig variiert werden: +% +%\vspace{0.4cm} +%\setcounter{punkte}{48} +% +% +%\vspace{0.3cm} % %\textsc{Ausgabe:} %\notenschluessel{0.91}{0.8}{0.64}{0.5} - -%\paragraph{Notenschlüssel - Option: [1/2]} +%\vfill +% +%Der Befehl \texttt{notenschluessel} bietet auch die Eingabe von drei unterschiedlichen Optionen, die alle einzeln oder gemeinsam verwendet werden können. Wichtig: Wird Option 3 benötigt (jedoch Option 1 \& 2 nicht) müssen die Optionen 1 \& 2 jeweils mit leerer Klammer \texttt{[]} angegeben werden. +% +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 1: Halbe Punkte-Schritte} % -%Die Option 1/2 ermöglicht die Anzeige des Notenschlüssel (mit oder ohne Prozentspalte) mit halben Punkten. +%Durch die Option 1 \texttt{[1/2]} wird die Anzeige auf halbe Punkte-Schritten geändert. % %\textsc{Eingabe:} %\begin{verbatim} @@ -234,930 +184,978 @@ Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entspr % %\textsc{Ausgabe:} %\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} - -\subsubsection{\texttt{\textbackslash beurteilungsraster}} - -Der Befehl \texttt{beurteilungsraster} entspricht der aktuellen Vorgabe der Beurteilung der standardisierten Reifeprüfung (Stand 2019). Dabei müssen die Punkte für Teil 1, Ausgleichspunkte und Teil 2 angegeben werden. Die in Klammer angegebenen Werte entsprechen der bei der Reifeprüfung verwendeten prozentuellen Notenverteilung, können jedoch jederzeit verändert werden. \leer - - -\textsc{Eingabe:} -\begin{verbatim} -\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel - T1={24}, % Punkte im Teil 1 - AP={4}, % Ausgleichspunkte aus Teil 2 - T2={20}, % Punkte im Teil 2 - } - -\end{verbatim} -\textsc{Ausgabe:}\leer - -siehe nächste Seite \newpage - - -\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel - T1={24}, % Punkte im Teil 1 - AP={4}, % Ausgleichspunkte aus Teil 2 - T2={20}, % Punkte im Teil 2 - } - -\newpage - -\subsection{Paketoption -- Lösungseingabe: \texttt{[solution\_on/off]}} - -Es besteht die Möglichkeit, die Lösung in der erstellten \texttt{tex}-Datei zu implementieren und diese bei Bedarf in der \texttt{PDF}-Datei ein- bzw. auszublenden. Um diese Funktion nutzen zu können, muss die \texttt{solution\_on/off} Option im \texttt{srdp-mathematik}-Paket geladen werden. Diese kann durch hinzufügen durch "`\texttt{solution\_on}"' bzw. "`\texttt{solution\_off}"' aktiviert bzw. deaktiviert werden. Also: - -\begin{verbatim} -\usepackage[solution_on]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[solution_off]{srdp-mathematik} -\end{verbatim} - - -Die korrekte Lösungseingabe der vorformatierten Typ-1-Aufgaben wird bei den entsprechenden Befehlen direkt erklärt. Unabhängig davon, gibt es die Möglichkeit mithilfe des \texttt{antwort}-Befehls, beliebige Abschnitte als \textit{Antwort} zu deklarieren. (verwendeter counter: \texttt{Antworten=0, 1}) - - -\subsubsection{\texttt{\textbackslash antwort}} -Für offene Antworten kann der \texttt{\textbackslash antwort\{\}}-Befehl verwendet werden. Darin können Textpassagen, mathematische Formeln oder Grafiken angegeben werden, die ausschließlich bei aktivierter Lösung (\texttt{[solution\_on]}) und in \textcolor[rgb]{1,0,0}{rot} angegeben werden. \leer - - -\subsubsection*{\texttt{\textbackslash antwort} -- Option: Anzeige nur bei \texttt{solution\_off}} - -Der \texttt{antwort}-Befehl erlaubt ein optionales Argument. Es können dadurch zusätzliche Textpassagen angegeben werden, die \underline{ausschließlich} angezeigt werden, wenn die Lösungsanzeige deaktiviert (\texttt{[solution\_off])} ist. Das heißt: \leer - -\textsc{Eingabe:} -\begin{verbatim} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn 'solution_off' gewählt -wird.] -{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn -'solution_on' eingestellt ist.} -\end{verbatim} - - -\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_off]\{srdp-mathematik\}} eingestellt ist: \\ - -\setcounter{Antworten}{0} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] -{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn -\textttt{'solution\_on'} eingestellt ist.} -\leer - -\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_on]\{srdp-mathematik\}} eingestellt ist:\\ - -\setcounter{Antworten}{1} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] -{Dies ist die notwendige Eingabe und wird in rot angezeigt und nur wenn -\texttt{'solution\_on'} eingestellt ist.} - - -\subsection{Paketoption -- Erstellung von Gruppen: \texttt{[random=0,1,2,\ldots]}} -Das \texttt{srdp-mathematik}-Paket ermöglicht auch die automatische Erstellung von Gruppen für Schularbeiten, durch Vertauschung der Antwortmöglichkeiten aller Typ-1-Aufgaben. Dazu kann die \texttt{random}-Option im \texttt{srdp-mathematik}-Paket eingebunden geladen werden. Also: - -\begin{verbatim} -\usepackage[random=0]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[random=1]{srdp-mathematik} -\end{verbatim} - -usw. - -Die Zahl "`0"' bedeutet dabei, dass keine Vertauschung stattfindet und somit die Antwortmöglichkeiten in der Reihenfolge angezeigt werden, in der sie in der \texttt{tex}-Datei eingegeben wurden. - -Durch das Ersetzen der Zahl "`0"' durch die Zahlen $1, 2, 3, \ldots$ (und anschließendem Kompilieren) werden die Antwortmöglichkeiten bei \textbf{allen} Typ1-Formaten der Datei in einer zufälligen Reihenfolge vertauscht. Es können somit in kurzer Zeit mehrere Gruppen der selben Schularbeit erstellt werden. Die eingegebenen Lösungen werden gleichermaßen übernommen. \leer - -Die Erstellung der Gruppen ist dabei reproduzierbar. Die Reihenfolge der Antwortmöglichkeiten einer Gruppe bleibt daher immer gleich. Mithilfe des Befehls \texttt{\textbackslash Gruppe} kann die Gruppennummer innerhalb der \texttt{PDF}-Datei (z.B. am Deckblatt) angezeigt werden. (verwendeter counter: \texttt{Zufall=0, 1, 2, \ldots}) - - - -\subsection{Paketoption -- Informationseingabe: \texttt{[info\_on/off]}} -Es ist darüber hinaus möglich zusätzliche Informationen (Erläuterungen, Hilfestellungen, \ldots) hinzuzufügen und einzublenden. Dazu kann die Option \texttt{info\_on/off} im \texttt{srdp-mathematik}-Paket eingebunden werden. Die Infos werden in \textcolor[rgb]{0,0,1}{blau} angegeben und nur dann angezeigt, wenn die Option \texttt{info\_on} gewählt wurde (verwendeter counter: \texttt{info=0,1}). Also: - - -\begin{verbatim} -\usepackage[info_on]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[info_off]{srdp-mathematik} -\end{verbatim} - - -\subsection{Weitere allgemeine Befehle} -Außerdem gibt es noch weitere Befehle, die die Formatierung erleichtern. - -\subsubsection{\texttt{\textbackslash leer}} -Eine Leerzeile, etwa zwischen zwei Beispielen. \\ -(Nach dem Befehl \texttt{\textbackslash leer} muss in der \texttt{.tex}-Datei ein Leerzeile eingefügt werden!) - -\leer - -\subsubsection{\texttt{\textbackslash meinlr}} -\begin{verbatim} -\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, -geht er automatisch in der nächsten Zeile weiter ohne auf die andere -Seite über zu gehen.}{Dieser Teil steht rechts.} -\end{verbatim} -Teilt die Seite in zwei gleich große Seiten. - -\leer - -\textsc{Ausgabe:} - -\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, -geht er automatisch in der nächsten Zeile weiter ohne auf die andere -Seite über zu gehen.}{Dieser Teil steht rechts.} - - -\subsubsection*{\texttt{\textbackslash meinlr} -- Option: Variable Spaltenbreiten} - -Der Befehl \texttt{\textbackslash meinlr} erlaubt durch die optionale Eingabe eine Abänderung der beiden Spaltenbreiten. Durch die Eingabe zwischen ca. -0.3 und 0.3 kann die Spaltenmitte nach links oder rechts verschoben und somit die Spaltenbreite variiert werden. - -\textsc{Eingabe:} - -\begin{verbatim} -\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} -{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, -die Spaltenbreiten nach Belieben zu variieren.} -\end{verbatim} - -\textsc{Ausgabe:} - -\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} -{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, -die Spaltenbreiten nach Belieben zu variieren.} - -\leer - -\subsubsection{\texttt{\textbackslash meinlcr}} -\begin{verbatim} -\meinlcr{Text ganz links}{Text in der Mitte. Auch hier sind längere Texte -möglich.}{Text auf der rechten Seite.} -\end{verbatim} -Teilt die Seite in drei gleich große Teile - -\leer - -\textsc{Ausgabe:} - -\meinlcr{Text ganz links. Was passiert hier wenn dieser Teil länger ist?}{Text in der Mitte. Auch hier sind längere Texte möglich.}{Text auf der rechten Seite.} - - -\subsubsection{\texttt{\textbackslash dint} und \texttt{\textbackslash dx}} -Die Befehle \texttt{\textbackslash dint} und \texttt{\textbackslash dx} vereinfacht die Eingabe eines Integrals (bestimmt oder unbestimmt).\leer - -\textsc{Eingabe:} - -\begin{verbatim} -$\dint_1^3 x^2 \dx$ -\end{verbatim} - -\textsc{Ausgabe:}\leer - -$\dint_1^3 x^2 \dx$ -\leer - -Wird eine Variable ungleich $x$ integriert, kann diese mithilfe der Option \texttt{\textbackslash{dx[Variable]}} dargestellt werden.\leer - -\textsc{Eingabe:} - -\begin{verbatim} -$\dint t^2 \dx[t]$ -\end{verbatim} - -\textsc{Ausgabe:}\leer - -$\dint t^2 \dx[t]$ - -\subsubsection{\texttt{\textbackslash degre}} - -Der \texttt{\textbackslash degre} Befehl stellt das Einheitszeichen für Grad dar. Er kann im Text- und im Mathematik-Modus verwendet werden. - -\textsc{Eingabe:} - -\begin{verbatim} -Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) -\end{verbatim} - -\textsc{Ausgabe:}\leer - -Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) - - -\section{Typ-1-Aufgaben} - -Das \texttt{srdp-mathematik}-Paket ermöglicht die Verwendung vorgefertigter Aufgabenformate, die bei der österreichischen, standardisierten Reifeprüfung Anwendung finden. - - -\subsection{\texttt{\textbackslash multiplechoice}} - -Dieser Befehl liefert eine vollständige Formatierung für eine Multiplechoice-Aufgabe. Die Anzahl der Antwortmöglichkeiten kann dabei frei (max. 9) gewählt werden. Als Standard ist dabei das Format mit fünf Antwortmöglichkeiten eingestellt. \leer - -Die korrekten Antworten der Multiplechoice-Aufgabe werden dabei bei A1, A2, \ldots, A5 angegeben. Sollte beispielsweise die 1., die 4. und 5. Antwortmöglichkeit korrekt sein, muss je eine "`0"' durch 1, 4, und 5 ersetzt werden -- Die Reihenfolge dabei ist nicht relevant. Also: \\ - -\textsc{Eingabe:} - -\begin{verbatim} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} - -\textsc{Ausgabe:}\vspace{0.2cm} - -\begin{minipage}{8cm} -\setcounter{Antworten}{0} -mit \texttt{\textbackslash setcounter\{Antworten\}\{0\}}: -\begin{center} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{center} -\end{minipage} \hfill -\begin{minipage}{8cm} -mit \texttt{\textbackslash setcounter\{Antworten\}\{1\}}: -\setcounter{Antworten}{1} -\begin{center} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{center} -\end{minipage} - -\leer - -Die Zahl in eckigen Klammern gibt dabei die gewünschte Anzahl von Antwortmöglichkeiten an. Somit sind beispielsweise drei oder sieben Antwortmöglichkeiten einstellbar. \leer - -Wichtig zu erwähnen ist dabei, dass ausschließlich die Zahl in eckigen Klammern die Anzahl der Antwortmöglichkeiten angibt. Werden anschließend zu wenige oder zu viele Antwortmöglichkeiten angegeben, werden Leerzeilen erzeugt oder die Eingabe wird in der Ausgabe nicht berücksichtigt. - -\leer - -\textsc{Eingabe:} \setcounter{Antworten}{0} -\begin{verbatim} -\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Durch die 3}, %1. Antwortmoeglichkeit - L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit - L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} -\leer - -\textsc{Ausgabe:}\leer - -\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Durch die 3}, %1. Antwortmoeglichkeit - L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit - L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\textsc{Eingabe:} - -\begin{verbatim} -\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Das Gleiche}, %1. Antwort - L2={passiert beim Eintragen von}, %2. Antwort - L3={sieben Möglichkeiten.}, %3. Antwort - L4={Dabei werden immer 7 Antworten}, %4. Antwort - L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort - L6={sind oder nicht!}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={}, %9. Antwort - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} - -\leer - -\textsc{Ausgabe:} - -\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Das Gleiche}, %1. Antwort - L2={passiert beim Eintragen von}, %2. Antwort - L3={sieben Möglichkeiten.}, %3. Antwort - L4={Dabei werden immer 7 Antworten}, %4. Antwort - L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort - L6={sind oder nicht!}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={}, %9. Antwort - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\newpage - -Die Eingabe in eckiger Klammer ist dabei optional. Wird sie nicht angegeben, wird der Standard von 5 angenommen. - -\leer - - - - -\textsc{Eingabe:} -\begin{verbatim} -\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={In diesem}, %1. Antwort - L2={Fall wird der}, %2. Antwort - L3={Standard von}, %3. Antwort - L4={fünf Antwortmöglichkeiten}, %4. Antwort - L5={angenommen}, %5. Antwort - L6={}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={} %9. Antwort - } -\end{verbatim} - -\textsc{Ausgabe:} - -\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={In diesem}, %1. Antwort - L2={Fall wird der}, %2. Antwort - L3={Standard von}, %3. Antwort - L4={fünf Antwortmöglichkeiten}, %4. Antwort - L5={angenommen}, %5. Antwort - L6={}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={} %9. Antwort - } - -\leer -\newpage - -\subsubsection{Add-on: \texttt{\textbackslash langmultiplechoice}} - -Der \texttt{langmultiplechoice}-Befehl ist analog zum \texttt{multiplechoice}-Befehl zu verwenden. Der Unterschied besteht darin, dass Antwortmöglichkeiten auf zwei Spalten aufgeteilt werden. Dies ist vor allem dann sinnvoll, wenn Geogebra-Grafiken importiert werden, um eine bessere Lesbarkeit zu ermöglichen. - -\langmultiplechoice[6]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %1. Antwortmoeglichkeit - L2={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %2. Antwortmoeglichkeit - L3={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$B$}} -\end{scriptsize} -\end{pspicture*}}}, %3. Antwortmoeglichkeit - L4={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$A$}} -\end{scriptsize} -\end{pspicture*}}}, %4. Antwortmoeglichkeit - L5={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$B$}} -\end{scriptsize} -\end{pspicture*}}}, %5. Antwortmoeglichkeit - L6={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\newpage - -\subsection{\texttt{\textbackslash lueckentext}} -Dieser Befehl dient zur Erstellung eines Lückentexts, basierend auf dem standardisierten Format des BIFIE. Der einleitenden Satz: \textit{"`Ergänze die Textlücken im folgenden Satz durch Ankreuzen der jeweils richtigen Satzteile so, dass eine mathematisch korrekte Aussage entsteht!"'} wird als Standard angenommen und automatisch angegeben. Im Bereich \texttt{\textbackslash text=\{\}} wird der Lückentext angegeben, wobei die Lücken immer mit \texttt{\textbackslash gap} eingefügt werden und automatisch nummeriert werden. Analog zu den Lösungsangaben der Multiplechoice-Aufgabe, werden die korrekten Antworten bei A1, A2 oder A3 mit 1,2 oder 3 angegeben. (hier: Lösung links: 3 und rechts: 2) -\vspace{0.35cm} - -\textsc{Eingabe:} -\begin{verbatim} -\lueckentext{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={Hier schreibt}, %1.Moeglichkeit links - L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links - L3={für die erste Lücke}, %3.Moeglichkeit links - R1={und hier jene}, %1.Moeglichkeit rechts - R2={für die Möglichkeiten}, %2.Moeglichkeit rechts - R3={der zweiten Lücke. Theoretisch könnte dieser Text - auch zweizeilig sein.}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=3, % Antwort links - A2=2 % Antwort rechts - } -\end{verbatim} - -\textsc{Ausgabe:} -\lueckentext{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={Hier schreibt}, %1.Moeglichkeit links - L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links - L3={für die erste Lücke}, %3.Moeglichkeit links - R1={und hier jene}, %1.Moeglichkeit rechts - R2={für die Möglichkeiten}, %2.Moeglichkeit rechts - R3={der zweiten Lücke. Theoretisch könnte dieser Text - auch mehrzeilig sein.}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=3, % Antwort links - A2=2 % Antwort rechts - } - - -\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Variable Breiten der Boxen} - -Der \texttt{lueckentext}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt:\leer - -\textsc{Eingabe:} - -\begin{verbatim} -\lueckentext[0.25]{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={In manchen Fällen sind die Antworten einer Lücke}, - %1.Moeglichkeit links - L2={viel länger als die der zweite. In diesem Fall kann man}, - %2.Moeglichkeit links - L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, - %3.Moeglichkeit links - R1={Sehr}, %1.Moeglichkeit rechts - R2={kurze}, %2.Moeglichkeit rechts - R3={Antworten}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } -\end{verbatim} - -\begin{minipage}{1.0\textwidth} -\textsc{Ausgabe:} - - -\lueckentext[0.25]{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={In manchen Fällen sind die Antworten einer Lücke}, %1.Moeglichkeit links - L2={viel länger als die der zweite. In diesem Fall kann man}, %2.Moeglichkeit links - L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, %3.Moeglichkeit links - R1={Sehr}, %1.Moeglichkeit rechts - R2={kurze}, %2.Moeglichkeit rechts - R3={Antworten}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } - -\end{minipage} - -Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben -werden. - -\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Englischer Lückentext} -Der Befehl \texttt{englueckentext} ist analog zum \texttt{lueckentext}-Befehl zu verwenden. Jedoch wird der als Standard angenommene, einleitende Satz bei Lückentextaufgaben in Englisch angezeigt. - -\textsc{Eingabe:} -\begin{verbatim} -\englueckentext{ - text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken - \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap - L1={Auch}, %1.Moeglichkeit links - L2={der}, %2.Moeglichkeit links - L3={Rest}, %3.Moeglichkeit links - R1={wird}, %1.Moeglichkeit rechts - R2={gleich}, %2.Moeglichkeit rechts - R3={eingegeben}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } -\end{verbatim} - -\textsc{Ausgabe:} -\englueckentext{ - text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap - L1={Auch}, %1.Moeglichkeit links - L2={der}, %2.Moeglichkeit links - L3={Rest}, %3.Moeglichkeit links - R1={wird}, %1.Moeglichkeit rechts - R2={gleich}, %2.Moeglichkeit rechts - R3={eingegeben}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } - -\subsection{\texttt{\textbackslash zuordnen}} -Dieser Befehl dient zum Erstellen des Zuordnungsformats von vier aus sechs Möglichkeiten. -Die korrekten Antworten können hier frei als Buchstaben eingegeben werden. (hier: F, C, A, D) - -\leer - -\textsc{Eingabe:} -\begin{verbatim} -\zuordnen{ - R1={Hier sind die vier}, % Response 1 - R2={Antworten, zu}, % Response 2 - R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 - R4={zuzuordnen sind}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier trägt}, %Moeglichkeit A - B={man den Text}, %Moeglichkeit B - C={oder die Formeln}, %Moeglichkeit C - D={für die sechs}, %Moeglichkeit D - E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E - F={ein.}, %Moeglichkeit F - %% LOESUNG: %% - A1={F}, % 1. richtige Zuordnung - A2={C}, % 2. richtige Zuordnung - A3={A}, % 3. richtige Zuordnung - A4={D}, % 4. richtige Zuordnung - } -\end{verbatim} -\leer - -\textsc{Ausgabe:} - -\zuordnen{ - R1={Hier sind die vier}, % Response 1 - R2={Antworten, zu}, % Response 2 - R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 - R4={zuzuordnen sind}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier trägt}, %Moeglichkeit A - B={man den Text}, %Moeglichkeit B - C={oder die Formeln}, %Moeglichkeit C - D={für die sechs}, %Moeglichkeit D - E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E - F={ein.}, %Moeglichkeit F - %% LOESUNG: %% - A1={F}, % 1. richtige Zuordnung - A2={C}, % 2. richtige Zuordnung - A3={A}, % 3. richtige Zuordnung - A4={D}, % 4. richtige Zuordnung - } - -\subsubsection{\texttt{\textbackslash zuordnen} -- Option: Variable Breiten der Boxen} - -Der \texttt{zuordnen}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt: - -\textsc{Eingabe:} -\begin{small} -\begin{verbatim} -\zuordnen[0.25]{ -R1={Dabei wird die linke Box vergrößert.}, % Response 1 - R2={Dies dient vor allem dazu,}, % Response 2 - R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 - R4={nur ganz wenig. Wird die [ ] nicht angegeben dann wird der Standardwert - 0 angenommen.}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier}, %Moeglichkeit A - B={sind}, %Moeglichkeit B - C={eher}, %Moeglichkeit C - D={kurze}, %Moeglichkeit D - E={Antworten}, %Moeglichkeit E - F={möglich}, %Moeglichkeit F - %% LOESUNG: %% - A1={}, % 1. richtige Zuordnung - A2={}, % 2. richtige Zuordnung - A3={}, % 3. richtige Zuordnung - A4={}, % 4. richtige Zuordnung - } -\end{verbatim} - - - -\textsc{Ausgabe:} - -\zuordnen[0.25]{ - R1={Dabei wird die linke Box vergrößert.}, % Response 1 - R2={Dies dient vor allem dazu,}, % Response 2 - R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 - R4={nur ganz wenig. Wird die $[~]$ nicht angegeben dann wird der Standardwert 0 angenommen.}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier}, %Moeglichkeit A - B={sind}, %Moeglichkeit B - C={eher}, %Moeglichkeit C - D={kurze}, %Moeglichkeit D - E={Antworten}, %Moeglichkeit E - F={möglich}, %Moeglichkeit F - %% LOESUNG: %% - A1={}, % 1. richtige Zuordnung - A2={}, % 2. richtige Zuordnung - A3={}, % 3. richtige Zuordnung - A4={}, % 4. richtige Zuordnung - } -\end{small} - -Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben werden. - - -\section{Typ-2-Aufgaben} -Um die Struktur der Teil-2-Aufgaben ähnlich jener bei der standardisierten Reifeprüfung einhalten zu können, beinhaltet das Paket einige Befehle, die die Erstellung von Typ-2-Aufagben erleichtern. - -\subsection{\texttt{\textbackslash begin\{aufgabenstellung\} \ldots\ \textbackslash end\{aufgabenstellung\}}} -Typ-2-Aufgaben sollten innerhalb einer Prüfung mithilfe der \texttt{langesbeispiel}-Umgebung eingegeben werden, um die volle Funktionalität (wie \texttt{notenschluessel}) des Pakets zu ermöglichen. Der einleitenden Aufgabentext kann dann eingegeben werden. Für die Eingabe der Aufgabenstellung kann dann die \texttt{aufgabenstellung}-Umgebung verwendet werden.\leer - -\subsubsection{\texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}}} -Innerhalb dieser Umgebung können dann mithilfe von \texttt{\textbackslash item} (nummeriert mit a), b) ,c), \ldots) und \texttt{\textbackslash Subitem\{\}} (nummeriert mit 1), 2), \ldots) die jeweiligen Items und Subitems der Aufgabe eingegeben werden. \leer - -\subsubsection{Ausgleichspunkte -- \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}}} -Um die notwendigen Ausgleichspunkte in den Typ-2-Aufgaben zu markieren, können die Befehle \texttt{item} und \texttt{Subitem} durch \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}} ersetzt werden. Dabei wird vor den geschriebenen Text noch ein \fbox{A} eingefügt -- die Nummerierung wird aber wie gewohnt fortgesetzt. - -\subsection{\texttt{\textbackslash begin\{loesung\} \ldots\ \textbackslash end\{loesung\}}} -Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter{subitemcounter}{0}}.\leer - -Eine vollständige Typ-2-Aufgabe könnte also wie folgt aussehen: - -\textsc{Eingabe:} - -\begin{verbatim} -\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS -Hier steht der einleitende Text der Typ-2-Aufgabe. - -\begin{aufgabenstellung} -\item Hier steht der Aufgabentext des ersten Items. - -\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 - -\end{aufgabenstellung} - -\begin{loesung} -\item \subsection{Lösungserwartung:} - -\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 -\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 - -\setcounter{subitemcounter}{0} -\subsection{Lösungsschlüssel:} - -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt2 - -\end{loesung} - -\end{langesbeispiel} -\end{verbatim} - - -\textsc{Ausgabe:} -\setcounter{Antworten}{1} -\setcounter{secnumdepth}{-1} -\setcounter{number}{0} -\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS -Hier steht der einleitende Text der Typ-2-Aufgabe. - -\addtocontents{toc}{\setcounter{tocdepth}{-10}} -\begin{aufgabenstellung} -\item Hier steht der Aufgabentext des ersten Items. - -\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 - -\end{aufgabenstellung} - -\begin{loesung} -\item \subsection*{Lösungserwartung:} - -\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 -\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 - -\setcounter{subitemcounter}{0} -\subsection*{Lösungsschlüssel:} - -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt1 -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt2 - -\end{loesung} - -\end{langesbeispiel} -\addtocontents{toc}{\setcounter{tocdepth}{1}} - - - -\section{Einfügen von GeoGebra-Grafiken} - -Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können. -\leer - -\begin{enumerate} - \item Grafik in Geogebra zeichnen - \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots - \item Parameter einstellen - \item \fbox{Erzeuge PSTricks} drücken - \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren. - - \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich) - - \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden: - - \begin{verbatim} - \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt} - \end{verbatim} - - Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert. - -\end{enumerate} - -\meinlr{ -\centering -\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*} -} -{\centering -\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}} -} -\leer - - -\centering Kopie des PSTricks-Exports von Geogebra \\ - (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\}) +% +% +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 2: Prozentanzeige} +% +%Die Option 2 \texttt{[prozent]} ergänzt die erste Zeile des Notenschlüssel mit einer prozentuellen Angabe. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} +% +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 3: Standard der Mittelschule} +% +%Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entsprechend des Standards der Mittelschule. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} +% +%%\paragraph{Notenschlüssel - Ohne Prozentangabe} +%%Analog zum \texttt{notenschluessel} funktioniert auch der Befehl \texttt{notenschluesselop}. Es wird dabei jedoch die Prozentspalte nicht angezeigt. +%% +%%\textsc{Eingabe:} +%%\begin{verbatim} +%%\notenschluesselop{0.91}{0.8}{0.64}{0.5} +%%\end{verbatim} +%% +%%\textsc{Ausgabe:} +%%\notenschluessel{0.91}{0.8}{0.64}{0.5} +% +%%\paragraph{Notenschlüssel - Option: [1/2]} +%% +%%Die Option 1/2 ermöglicht die Anzeige des Notenschlüssel (mit oder ohne Prozentspalte) mit halben Punkten. +%% +%%\textsc{Eingabe:} +%%\begin{verbatim} +%%\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} +%%\end{verbatim} +%% +%%\textsc{Ausgabe:} +%%\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} +% +%\subsubsection{\texttt{\textbackslash beurteilungsraster}} +% +%Der Befehl \texttt{beurteilungsraster} entspricht der aktuellen Vorgabe der Beurteilung der standardisierten Reifeprüfung (Stand 2019). Dabei müssen die Punkte für Teil 1, Ausgleichspunkte und Teil 2 angegeben werden. Die in Klammer angegebenen Werte entsprechen der bei der Reifeprüfung verwendeten prozentuellen Notenverteilung, können jedoch jederzeit verändert werden. \leer +% +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel +% T1={24}, % Punkte im Teil 1 +% AP={4}, % Ausgleichspunkte aus Teil 2 +% T2={20}, % Punkte im Teil 2 +% } +% +%\end{verbatim} +%\textsc{Ausgabe:}\leer +% +%siehe nächste Seite \newpage +% +% +%\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel +% T1={24}, % Punkte im Teil 1 +% AP={4}, % Ausgleichspunkte aus Teil 2 +% T2={20}, % Punkte im Teil 2 +% } +% +%\newpage +% +%\subsection{Paketoption -- Lösungseingabe: \texttt{[solution\_on/off]}} +% +%Es besteht die Möglichkeit, die Lösung in der erstellten \texttt{tex}-Datei zu implementieren und diese bei Bedarf in der \texttt{PDF}-Datei ein- bzw. auszublenden. Um diese Funktion nutzen zu können, muss die \texttt{solution\_on/off} Option im \texttt{srdp-mathematik}-Paket geladen werden. Diese kann durch hinzufügen durch "`\texttt{solution\_on}"' bzw. "`\texttt{solution\_off}"' aktiviert bzw. deaktiviert werden. Also: +% +%\begin{verbatim} +%\usepackage[solution_on]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[solution_off]{srdp-mathematik} +%\end{verbatim} +% +% +%Die korrekte Lösungseingabe der vorformatierten Typ-1-Aufgaben wird bei den entsprechenden Befehlen direkt erklärt. Unabhängig davon, gibt es die Möglichkeit mithilfe des \texttt{antwort}-Befehls, beliebige Abschnitte als \textit{Antwort} zu deklarieren. (verwendeter counter: \texttt{Antworten=0, 1}) +% +% +%\subsubsection{\texttt{\textbackslash antwort}} +%Für offene Antworten kann der \texttt{\textbackslash antwort\{\}}-Befehl verwendet werden. Darin können Textpassagen, mathematische Formeln oder Grafiken angegeben werden, die ausschließlich bei aktivierter Lösung (\texttt{[solution\_on]}) und in \textcolor[rgb]{1,0,0}{rot} angegeben werden. \leer +% +% +%\subsubsection*{\texttt{\textbackslash antwort} -- Option: Anzeige nur bei \texttt{solution\_off}} +% +%Der \texttt{antwort}-Befehl erlaubt ein optionales Argument. Es können dadurch zusätzliche Textpassagen angegeben werden, die \underline{ausschließlich} angezeigt werden, wenn die Lösungsanzeige deaktiviert (\texttt{[solution\_off])} ist. Das heißt: \leer +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn 'solution_off' gewählt +%wird.] +%{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn +%'solution_on' eingestellt ist.} +%\end{verbatim} +% +% +%\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_off]\{srdp-mathematik\}} eingestellt ist: \\ +% +%\setcounter{Antworten}{0} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] +%{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn +%\textttt{'solution\_on'} eingestellt ist.} +%\leer +% +%\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_on]\{srdp-mathematik\}} eingestellt ist:\\ +% +%\setcounter{Antworten}{1} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] +%{Dies ist die notwendige Eingabe und wird in rot angezeigt und nur wenn +%\texttt{'solution\_on'} eingestellt ist.} +% +% +%\subsection{Paketoption -- Erstellung von Gruppen: \texttt{[random=0,1,2,\ldots]}} +%Das \texttt{srdp-mathematik}-Paket ermöglicht auch die automatische Erstellung von Gruppen für Schularbeiten, durch Vertauschung der Antwortmöglichkeiten aller Typ-1-Aufgaben. Dazu kann die \texttt{random}-Option im \texttt{srdp-mathematik}-Paket eingebunden geladen werden. Also: +% +%\begin{verbatim} +%\usepackage[random=0]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[random=1]{srdp-mathematik} +%\end{verbatim} +% +%usw. +% +%Die Zahl "`0"' bedeutet dabei, dass keine Vertauschung stattfindet und somit die Antwortmöglichkeiten in der Reihenfolge angezeigt werden, in der sie in der \texttt{tex}-Datei eingegeben wurden. +% +%Durch das Ersetzen der Zahl "`0"' durch die Zahlen $1, 2, 3, \ldots$ (und anschließendem Kompilieren) werden die Antwortmöglichkeiten bei \textbf{allen} Typ1-Formaten der Datei in einer zufälligen Reihenfolge vertauscht. Es können somit in kurzer Zeit mehrere Gruppen der selben Schularbeit erstellt werden. Die eingegebenen Lösungen werden gleichermaßen übernommen. \leer +% +%Die Erstellung der Gruppen ist dabei reproduzierbar. Die Reihenfolge der Antwortmöglichkeiten einer Gruppe bleibt daher immer gleich. Mithilfe des Befehls \texttt{\textbackslash Gruppe} kann die Gruppennummer innerhalb der \texttt{PDF}-Datei (z.B. am Deckblatt) angezeigt werden. (verwendeter counter: \texttt{Zufall=0, 1, 2, \ldots}) +% +% +% +%\subsection{Paketoption -- Informationseingabe: \texttt{[info\_on/off]}} +%Es ist darüber hinaus möglich zusätzliche Informationen (Erläuterungen, Hilfestellungen, \ldots) hinzuzufügen und einzublenden. Dazu kann die Option \texttt{info\_on/off} im \texttt{srdp-mathematik}-Paket eingebunden werden. Die Infos werden in \textcolor[rgb]{0,0,1}{blau} angegeben und nur dann angezeigt, wenn die Option \texttt{info\_on} gewählt wurde (verwendeter counter: \texttt{info=0,1}). Also: +% +% +%\begin{verbatim} +%\usepackage[info_on]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[info_off]{srdp-mathematik} +%\end{verbatim} +% +% +%\subsection{Weitere allgemeine Befehle} +%Außerdem gibt es noch weitere Befehle, die die Formatierung erleichtern. +% +%\subsubsection{\texttt{\textbackslash leer}} +%Eine Leerzeile, etwa zwischen zwei Beispielen. \\ +%(Nach dem Befehl \texttt{\textbackslash leer} muss in der \texttt{.tex}-Datei ein Leerzeile eingefügt werden!) +% +%\leer +% +%\subsubsection{\texttt{\textbackslash meinlr}} +%\begin{verbatim} +%\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, +%geht er automatisch in der nächsten Zeile weiter ohne auf die andere +%Seite über zu gehen.}{Dieser Teil steht rechts.} +%\end{verbatim} +%Teilt die Seite in zwei gleich große Seiten. +% +%\leer +% +%\textsc{Ausgabe:} +% +%\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, +%geht er automatisch in der nächsten Zeile weiter ohne auf die andere +%Seite über zu gehen.}{Dieser Teil steht rechts.} +% +% +%\subsubsection*{\texttt{\textbackslash meinlr} -- Option: Variable Spaltenbreiten} +% +%Der Befehl \texttt{\textbackslash meinlr} erlaubt durch die optionale Eingabe eine Abänderung der beiden Spaltenbreiten. Durch die Eingabe zwischen ca. -0.3 und 0.3 kann die Spaltenmitte nach links oder rechts verschoben und somit die Spaltenbreite variiert werden. +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} +%{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, +%die Spaltenbreiten nach Belieben zu variieren.} +%\end{verbatim} +% +%\textsc{Ausgabe:} +% +%\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} +%{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, +%die Spaltenbreiten nach Belieben zu variieren.} +% +%\leer +% +%\subsubsection{\texttt{\textbackslash meinlcr}} +%\begin{verbatim} +%\meinlcr{Text ganz links}{Text in der Mitte. Auch hier sind längere Texte +%möglich.}{Text auf der rechten Seite.} +%\end{verbatim} +%Teilt die Seite in drei gleich große Teile +% +%\leer +% +%\textsc{Ausgabe:} +% +%\meinlcr{Text ganz links. Was passiert hier wenn dieser Teil länger ist?}{Text in der Mitte. Auch hier sind längere Texte möglich.}{Text auf der rechten Seite.} +% +% +%\subsubsection{\texttt{\textbackslash dint} und \texttt{\textbackslash dx}} +%Die Befehle \texttt{\textbackslash dint} und \texttt{\textbackslash dx} vereinfacht die Eingabe eines Integrals (bestimmt oder unbestimmt).\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%$\dint_1^3 x^2 \dx$ +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%$\dint_1^3 x^2 \dx$ +%\leer +% +%Wird eine Variable ungleich $x$ integriert, kann diese mithilfe der Option \texttt{\textbackslash{dx[Variable]}} dargestellt werden.\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%$\dint t^2 \dx[t]$ +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%$\dint t^2 \dx[t]$ +% +%\subsubsection{\texttt{\textbackslash degre}} +% +%Der \texttt{\textbackslash degre} Befehl stellt das Einheitszeichen für Grad dar. Er kann im Text- und im Mathematik-Modus verwendet werden. +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) +% +% +%\section{Typ-1-Aufgaben} +% +%Das \texttt{srdp-mathematik}-Paket ermöglicht die Verwendung vorgefertigter Aufgabenformate, die bei der österreichischen, standardisierten Reifeprüfung Anwendung finden. +% +% +%\subsection{\texttt{\textbackslash multiplechoice}} +% +%Dieser Befehl liefert eine vollständige Formatierung für eine Multiplechoice-Aufgabe. Die Anzahl der Antwortmöglichkeiten kann dabei frei (max. 9) gewählt werden. Als Standard ist dabei das Format mit fünf Antwortmöglichkeiten eingestellt. \leer +% +%Die korrekten Antworten der Multiplechoice-Aufgabe werden dabei bei A1, A2, \ldots, A5 angegeben. Sollte beispielsweise die 1., die 4. und 5. Antwortmöglichkeit korrekt sein, muss je eine "`0"' durch 1, 4, und 5 ersetzt werden -- Die Reihenfolge dabei ist nicht relevant. Also: \\ +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +% +%\textsc{Ausgabe:}\vspace{0.2cm} +% +%\begin{minipage}{8cm} +%\setcounter{Antworten}{0} +%mit \texttt{\textbackslash setcounter\{Antworten\}\{0\}}: +%\begin{center} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{center} +%\end{minipage} \hfill +%\begin{minipage}{8cm} +%mit \texttt{\textbackslash setcounter\{Antworten\}\{1\}}: +%\setcounter{Antworten}{1} +%\begin{center} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{center} +%\end{minipage} +% +%\leer +% +%Die Zahl in eckigen Klammern gibt dabei die gewünschte Anzahl von Antwortmöglichkeiten an. Somit sind beispielsweise drei oder sieben Antwortmöglichkeiten einstellbar. \leer +% +%Wichtig zu erwähnen ist dabei, dass ausschließlich die Zahl in eckigen Klammern die Anzahl der Antwortmöglichkeiten angibt. Werden anschließend zu wenige oder zu viele Antwortmöglichkeiten angegeben, werden Leerzeilen erzeugt oder die Eingabe wird in der Ausgabe nicht berücksichtigt. +% +%\leer +% +%\textsc{Eingabe:} \setcounter{Antworten}{0} +%\begin{verbatim} +%\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Durch die 3}, %1. Antwortmoeglichkeit +% L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit +% L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +%\leer +% +%\textsc{Ausgabe:}\leer +% +%\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Durch die 3}, %1. Antwortmoeglichkeit +% L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit +% L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Das Gleiche}, %1. Antwort +% L2={passiert beim Eintragen von}, %2. Antwort +% L3={sieben Möglichkeiten.}, %3. Antwort +% L4={Dabei werden immer 7 Antworten}, %4. Antwort +% L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort +% L6={sind oder nicht!}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={}, %9. Antwort +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +% +%\leer +% +%\textsc{Ausgabe:} +% +%\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Das Gleiche}, %1. Antwort +% L2={passiert beim Eintragen von}, %2. Antwort +% L3={sieben Möglichkeiten.}, %3. Antwort +% L4={Dabei werden immer 7 Antworten}, %4. Antwort +% L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort +% L6={sind oder nicht!}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={}, %9. Antwort +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\newpage +% +%Die Eingabe in eckiger Klammer ist dabei optional. Wird sie nicht angegeben, wird der Standard von 5 angenommen. +% +%\leer +% +% +% +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={In diesem}, %1. Antwort +% L2={Fall wird der}, %2. Antwort +% L3={Standard von}, %3. Antwort +% L4={fünf Antwortmöglichkeiten}, %4. Antwort +% L5={angenommen}, %5. Antwort +% L6={}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={} %9. Antwort +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +% +%\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={In diesem}, %1. Antwort +% L2={Fall wird der}, %2. Antwort +% L3={Standard von}, %3. Antwort +% L4={fünf Antwortmöglichkeiten}, %4. Antwort +% L5={angenommen}, %5. Antwort +% L6={}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={} %9. Antwort +% } +% +%\leer +%\newpage +% +%\subsubsection{Add-on: \texttt{\textbackslash langmultiplechoice}} +% +%Der \texttt{langmultiplechoice}-Befehl ist analog zum \texttt{multiplechoice}-Befehl zu verwenden. Der Unterschied besteht darin, dass Antwortmöglichkeiten auf zwei Spalten aufgeteilt werden. Dies ist vor allem dann sinnvoll, wenn Geogebra-Grafiken importiert werden, um eine bessere Lesbarkeit zu ermöglichen. +% +%\langmultiplechoice[6]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %1. Antwortmoeglichkeit +% L2={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %2. Antwortmoeglichkeit +% L3={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$B$}} +%\end{scriptsize} +%\end{pspicture*}}}, %3. Antwortmoeglichkeit +% L4={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$A$}} +%\end{scriptsize} +%\end{pspicture*}}}, %4. Antwortmoeglichkeit +% L5={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$B$}} +%\end{scriptsize} +%\end{pspicture*}}}, %5. Antwortmoeglichkeit +% L6={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\newpage +% +%\subsection{\texttt{\textbackslash lueckentext}} +%Dieser Befehl dient zur Erstellung eines Lückentexts, basierend auf dem standardisierten Format des BIFIE. Der einleitenden Satz: \textit{"`Ergänze die Textlücken im folgenden Satz durch Ankreuzen der jeweils richtigen Satzteile so, dass eine mathematisch korrekte Aussage entsteht!"'} wird als Standard angenommen und automatisch angegeben. Im Bereich \texttt{\textbackslash text=\{\}} wird der Lückentext angegeben, wobei die Lücken immer mit \texttt{\textbackslash gap} eingefügt werden und automatisch nummeriert werden. Analog zu den Lösungsangaben der Multiplechoice-Aufgabe, werden die korrekten Antworten bei A1, A2 oder A3 mit 1,2 oder 3 angegeben. (hier: Lösung links: 3 und rechts: 2) +%\vspace{0.35cm} +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\lueckentext{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={Hier schreibt}, %1.Moeglichkeit links +% L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links +% L3={für die erste Lücke}, %3.Moeglichkeit links +% R1={und hier jene}, %1.Moeglichkeit rechts +% R2={für die Möglichkeiten}, %2.Moeglichkeit rechts +% R3={der zweiten Lücke. Theoretisch könnte dieser Text +% auch zweizeilig sein.}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=3, % Antwort links +% A2=2 % Antwort rechts +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\lueckentext{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={Hier schreibt}, %1.Moeglichkeit links +% L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links +% L3={für die erste Lücke}, %3.Moeglichkeit links +% R1={und hier jene}, %1.Moeglichkeit rechts +% R2={für die Möglichkeiten}, %2.Moeglichkeit rechts +% R3={der zweiten Lücke. Theoretisch könnte dieser Text +% auch mehrzeilig sein.}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=3, % Antwort links +% A2=2 % Antwort rechts +% } +% +% +%\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Variable Breiten der Boxen} +% +%Der \texttt{lueckentext}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt:\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\lueckentext[0.25]{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={In manchen Fällen sind die Antworten einer Lücke}, +% %1.Moeglichkeit links +% L2={viel länger als die der zweite. In diesem Fall kann man}, +% %2.Moeglichkeit links +% L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, +% %3.Moeglichkeit links +% R1={Sehr}, %1.Moeglichkeit rechts +% R2={kurze}, %2.Moeglichkeit rechts +% R3={Antworten}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +%\end{verbatim} +% +%\begin{minipage}{1.0\textwidth} +%\textsc{Ausgabe:} +% +% +%\lueckentext[0.25]{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={In manchen Fällen sind die Antworten einer Lücke}, %1.Moeglichkeit links +% L2={viel länger als die der zweite. In diesem Fall kann man}, %2.Moeglichkeit links +% L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, %3.Moeglichkeit links +% R1={Sehr}, %1.Moeglichkeit rechts +% R2={kurze}, %2.Moeglichkeit rechts +% R3={Antworten}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +% +%\end{minipage} +% +%Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben +%werden. +% +%\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Englischer Lückentext} +%Der Befehl \texttt{englueckentext} ist analog zum \texttt{lueckentext}-Befehl zu verwenden. Jedoch wird der als Standard angenommene, einleitende Satz bei Lückentextaufgaben in Englisch angezeigt. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\englueckentext{ +% text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken +% \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap +% L1={Auch}, %1.Moeglichkeit links +% L2={der}, %2.Moeglichkeit links +% L3={Rest}, %3.Moeglichkeit links +% R1={wird}, %1.Moeglichkeit rechts +% R2={gleich}, %2.Moeglichkeit rechts +% R3={eingegeben}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\englueckentext{ +% text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap +% L1={Auch}, %1.Moeglichkeit links +% L2={der}, %2.Moeglichkeit links +% L3={Rest}, %3.Moeglichkeit links +% R1={wird}, %1.Moeglichkeit rechts +% R2={gleich}, %2.Moeglichkeit rechts +% R3={eingegeben}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +% +%\subsection{\texttt{\textbackslash zuordnen}} +%Dieser Befehl dient zum Erstellen des Zuordnungsformats von vier aus sechs Möglichkeiten. +%Die korrekten Antworten können hier frei als Buchstaben eingegeben werden. (hier: F, C, A, D) +% +%\leer +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\zuordnen{ +% R1={Hier sind die vier}, % Response 1 +% R2={Antworten, zu}, % Response 2 +% R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 +% R4={zuzuordnen sind}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier trägt}, %Moeglichkeit A +% B={man den Text}, %Moeglichkeit B +% C={oder die Formeln}, %Moeglichkeit C +% D={für die sechs}, %Moeglichkeit D +% E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E +% F={ein.}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={F}, % 1. richtige Zuordnung +% A2={C}, % 2. richtige Zuordnung +% A3={A}, % 3. richtige Zuordnung +% A4={D}, % 4. richtige Zuordnung +% } +%\end{verbatim} +%\leer +% +%\textsc{Ausgabe:} +% +%\zuordnen{ +% R1={Hier sind die vier}, % Response 1 +% R2={Antworten, zu}, % Response 2 +% R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 +% R4={zuzuordnen sind}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier trägt}, %Moeglichkeit A +% B={man den Text}, %Moeglichkeit B +% C={oder die Formeln}, %Moeglichkeit C +% D={für die sechs}, %Moeglichkeit D +% E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E +% F={ein.}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={F}, % 1. richtige Zuordnung +% A2={C}, % 2. richtige Zuordnung +% A3={A}, % 3. richtige Zuordnung +% A4={D}, % 4. richtige Zuordnung +% } +% +%\subsubsection{\texttt{\textbackslash zuordnen} -- Option: Variable Breiten der Boxen} +% +%Der \texttt{zuordnen}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt: +% +%\textsc{Eingabe:} +%\begin{small} +%\begin{verbatim} +%\zuordnen[0.25]{ +%R1={Dabei wird die linke Box vergrößert.}, % Response 1 +% R2={Dies dient vor allem dazu,}, % Response 2 +% R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 +% R4={nur ganz wenig. Wird die [ ] nicht angegeben dann wird der Standardwert +% 0 angenommen.}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier}, %Moeglichkeit A +% B={sind}, %Moeglichkeit B +% C={eher}, %Moeglichkeit C +% D={kurze}, %Moeglichkeit D +% E={Antworten}, %Moeglichkeit E +% F={möglich}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={}, % 1. richtige Zuordnung +% A2={}, % 2. richtige Zuordnung +% A3={}, % 3. richtige Zuordnung +% A4={}, % 4. richtige Zuordnung +% } +%\end{verbatim} +% +% +% +%\textsc{Ausgabe:} +% +%\zuordnen[0.25]{ +% R1={Dabei wird die linke Box vergrößert.}, % Response 1 +% R2={Dies dient vor allem dazu,}, % Response 2 +% R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 +% R4={nur ganz wenig. Wird die $[~]$ nicht angegeben dann wird der Standardwert 0 angenommen.}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier}, %Moeglichkeit A +% B={sind}, %Moeglichkeit B +% C={eher}, %Moeglichkeit C +% D={kurze}, %Moeglichkeit D +% E={Antworten}, %Moeglichkeit E +% F={möglich}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={}, % 1. richtige Zuordnung +% A2={}, % 2. richtige Zuordnung +% A3={}, % 3. richtige Zuordnung +% A4={}, % 4. richtige Zuordnung +% } +%\end{small} +% +%Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben werden. +% +% +%\section{Typ-2-Aufgaben} +%Um die Struktur der Teil-2-Aufgaben ähnlich jener bei der standardisierten Reifeprüfung einhalten zu können, beinhaltet das Paket einige Befehle, die die Erstellung von Typ-2-Aufagben erleichtern. +% +%\subsection{\texttt{\textbackslash begin\{aufgabenstellung\} \ldots\ \textbackslash end\{aufgabenstellung\}}} +%Typ-2-Aufgaben sollten innerhalb einer Prüfung mithilfe der \texttt{langesbeispiel}-Umgebung eingegeben werden, um die volle Funktionalität (wie \texttt{notenschluessel}) des Pakets zu ermöglichen. Der einleitenden Aufgabentext kann dann eingegeben werden. Für die Eingabe der Aufgabenstellung kann dann die \texttt{aufgabenstellung}-Umgebung verwendet werden.\leer +% +%\subsubsection{\texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}}} +%Innerhalb dieser Umgebung können dann mithilfe von \texttt{\textbackslash item} (nummeriert mit a), b) ,c), \ldots) und \texttt{\textbackslash Subitem\{\}} (nummeriert mit 1), 2), \ldots) die jeweiligen Items und Subitems der Aufgabe eingegeben werden. \leer +% +%\subsubsection{Ausgleichspunkte -- \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}}} +%Um die notwendigen Ausgleichspunkte in den Typ-2-Aufgaben zu markieren, können die Befehle \texttt{item} und \texttt{Subitem} durch \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}} ersetzt werden. Dabei wird vor den geschriebenen Text noch ein \fbox{A} eingefügt -- die Nummerierung wird aber wie gewohnt fortgesetzt. +% +%\subsection{\texttt{\textbackslash begin\{loesung\} \ldots\ \textbackslash end\{loesung\}}} +%Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter{subitemcounter}{0}}.\leer +% +%Eine vollständige Typ-2-Aufgabe könnte also wie folgt aussehen: +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS +%Hier steht der einleitende Text der Typ-2-Aufgabe. +% +%\begin{aufgabenstellung} +%\item Hier steht der Aufgabentext des ersten Items. +% +%\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 +% +%\end{aufgabenstellung} +% +%\begin{loesung} +%\item \subsection{Lösungserwartung:} +% +%\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 +%\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 +% +%\setcounter{subitemcounter}{0} +%\subsection{Lösungsschlüssel:} +% +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt2 +% +%\end{loesung} +% +%\end{langesbeispiel} +%\end{verbatim} +% +% +%\textsc{Ausgabe:} +%\setcounter{Antworten}{1} +%\setcounter{secnumdepth}{-1} +%\setcounter{number}{0} +%\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS +%Hier steht der einleitende Text der Typ-2-Aufgabe. +% +%\addtocontents{toc}{\setcounter{tocdepth}{-10}} +%\begin{aufgabenstellung} +%\item Hier steht der Aufgabentext des ersten Items. +% +%\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 +% +%\end{aufgabenstellung} +% +%\begin{loesung} +%\item \subsection*{Lösungserwartung:} +% +%\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 +%\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 +% +%\setcounter{subitemcounter}{0} +%\subsection*{Lösungsschlüssel:} +% +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt1 +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt2 +% +%\end{loesung} +% +%\end{langesbeispiel} +%\addtocontents{toc}{\setcounter{tocdepth}{1}} +% +% +% +%\section{Einfügen von GeoGebra-Grafiken} +% +%Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können. +%\leer +% +%\begin{enumerate} +% \item Grafik in Geogebra zeichnen +% \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots +% \item Parameter einstellen +% \item \fbox{Erzeuge PSTricks} drücken +% \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren. +% +% \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich) +% +% \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden: +% +% \begin{verbatim} +% \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt} +% \end{verbatim} +% +% Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert. +% +%\end{enumerate} +% +%\meinlr{ +%\centering +%\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*} +%} +%{\centering +%\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}} +%} +%\leer +% +% +%\centering Kopie des PSTricks-Exports von Geogebra \\ +% (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\}) diff --git a/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty index 09bf9fd8ab1..c4d5f03b182 100644 --- a/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty +++ b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty @@ -10,7 +10,7 @@ % \NeedsTeXFormat{LaTeX2e}[1996/12/26] -\ProvidesPackage{srdp-mathematik}[2021/03/29 v1.9.0 Standard-Schularbeitsformate] +\ProvidesPackage{srdp-mathematik}[2021/11/04 v1.9.1 Standard-Schularbeitsformate] \usepackage{color} @@ -30,7 +30,7 @@ \usepackage{framed} \usepackage{array} \usepackage{tabularx} -\usepackage{tabu} +\usepackage{srdp-tables} \usepackage{environ} \usepackage{cancel} \usepackage{spreadtab} @@ -173,20 +173,23 @@ \makeatletter \NewEnviron{beispiel}[2][\unskip]{\begin{minipage}[t]{0.88\textwidth} -\addtocounter{number}{1} -\begin{enumerate} - \item[\thenumber.] \BODY -\end{enumerate} - - -\end{minipage} -\begin{minipage}[t]{0.1\textwidth} \raggedleft \small{\_\_\_/#2}\addtocounter{punkte}{#2}\\ -\antwort{\footnotesize #1 \normalsize}\end{minipage} -\vspace{\baselineskip} - -} + \addtocounter{number}{1} + \begin{enumerate} + \item[\thenumber.] {\BODY} + \end{enumerate} + + + \end{minipage} + \begin{minipage}[t]{0.1\textwidth} \raggedleft \small{\_\_\_/#2\addtocounter{punkte}{#2}\\\ifthenelse{\equal{#1}{\string 1/2}} + {$\left[{}^1{\mskip -5mu/\mskip -3mu}_2\right]$} + {\antwort{\footnotesize #1 \normalsize}}} + \end{minipage} + \vspace{\baselineskip} + + } +\newcommand{\pkte}[2][]{\hfill[0\,/\,\ifthenelse{\equal{#1}{\string 1/2}}{${}^1{\mskip -5mu/\mskip -3mu}_2$\,/\,}{}#2]} % % @@ -195,6 +198,7 @@ %%%%%%%%%%%%% Teil 2 Überschrift %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % + \newcommand{\TEILZWEI}{\newpage \ifodd\value{page}\thispagestyle{empty}\hbox{}\newpage\else \fi \begin{flushright} \small Name: \rule{7cm}{0.4pt} \normalsize @@ -247,7 +251,7 @@ \renewcommand*{\item}{\setcounter{subitemcounter}{0}\itemalt} \subsubsection{Aufgabenstellung:}% \begin{enumerate}[a),leftmargin=0pt] -\item \BODY +\item {\BODY} \end{enumerate}% \let\item\itemalt} @@ -255,7 +259,7 @@ \renewcommand*{\item}{\setcounter{subitemcounter}{0}\itemalt} \antwort{%% \begin{enumerate}[a),leftmargin=0pt] -\item \BODY +\item {\BODY} \end{enumerate}}% \let\item\itemalt} @@ -892,11 +896,12 @@ Complete the following sentence by putting a cross next to one of the given poss \newcommand\tfmultiplechoice[3][5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 \bgroup \jeroen@set@keys{#3}%% -\setcounter{counter}{0} +\setcounter{counter}{0}\setcounter{acheck}{0}\setcounter{bcheck}{0}\setcounter{ccheck}{0}\setcounter{dcheck}{0}\setcounter{echeck}{0}\setcounter{fcheck}{0}\setcounter{gcheck}{0}\setcounter{hcheck}{0}\setcounter{icheck}{0} \centering \tabulinesep=3mm \pgfmathsetseed{\theZufall} \declarenumlist{group}{1}{#1} +\pgfmathrandomitem\z{group}\setcounter{antworta}{\z}\prunelist{group} \ifthenelse{\numexpr#1 > 1}{\pgfmathrandomitem\z{group}\setcounter{antwortb}{\z}\prunelist{group}}{} \ifthenelse{\numexpr#1 > 2}{\pgfmathrandomitem\z{group}\setcounter{antwortc}{\z}\prunelist{group}}{} \ifthenelse{\numexpr#1 > 3}{\pgfmathrandomitem\z{group}\setcounter{antwortd}{\z}\prunelist{group}}{} diff --git a/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-tables.sty b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-tables.sty new file mode 100644 index 00000000000..28252f86a82 --- /dev/null +++ b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-tables.sty @@ -0,0 +1,2491 @@ + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{srdp-tables}[2021/11/04] +\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 alignmment 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 Rewritting 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: rewritting 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 rewritting 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 (inheritated 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}{Overwritting}}% + \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 Comptability 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 environnement}% +}% \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'. |