summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/booktabs-de
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/booktabs-de
Initial commit
Diffstat (limited to 'macros/latex/contrib/booktabs-de')
l---------macros/latex/contrib/booktabs-de/README1
-rw-r--r--macros/latex/contrib/booktabs-de/README-DE64
-rw-r--r--macros/latex/contrib/booktabs-de/booktabs-de.dtx1089
-rw-r--r--macros/latex/contrib/booktabs-de/booktabs-de.ins87
-rw-r--r--macros/latex/contrib/booktabs-de/booktabs-de.pdfbin0 -> 274075 bytes
5 files changed, 1241 insertions, 0 deletions
diff --git a/macros/latex/contrib/booktabs-de/README b/macros/latex/contrib/booktabs-de/README
new file mode 120000
index 0000000000..79eea71d25
--- /dev/null
+++ b/macros/latex/contrib/booktabs-de/README
@@ -0,0 +1 @@
+README-DE \ No newline at end of file
diff --git a/macros/latex/contrib/booktabs-de/README-DE b/macros/latex/contrib/booktabs-de/README-DE
new file mode 100644
index 0000000000..f2062c2716
--- /dev/null
+++ b/macros/latex/contrib/booktabs-de/README-DE
@@ -0,0 +1,64 @@
+ The booktabs package
+ For publication quality tables for LaTeX
+
+
+File: README
+Author: Danie Els
+Translation: Thomas Manderla / Christine Römer
+
+
+
+DESCRIPTION
+===========
+
+This package provide some additional commands to enhance
+the quality of tables in LaTeX. Guidelines are given as
+to what constitutes a good table in this context.
+
+Copyright: (C) 1995--2005 Simon Fear
+Licence: GPL
+
+FILES IN DISTRIBUTION
+=====================
+
+ BASE DISTRIBUTION:
+
+ README This file.
+ booktabs.ins Package installation file.
+ booktabs.dtx Package source file.
+ COPYING GPL license file.
+
+ booktabs.sty Package style file. It was produced by
+ executing "latex booktabs-de.ins".
+
+ DOCUMENTATION:
+
+ booktabs.pdf User manual for booktabs package-de. It was
+ produced by executing:
+ pdflatex booktabs-de.dtx
+ pdflatex booktabs-de.dtx
+ makeindex -s gglo.ist -o booktabs-de.gls booktabs-de.glo
+ makeindex -s gind.ist -o booktabs.ind booktabs-de.idx
+ pdflatex booktabs-de.dtx
+ pdflatex booktabs-de.dtx
+
+BASIC INSTALLATION
+====================
+
+ The minimum requirement to use the package is the to have
+ booktabs-de.sty in a directory where TeX can find it.
+
+ For a basic installation on a TDS compliant system, move the
+ following files to the following directories:
+
+ <texmf>/tex/latex/booktabs-de/
+ booktabs-de.sty
+
+ <texmf>/source/latex/booktabs/
+ booktabs-de.ins
+ booktabs-de.dtx
+ COPY
+
+ <texmf>/doc/latex/booktabs-de/
+ README-DE
+ booktabs-de.pdf
diff --git a/macros/latex/contrib/booktabs-de/booktabs-de.dtx b/macros/latex/contrib/booktabs-de/booktabs-de.dtx
new file mode 100644
index 0000000000..988276743d
--- /dev/null
+++ b/macros/latex/contrib/booktabs-de/booktabs-de.dtx
@@ -0,0 +1,1089 @@
+% \iffalse (meta-comment)
+% -----------------------------------------------------------------
+% File: booktabs-de.dtx
+% Author: Simon Fear
+% Maintainer: Danie Els (dnjels@sun.ac.za)
+% Modifiziert von: Christine R"omer and Thomas Manderla
+%
+% This file is part of the booktabs package for publication
+% quality tables for LaTeX
+%
+% Copyright (C) 1995--2005 Simon Fear
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2 of
+% the License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public
+% License along with this program; if not, write to the Free
+% Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+% MA 02111-1307 USA
+%
+% -----------------------------------------------------------------
+% This file contains the documentations and source code for the
+% booktabs-de package for use with LaTeX2e. See the file 'README-DE'
+% for a list of all the files as well as directions for the
+% installation of this package.
+% -----------------------------------------------------------------
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{booktabs-de.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{booktabs-de}
+%<*package>
+ [2005/04/14 v1.61803 publication quality tables]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{booktabs}[2005/04/14]
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[ngerman]{babel}
+%\usepackage[marginal]{footmisc}
+\usepackage{charter}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1ex plus 0.2ex minus 0.1ex}
+ \EnableCrossrefs
+ \CodelineIndex
+ \RecordChanges
+ \setlength\hfuzz{15pt}
+ \hbadness=7000
+ \MakeShortVerb{\=}
+ \MakeShortVerb{\"}
+ \PageIndex
+\begin{document}
+ \DocInput{booktabs-de.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{484}
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+%
+% \DeleteShortVerb{\|}
+% \GetFileInfo{booktabs-de.dtx}
+%
+%\title{Anfertigen von hochwertigen Tabellen mit \LaTeX \thanks{Diese Datei
+%basiert auf der booktabs-Version vl.61803 und der Revision von
+%2005/04/14.}}
+%\author{\Large{Simon Fear}\\300A route de Meyrin Meyrin\\Switzerland.\\\\
+%"Uberf"uhrt ins Deutsche\\ von Thomas Manderla und\\ Christine
+%R"omer\footnote{christine\_roemer@t-online.de}}
+%\date{Printed \today}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent Dieser Artikel beschreibt einige zus"atzliche Befehle in
+% =booktabs=, geschaffen f"ur die Verbesserung der Qualit"at von
+% Tabellen in \LaTeX{}. Richtlinien, was eine gute Tabelle
+% ausmacht, werden in diesem Zusammenhang auch angegeben. Die Ausf"uhrungen
+% sind zum =booktabs=-Paket aus dem Jahr 2000 (Version 1.61), das
+% der Ausgabe von 1995 (Version 1.00) einige Verbesserungen hinzugef"ugt
+% hatte, vor allem =longtable=-Kompatibilit"at.
+% Weitere Ausgaben (Versionen 1.618, 1.6180 und 1.61803) sind
+% blo"s \emph{bug patches} und Unterst"utzung f"ur das =colortbl=-Paket\footnote{Von Danie Els
+% (\texttt{dnjels@sun.ac.za}) in Abwesenheit des Autors.}.
+% \end{abstract}
+%
+% \bigskip
+%
+% \section{Einf"uhrung}
+%
+% Die unten beschriebenen Routinen sollten das einfache Erstellen von
+% Tabellen, wie sie in wissenschaftlichen B"uchern und Zeitschriften erscheinen,
+% erm"oglichen. Was sie von gew"ohnlichen \LaTeX -Tabellen unterscheidet,
+% ist die vorgegebene Nutzung von Abstand "uber- und unterhalb von Linien,
+% sowie Linien unterschiedlicher `Dicke'. Was sie weiterhin von Tabellen, wie sie
+% von vielen Leuten, die \LaTeX{} nutzen, erstellt werden, unterscheidet, ist
+% das Fehlen vertikaler und doppelter Linien.
+%
+% Es muss eine deutliche Unterscheidung zwischen dem, was man hier eine
+% {\em formale Tabelle} nennt, was ein Set an Werten in beschrifteten Spalten ist,
+% und dem, was man {\em Tableau} nennen werde, vornehmen. Letzteres ist das, was im
+% \LaTeX -Handbuch dargestellt ist, und zunehmend auch als Ausgabe vieler
+% Datenbankverwaltungssysteme zu finden ist. Solche Tableaus haben wahrscheinlich
+% Icons im "Uberfluss und verwenden sicherlich auch Farben. Das Layout solche eines
+% {em Tableaus} ist (hoffentlich) etwas Einmaliges, wenn man das Durcheinander an
+% Material,
+% das der Designer zu einer sinnvollen Kombination zusammenzustellen versucht,
+% bedenkt. Das Layout einer {\em Tabelle} hingegen hat sich durch Jahrhunderte an
+% Erfahrung etabliert und sollte nur in au"sergew"ohnlichen Umst"anden ge"andert
+% werden.
+%
+% Zur Illustration kann dieses Tableau aus dem \LaTeX -Handbuch
+% herangezogen werden (S.\,64 alte Edition):
+%
+% \begin{center}
+% \begin{tabular}{||l|lr||} \hline
+% M"ucken & Gramm & \$13.65 \\ \cline{2-3}
+% & je & .01 \\ \hline
+% Gnu & ausgestopft & 92.50 \\ \cline{1-1} \cline{3-3}
+% Emu & & 33.33 \\ \hline
+% G"urteltier & gefroren & 8.99 \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% Das ist ein Mischmasch an Informationen, das zwar wahrscheinlich,
+% so wie es ist, vern"unftig dargestellt ist (Aber ist der Emu nun ausgestopft
+% oder nicht?). Jedoch sollte es als ver"offentlichte Tabelle viel eher
+% gem"a"s der Richtlinien, die weiter unten auf der Seite im Handbuch empfohlen
+% werden, erscheinen:
+%
+% \begin{center}
+% \begin{tabular}{@{}llr@{}} \toprule
+% \multicolumn{2}{c}{Artikel} \\ \cmidrule(r){1-2}
+% Tier & Beschreibung & Preis (\$)\\ \midrule
+% M"ucke & pro Gramm & 13.65 \\
+% & pro St"uck & 0.01 \\
+% Gnu & ausgestopft & 92.50 \\
+% Emu & ausgestopft & 33.33 \\
+% G"urtetier & gefroren & 8.99 \\ \bottomrule
+% \end{tabular}
+% \end{center}
+%
+% Es bedarf viel weniger M"uhe, das als formale Tabelle zu setzen.
+% Es muss kein neues Layout f"ur alles, was gemacht wird, ausgearbeitet werden.
+% Zudem kann fast gewiss sein, dass die Daten nicht falsch gelesen werden, weil
+% der Leser nicht lernen muss, wie er irgendeine neuartige Pr"asentation zu
+% lesen hat.
+%
+% Ungl"ucklicherweise kann die obige Tabelle nicht in reinem \LaTeX ,
+% erzeugt werden. Sie kann so gesetzt werden, aber trotz
+% bester Bem"uhungen erzeugt das Nutzen simpler =\hline=-Befehle das
+% Nachfolgende:
+%
+% \begin{center}
+% \begin{tabular}{@{}llr@{}} \hline
+% \multicolumn{2}{c}{Artikel} \\ \cline{1-2}
+% Tier & Beschreibung & Preis (\$)\\ \hline
+% M"ucke & pro Gramm & 13.65 \\
+% & pro St"uck & 0.01 \\
+% Gnu & ausgestopft & 92.50 \\
+% Emu & ausgestopft & 33.33 \\
+% G"urteltier & gefroren & 8.99 \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% Zu beachten ist (wenn es nicht schon offensichtlich ist), dass nicht genug
+% Abstand zwischen der obersten Linie und dem großen `A' von `Artikel' ist.
+% "Ahnliches gilt f"ur die anderen Linien: Ein direkter Vergleich zeigt dies
+% deutlich.
+% Au"serdem sind in der ersten Version die oberen und unteren Linien
+% st"arker als die mittlere, die wiederum st"arker als die Teillinie
+% unterhalb von
+% `Artikel' ist. Nat"urlich \emph{k"onnte} man =\doublerulesep= neu definieren
+% und dann =\hline\hline= nutzen, um einen "ahnlichen Effekt zu erzielen. Und man
+% k"onnte \emph{struts} nutzen, um die Abst"ande zu verbessern. Aber es ist nicht n"otig,
+% an solche Sachen denken zu m"ussen.
+% Der =booktabs=-Style definiert seine Befehle so,
+% dass sich um solche Dinge automatisch gek"ummert wird.
+%
+% Allgemein w"urde ich sagen, dass dieses Paket von keinem Interesse f"ur
+% diejenigen
+% ist, die nach einer Alternative zu Pic\TeX{} suchen, um schicke Tableaus zu
+% zaubern. Eher ist es eine Gestaltungsrichtlinie im Bereich Tabellenlayout
+% f"ur Autoren von wissenschaftlichen Artikeln und B"uchern.
+% Es geht nicht zu weit, zu sagen, dass, wenn Sie mit den Befehlen dieses Pakets
+% keine Tabelle erstellen können, es neu entwerfen sollten.
+%
+% \subsection{Eine Anmerkung zur Terminologie\label{notation}}
+%
+% Im Britischen Setzen wird eine `line' stets `rule' genannt. Vielleicht
+% verwirrenderweise (jedenfalls aus historischen Gr"unden) wird die `thickness'
+% einer Linie oft als `width' bezeichnet. (wobei nahezu jeder andere dies
+% `depth' oder `height' nennen w"urde, wenn sie sich auf eine horizontale
+% Linie bezieht). Eine `thick black line' wird `heavy
+% rule' genannt. Ich habe diese Terminologie in den meisten der neuen Befehle
+% beibehalten. Wenn es f"ur nichts anderes gut ist, dann zumindest, um
+% Verwirrung mit =\hline= auszuschlie"sen. In der Deutschen "Ubersetzung wird an
+% der Stelle von `St"arke' gesprochen.
+%
+% \section{Das Layout formaler Tabellen}
+%
+% Man geht nicht sehr weit fehl, wenn man zwei einfache Regeln
+% im Hinterkopf behält:
+% \begin{enumerate}
+% \item Nie vertikale Linien benutzen.
+% \item Nie doppelte Linien benutzen.
+% \end{enumerate}
+% Diese Richtlinien wirken extrem, aber mir ist noch kein gutes Argument,
+% warum man sie brechen sollte, untergekommen. Zum Beispiel, wenn man das
+% Gef"uhl hat,
+% dass die Information in der linken H"alfte der Tabelle von der rechten
+% Seite so verschieden ist, dass sie durch eine vertikale Linie getrennt
+% werden muss, so sollte man stattdessen lieber zwei Tabellen verwenden.
+% Nicht jeder h"alt sich an die zweite Regel: Ich habe f"ur einen Verleger
+% gearbeitet, der auf doppelte Linien "uber Summen bestand. Meine Wahl
+% w"are das nicht gewesen.
+%
+% Es gibt drei weitere Regeln, die es wert sind, hier erw"ahnt zu werden, weil
+% sie normalerweise au"serhalb der Kreise von professionellen Setzern
+% und Redakteuren unbekannt sind:
+% \begin{enumerate}\setcounter{enumi}{2}
+% \item St"uckzahlen sollten in den Spaltenkopf (nicht in den K"orper der
+% Tabelle) gesetzt werden.
+% \item Einem Dezimalpunkt sollte stets eine Ziffer vorangehen; also 0.1
+% {\em nicht} blo\ss .1.
+% \item `Ditozeichen', wie G"ansef"'u"schen, sollten nicht benutzt werden,
+% um einen Wert zu wiederholen. Unter vielen Umst"anden macht eine freie
+% Zelle das Ganze genauso gut. Falls nicht, sollte der Wert wiederholt
+% werden.
+% \end{enumerate}
+%
+% Ob Sie den kleinen Penibilit"aten folgen wollen oder nicht, wenn Sie nur die
+% folgenden Befehle in Ihren formalen Tabellen benutzen, werden Ihnen Ihre Leser
+% dankbar sein. Ich möchte betonen, dass die Richtlinien nicht nur dazu da sind,
+% die Pedanten gl"ucklich zu machen. Das Prinzip ist, dass eine verst"arkte Struktur
+% in der Pr"asentation bereits von Beginn an die Gedanken strukturiert.
+%
+% \section{Verwenden der neuen Befehle}
+%
+% \DescribeMacro\toprule
+% \DescribeMacro\midrule
+% \DescribeMacro\bottomrule
+% Im einfachsten aller F"alle beginnt eine Tabelle mit =\toprule=, hat
+% eine einzelne Reihe von Spaltenk"opfen und dann eine trennende Linie, die
+% =\midrule=. Nach den Datenspalten wird mit =\bottomrule= abgeschlossen.
+% Die meisten Buchverleger setzen =\toprule= und
+% =\bottomrule= st"arker (also dicker, siehe Punkt 1.1\ref{notation}) als die
+% zwischenliegende =\midrule=. Wenn die Tabellen jedoch in sehr kleinen
+% Schriftgr"o"sen erscheinen, ist es manchmal unm"oglich, diese Unterscheidung zu
+% treffen und zudem setzen manche Journals routinem"a"sig alle Linien in der
+% gleichen St"arke.
+%
+% Die Linienbefehle hier verwenden alle eine Voreinstellung, der im Dokument
+% (vorzugs- aber nicht notwendigerweise in der Pr"aambel) nachjustiert werden
+% kann. F"ur die oberste und die unterste Linie ist diese Voreinstellung
+% =\heavyrulewidth= und f"ur mittlere Linien ist er =\lightrulewidth= (eine
+% genauere Beschreibung folgt). In sehr seltenen F"allen, wenn etwas besonderes
+% getan werden muss, k"onnen die optionalen Argumente in die Linienbefehle
+% eingesetzt werden, welche folgende formale Syntax haben:
+%
+% \begin{quote}
+% =\toprule=[\meta{wd}] \\
+% =\midrule=[\meta{wd}] \\
+% =\bottomrule=[\meta{wd}]
+% \end{quote}
+%
+% Hierbei ist \meta{wd} eine \TeX dimension (zum Beispiel 1pt, .5em,
+% etc.).
+%
+% Alle hier beschriebenen Linienbefehle stehen nach dem Abschluss =\\=
+% der vorigen Reihe (au"ser =\toprule=, der
+% gleich nach dem =\tabular{}=befehl kommt). In anderen Worten, sie stehen
+% genau da, wo simples \LaTeX{} =\hline= oder =\cline= erlaubt.
+%
+% \DescribeMacro\cmidrule
+% H"aufig wird eine Teillinie ben"otigt, die sich nur "uber einige der Spalten
+% erstreckt, wof"ur ein =\cmidrule= (Der Pendant vom \LaTeX =\cline=
+% Befehl) ben"otigt wird. F"ur gew"ohnlich sollte diese Linie nicht "uber die
+% gesamte Breite der Spalten reichen. Dies ist insbesondere der Fall, wenn ein
+% =\cmidrule= direkt nach dem Ende eines anderen begonnen werden muss (\LaTeX
+% =\cline=n sto"sen hier zusammen, wenn man nicht ganz besonders vorsichtig mit
+% =\extracolsep= ist). Von daher wird man f"ur gew"ohnlich die optionalen
+% `Trimm'befehle nutzen wollen.
+%
+% Die Trimmbefehle stehen, wenn sie "uberhaupt genutzt werden, in
+% Klammern (wie diese hier), ohne trennende Leerzeichen. Die m"oglichen
+% Festlegungen sind =r=, =r{=\meta{wd}=}=, =l= und
+% =l{=\meta{wd}=}=, oder jede Kombination davon, wobei \meta{wd} eine
+% Abmessung ist, und =r= und =l= anzeigen, ob das rechte und/oder linke Ende
+% der Linie beschnitten werden soll. Die Form ohne explizites Argument entspricht
+% =r{\cmidrulekern}=, wobei =\cmidrulekern= voreingestellt
+% $0.5$\,em enth"alt, aber es kann vom Nutzer in der Pr"aambel
+% festgelegt werden.\footnote{Nutzerr"uckmeldungen ergaben, dass die Vorgabe der
+% Version 1.00, 0.25\,em, zu klein war. Entschuldigung f"ur alle Verluste an
+% R"uckw"artskompatibilit"at. Zu beachten ist, dass das urspr"ungliche
+% Verhalten einfach durch \texttt{\textbackslash cmidrulekern} in der Pr"aambel
+% wiederhergestellt werden kann, oder einfach \texttt{(r\{.25\,em\})}
+% verwendet werden kann.}
+%
+% Hier ist ein erl"auterndes Beispiel: =(lr{.75em})= macht einen vorgegebenes
+% linkes Beschneiden und genau $0.75$\,em auf der rechten Seite. =(r{.75em}l)=
+% ist hier genauso g"ultig.\footnote{\texttt{(lrrlr\{.75em\})} macht "ubrigens das
+% gleiche: Nur die zuletzt angetroffenen linken und rechten Festlegungen werden
+% angewandt.}
+%
+% Die vollst"andige Syntax des Befehls lautet
+% \begin{quote}
+% =\cmidrule=[\meta{wd}](\meta{trim})\{$a$--$b$\}
+% \end{quote}
+% wobei \meta{wd} ein optionaler Linienst"arkenbefehl ist, in eckigen
+% Klammern [wie diese hier] (die
+% Voreinstellung hierbei ist =\cmidrulewidth=) und das letzte Argument,
+% \emph{das nicht optional ist}, gibt die Zahlen der Spalten an, die "uberspannt
+% werden sollen.
+%
+% Als Beispiel einer Anwendung dieser Befehle kann der Code, der die
+% Beispieltabelle oben erzeugte, dienen:
+% \begin{verbatim}
+% \begin{tabular}{@{}llr@{}} \toprule
+% \multicolumn{2}{c}{Artikel} \\ \cmidrule(r){1-2}
+% Tier & Beschreibung & Preis (\$)\\ \midrule
+% Mücke & pro Gramm & 13.65 \\
+% & pro Stück & 0.01 \\
+% Gnu & ausgestopft & 92.50 \\
+% Emu & ausgestopft & 33.33 \\
+% Gürteltier & gefroren & 8.99 \\ \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+% \DescribeMacro\addlinespace
+% Gelegentlich m"ochte man ein wenig zus"atzlichen Abstand zwischen manchen Reihen
+% der Tabelle einzuf"ugen; zum Beispiel vor der letzten Reihe, wenn sie eine Summe
+% angibt. Dazu bedarf es blo"s des Einf"ugens von
+% \begin{quote}
+% =\addlinespace=[\meta{wd}]
+% \end{quote}
+% nach den =\\= Abschlusszeichen. Zwischen normalen Textreihen ist der Effekt
+% genau wie bei herk"ommlichem \LaTeX verwendung von
+% =\\[\defaultaddspace]=, was ich eher klobig finde. Au"serdem ist es besser
+% als =\\ \\=, was zu viel Abstand einf"ugt. Zudem kann
+% =\addlinespace= vor, nach oder zwischen Zeilen verwendet werden, wenn man das
+% genaue Ausma"s an Abstand, der eingef"ugt werden soll, kontrollieren will. Der
+% voreingestellte Abstand vor oder nach einer angrenzenden Linie wird entweder
+% durch genau =\defaultaddspace= oder die Gr"o"se des Abstands, die im optionalen
+% Argument angegeben wird, ersetzt.\footnote{Das ist eine "Anderung zur Version
+% 1.00,
+% wo der Abstand manchmal \emph{zus"atzlich} zum voreingestellten Abstand um die
+% Linie berechnet wurde.}
+%
+% \section{Missbrauch der neuen Befehle}
+%
+% F"ur ein Zusammenarbeiten der neuen Linienbefehle mit =\hline= oder
+% =\cline= kann nicht garantiert werden, auch wenn diese verf"ugbar und
+% unver"andert bleiben. Man kann sich aber auch keinen Grund vorstellen,
+% warum man sie vermischen wollte.
+%
+% Viel wichtiger ist, dass die Linien, die durch neue Befehle erstellt
+% werden, unter keiner Garantie mit Vertikalen verbunden werden, die durch ={|}=
+% -Buchstaben in der Pr"aambel gebaut werden. Das ist ein Feature (siehe oben). Man
+% sollte in Tabellen einfach keine vertikalen Linien verwenden, Punkt.
+%
+% \DescribeMacro\morecmidrules
+% Wenn man sich vom Benutzen einer Doppellinie beim besten Willen nicht abhalten
+% kann, wird selbst eine so bizarre Konstruktion wie =\toprule\bottomrule\midrule=
+% ohne eine Fehlermeldung funktionieren (genauso wie man =\hline= verdoppeln
+% kann). Diese Linien werden vom normalen \LaTeX separator =\doublerulesep=
+% getrennt. Wenn die Perversion, doppelte Linien zu setzen, soweit geht,
+% doppelte =\cmidrule=s einzubauen, so wird man den zus"atzlichen Befehl
+% =\morecmidrules= ben"otigen, um das ordentlich zu machen, denn normalerweise sind
+% zwei =\cmidrule=s in einer Reihe eine vern"unftige Konstruktion, die nach zwei
+% Linien in derselben `Linienreihe' ruft. Daher schreibt der zweite Befehl bei
+% \begin{quote}
+% =\cmidrule=\{1-2\}=\cmidrule{1-2}=
+% \end{quote}
+% eine Linie, die die erste genau "uberschreibt.
+% Ich nehme an, man m"ochte dann eher
+% \begin{quote}
+% =\cmidrule=\{1-2\}=\morecmidrules==\cmidrule=\{1-2\}
+% \end{quote}
+% was eine doppelte Linie zwischen den Spalten eins und zwei ergibt und durch
+% =\cmidrulesep= getrennt wird (Hinweis: Da eine =\cmidrule= normalerweise
+% sehr d"unn ist, richtet das normale =\doublerulesep= hier wahrscheinlich
+% zu viel Abstand ein). Eine ganze neue Reihe an Linien sollte abgeschlossen
+% werden, bevor der Befehl =\morecmidrules= eingegeben wird. Zu beachten ist, dass
+% =\morecmidrules= keinerlei Effekt hat, wenn er nicht unmittelbar einer
+% =\cmidrule= folgt. (d.\,h. es ist kein allgemeiner abstandschaffender Befehl).
+%
+% \DescribeMacro\specialrule
+% Falls man das au"sergew"ohnliche Bed"urfnis hat, genau $0.5$\,em, zwischen zwei
+% Linien festzulegen, so lie"se sich eine Konstruktion wie =\midrule =
+% =\addlinespace[.5em] \midrule= verwenden. In einem seltenen Anfall von Toleranz
+% habe ich dann doch den Befehl
+% \begin{quote}
+% =\specialrule=\{\meta{wd}\}\{\meta{abovespace}\}\{\meta{belowspace}\}
+% \end{quote}
+% erstellt, bei dem alle drei Argumente obligatorisch sind. Aber, wer den h"aufig
+% verwendet, hat Zweck und Inhalt der obigen Richtlinien falsch verstanden. Eine
+% vorangehende Linie f"ugt ihren voreingestellten Abstand nicht unter sich und
+% eine nachstehende Linie f"ugt keinen Abstand "uber sich hinzu, folglich bekommt
+% man \emph{genau} den Abstand, der in den Argumenten angegeben wird.\footnote{Das
+% ist eine "Anderung zur Version 1.00, die vielmehr einen extra
+% \texttt{\textbackslash doublerulesep}, wo immer sie konnte, hinzuf"ugte.}
+%
+%
+% \section{Booktabs und longtables}
+%
+% Wenn man sowohl das =booktabs=- als auch das =longtable=-Paket geladen hat,
+% k"onnen die =booktabs= Linienbefehle ganz genau wie oben beschrieben in einer
+% =longtable= verwendet werden.
+%
+% Es gibt eine Neuheit, die es wert ist, erw"ahnt zu werden: Innerhalb
+% einer =longtable= k"onnen die optionalen linken und rechten Trimmbefehle
+% verwendet werden, die normalerweise nur f"ur =\cmidrule=s, mit =\toprule=,
+% =\midrule= und =\bottomrule= (und wenn es sein muss auch mit=\specialrule=)
+% funktionieren. Nutzer, die die vorherige Ausgabe wegen longtable-Kompatibilit"at
+% gehackt haben,\footnote{Jim Service war der Erste.} schienen alle Linien auf der
+% rechten Seite um 0.5\,em beschneiden zu wollen. Ich denke, dasselbe l"asst sich
+% durch =@{}= als Spezifikation der letzten Spalte erreichen.
+% Dennoch, nach dem Ausarbeiten des restlichen Codes war es ein
+% leichtes, Parsing f"ur die optionalen Argumente hinzuzuf"ugen, also hab
+% ich es gemacht. (Ich habe es aber nicht durchgezogen, noch das optionale Beschneiden der
+% Linien \emph{au"serhalb} einer =longtable= zu erm"oglichen. Das w"are eine
+% Riesenarbeit gewesen. Wenn man unbedingt beschnittene Linien haben muss, dann
+% sollte man =longtable=s verwenden!)
+%
+% Ein Hinweis etwas technischer Natur: Innerhalb einer =longtable= ergeben
+% =\hline= und
+% =\hline\hline= beide eine \emph{doppelte} Linie (um Seitenumbr"uche an
+% dieser Stelle zu erm"oglichen). Die =booktabs=-Linie tut das hingegen
+% \emph{nicht}. Die automatische Doppelung von =\hline= in der =longtable= ist
+% fragw"urdig, sogar nach Aussage der Dokumentation zu dem Paket.
+% Aber doppelte =booktabs=Linien ergeben auch beinahe gar keinen Sinn. Im
+% ungl"ucklichen Fall, dass eine =booktabs=linie an einem Seitenumbruch
+% erscheinen sollte, muss man die notwendigen Anpassungen per Hand machen.
+% (Im Allgemeinen heißt das, die st"orende Linie zu l"oschen.)
+%
+%
+% \section{Booktabs und das colortbl-Paket}
+%
+% =Booktabs= ist jetzt mit dem =colortbl=-Paket kompatibel.\footnote{Seit v1.6180}
+% Der Befehl \cmd{\arrayrulecolor}\\
+% wird farbige Linien hervorrufen, wenn das =colortbl=-Paket geladen ist.
+%
+%
+% \section{Technische Zusammenfassung der Befehle}
+%
+% Die neuen Linienbefehle sind innerhalb der voreingestellten =tabular=- (und
+% =array=-) Umgebungen g"ultig, im modifizierten =tabular= und =array= von
+% =\usepackage{array}=, und innerhalb der voreingestellten Tabellen und
+% =longtables= nach\\
+% =\usepackage{longtable}=.
+%
+% Die Befehle folgen der Standardplatzierungssyntax von =\hline=.
+% Es kann Platz (sogar ein, aber nicht zwei Enter)
+% zwischen aufeinanderfolgenden Linienbefehlen sein.
+% \footnote{Eine willkommene Ver"anderung gegen"uber Version 1.00,
+% bei der Abstand zwischen Linienbefehlen f"ur r"atselhafte Fehlermeldungen sorgte.}
+%
+% Was sich als gro"se Ver"anderung zu vorherigen Ausgaben zeigt, ist, dass
+% ich innerhalb des Macrocodes jetzt drei Linienklassen definiere. (Im
+% normalen Gebrauch ben"otigt man diese Definitionen nicht, deshalb habe ich sie
+% oben nicht erw"ahnt.
+% Eine Linie der Klasse 1 (ansonsten eine `normale' Linie genannt) ist jede
+% =\toprule=, =\midrule=, =\bottomrule=, oder =\cmidrule=. Die Linien der Klasse 2
+% sind =\specialrule= und =\addlinespace=. Schlie"slich ist eine Linie der Klasse
+% 0 keine der vorhergehenden -- oder in anderen Worten, "uberhaupt keine
+% Linie.\footnote{Mit der Ausnahme, dass \texttt{\textbackslash hline} und
+% \texttt{\textbackslash cline} Klasse 0 sind. Doch es gibt keinen Grund, dar"uber
+% schlaflose N"achte zu verbringen, da man die beiden Linienziehsysteme nicht
+% durcheinander bringen m"ochte.} Zu beachten ist, dass =\addlinespace= als
+% eine Klasse-2-Regel gilt, nicht als Klasse-0-Text.
+%
+% Im Folgenden, wird jeder Befehl im `normalen Gebrauch', beschrieben, also
+% die Linie wird zwischen zwei Textzeilen verwendet. (Oder technischer,
+% ihr geht eine Klasse-0-Linie vorher und eine schlie"st sich ihr an). Danach
+% wird ein Blick auf die Ausnahmen geworfen.
+% \begin{quote}
+% =\toprule=[\meta{wd}]
+% \end{quote}
+% Eine Linie von der St"arke \meta{wd} (default =\heavyrulewidth=) mit
+% =\abovetopsep= Abstand dar"uber und
+% =\belowrulesep= zus"atzlichen vertikalen darunter eingef"ugten Abstand. Als
+% Voreinstellung ist =\abovetopsep= null, was f"ur eine Linie, die ganz oben
+% stehen soll,
+% recht vern"unftig scheint. Wenn die Tabellen jedoch Beschriftungen haben,
+% kann es sinnvoller sein, =\abovetopsep= zu verwenden, um eine angemessene Menge
+% an Abstand zwischen Beschriftung und Tabelle einf"ugen, als im Eifer des Gefechts
+% daran zu denken, einen =\vspace{}=-Befehl einzusetzen.
+% \begin{quote}
+% =\midrule=[\meta{wd}]
+% \end{quote}
+% Eine \meta{wd} (default =\lightrulewidth=) Linie mit
+% =\aboverulesep= Abstand dar"uber und
+% mit =\belowrulesep= Abstand darunter.
+% \begin{quote}
+% =\bottomrule=[\meta{wd}]
+% \end{quote}
+% Eine \meta{wd} (default =\heavyrulewidth=) Linie mit =\aboverulesep=
+% Abstand dar"uber und mit =\belowbottomsep= Abstand darunter. Voreingestellt ist
+% =\belowbottomsep= null\footnote{Das ist eine Ver"anderung zur Version 1.00,
+% bei der stets ein \texttt{\textbackslash belowrulesep}} war.
+% Es gibt einen h"aufig vorkommenden und legitimen Grund, warum man Platz unter
+% der untersten Linie schaffen möchte: n"amlich, wenn es um Fu"snoten in Tabellen
+% geht.
+% Wenn man nicht die Voreinstellung "uberschreibt, kann man
+% =\bottomrule \addlinespace[\belowrulesep]= verwenden
+% oder einen passend gestalteten \emph{strut} in den Fu"snotentext setzen.
+% Aber damit es sich sinnvoll in einer =longtable=-Fu"szeile verh"alt,
+% muss die Voreinstellung null sein.
+% \begin{quote}
+% =\cmidrule=[\meta{wd}](\meta{trim})\{$a$--$b$\}
+% \end{quote}
+% Eine \meta{wd} (default =\cmidrulewidth=) Linie mit
+% =\aboverulesep= Abstand dar"uber (au"ser sie folgt einer anderen
+% =\cmidrule=, in welchem Fall sie der gleichen vertikalen Anordnung folgt. Das
+% gleiche passiert, wenn sie auf eine =\morecmidrules= folgt, getrennt von einer
+% vorhergehenden =\cmidrule= um =\cmidrulesep=).
+% Eine =\cmidrule= hat
+% =\belowrulesep= unter sich (au"ser ihr folgt eine andere
+% =\cmidrule=, in welchem Fall die folgende Linie der gleichen vertikalen
+% Anordnung folgt; oder wenn nach ihr eine =\morecmdirules= kommt, in welchem Fall
+% =\cmidrulesep= unter ihr Platz gelassen wird).
+%
+% Die =\cmidrule= "uberspannt Spalten $a$ bis $b$ genauso, wie es im obligatorischen
+% Argument angegeben wurde. Das optionale Argument \meta{trim}, das wenn
+% "uberhaupt in Klammern steht, kann jede Sequenz der Zeichen =r=, =l=
+% und ={=\meta{wd}=}= beinhalten, wobei letzteres das Kerning auf die Seite
+% anwendet, die das direkt vorhergehende Zeichen angab.
+% (Momentan wird hier noch nicht auf Fehler "uberpr"uft, es gilt also darauf zu
+% achten, die Syntax richtig zu setzen.)
+% \begin{quote}
+% =\morecmidrules=
+% \end{quote}
+% Instruiert \LaTeX\ damit, eine neue Reihe von =\cmidrules= zu beginnen,
+% die von der letzten durch =\cmidrulesep= getrennt wird. Hat in einem anderen
+% Kontext keine Bedeutung.
+% \begin{quote}
+% =\specialrule=\{\meta{wd}\}\{\meta{abovespace}\}\{\meta{belowspace}\}
+% \end{quote}
+% Eine \meta{wd} Linie -- zu beachten ist, dass das hier ein obligatorisches
+% Argument ist -- mit
+% \meta{abovespace} dar"uber und \meta{belowspace} darunter.
+% \begin{quote}
+% =\addlinespace=[\meta{wd}]
+% \end{quote}
+% Technisch gesehen hat das denselben Effekt wie
+% =\specialrule{0pt}{0pt}{=\meta{wd}=}=, d.\,h. eine Linie ohne St"arke und ohne
+% Abstand dar"uber und mit \meta{wd} (default =\defaultaddspace=) Abstand
+% darunter. Dieser Befehl wurde in erster Linie designed , um im Tabellenk"orper
+% Abst"ande hinzuzuf"ugen, kann aber auch genutzt werden, um eine genaues
+% Ma"s an Abstand "uber oder unter einer Klasse-1-Linie festzulegen.
+%
+% \vspace{1em}
+% Nun zu den Ausnahmen zu den oberen Befehlen. Es wurde bereits in den
+% Definitionen gezeigt, dass vor und nach den Klasse-2-Linien genauso viel
+% Abstand gelassen wird, wie in den Argumenten angegeben.
+% Das hat zur Folge, dass eine Klasse-2-Linie den Abstand, der normalerweise
+% durch eine Klasse-1-Linie erzeugt w"urde, unterdr"uckt (Z.\,B.
+% =\belowrulesep= nach einer =\toprule=) und ihn mit dem Argument
+% der Klasse-2-Linie ersetzt. Analog dazu wird bei der Kombination
+% \{Klasse-2-Linie\}\{Klasse-1-Linie\} der "ubliche Abstand oberhalb
+% der Klasse-1-Linie (z.\,B. =\aboverulesep=) unterdr"uckt. Allerdings wird bei
+% der Kombination \{Klasse-2-Linie\}\{Klasse-2-Linie\} kein Abstand unterdr"uckt:
+% die Linien werden sowohl durch ={=\meta{belowspace}=}= der ersten Linie
+% als auch durch ={=\meta{abovespace}=}= der zweiten Linie getrennt.
+% Nicht zuletzt ergibt die Kombination \{Klasse-1-Linie\}\{Klasse-1-Linie\}
+% immer Linien, die durch =\doublerulesep= getrennt sind und sie unterdr"uckt
+% allen normalen Abstand, der zwischen den Linien erzeugt worden ist (aber
+% l"asst "uber der ersten und unter der zweiten normale Abst"ande).
+%
+% Als eine Ausnahme zu dieser Ausnahme schlie"st `Klasse-1-Linie'
+% =\cmidrule= aus. Derartige Linien lassen sich mit anderen =\cmidrule=s und
+% =\morecmidrules= ganz normal wie oben beschrieben kombinieren. Ich wei"s
+% nicht, und es ist mir auch egal, was die Kombination
+% =\toprule\cmidrule{1-2}\midrule= erg"abe. Ich sehe keine Entschuldigung
+% f"ur eine derartige Anwendung.
+%
+%\vspace{1em}
+% Die voreingestellten Ausma"se werden zu Beginn der Makrobeschreibung
+% (Section \ref{code}) definiert. Der Nutzer kann diese Voreinstellungen
+% in der Pr"aambel "andern oder auch au"serhalb einer Tabellenumgebung,
+% ganz einfach, indem er einen Befehl in genau demselben Format wie in
+% Sektion \ref{code} einf"ugt. Eine Neudefinition wird bis zum Ende des Dokuments,
+% oder bis sie wieder neu definiert wird, wirken.
+% \emph{Innerhalb einer Tabelle} m"usste man die "Anderung global in einer
+% =noalign=-Gruppe machen:
+% z.\,B. \verb|\noalign\{\global\abovetopsep=1em\toprule}|. Ich hoffe,
+% wird nie n"otig sein.
+%
+% \section{Danksagungen}
+% Bin nat"urlich dem DEK und Lamport riesig zu Dank verpflichtet; das optionale
+% Argument und das =\cmidrule=zeug
+% insbesondere wurde von =latex.sty= geklaut.
+% Das Dokumentationtreiberzeug wurde von der tools-Paketbeschreibung
+% =dcolumn.dtx= von David Carlisle geklaut.
+%
+% F"ur das beta-Testen und die Unterstützung \ldots
+%
+% \StopEventually
+%
+% \section{Der code\label{code}}
+%
+% Die aktuelle Version wird am Anfang der Datei definiert, was in etwa so
+% aussieht
+% \begin{macrocode}
+%<*package>
+%\NeedsTeXFormat{LaTeX2e}
+%\ProvidesPackage{booktabs}
+% [\filedate\space version\fileversion]
+% \end{macrocode}
+%
+% Zuerst werden die oben beschriebenen neuen Dimensionen eingerichtet:
+% \begin{macrocode}
+\newdimen\heavyrulewidth
+\newdimen\lightrulewidth
+\newdimen\cmidrulewidth
+\newdimen\belowrulesep
+\newdimen\belowbottomsep
+\newdimen\aboverulesep
+\newdimen\abovetopsep
+\newdimen\cmidrulesep
+\newdimen\cmidrulekern
+\newdimen\defaultaddspace
+\heavyrulewidth=.08em
+\lightrulewidth=.05em
+\cmidrulewidth=.03em
+\belowrulesep=.65ex
+\belowbottomsep=0pt
+\aboverulesep=.4ex
+\abovetopsep=0pt
+\cmidrulesep=\doublerulesep
+\cmidrulekern=.5em
+\defaultaddspace=.5em
+% \end{macrocode}
+% Und einige interne Z"ahler, die f"ur den Endnutzer von keinem Interesse
+% sind, die unten beschrieben werden, sobald es n"otig sein sollte:
+%
+% \changes{v1.618}{2003/03/28}{Remove \cs{@cmidrulewidth} }
+% \begin{macrocode}
+\newcount\@cmidla
+\newcount\@cmidlb
+\newdimen\@aboverulesep
+\newdimen\@belowrulesep
+\newcount\@thisruleclass
+\newcount\@lastruleclass
+\@lastruleclass=0
+\newdimen\@thisrulewidth
+% \end{macrocode}
+
+% \DescribeMacro\futurenonspacelet
+%
+% Als n"achstes wird ein n"utzliches Makro definiert
+% (mehr oder weniger direkt aus dem
+% Kapitel Dirty Tricks aus dem \TeX book; dort verzeichnet). Man sollte
+% =\futurenonspacelet= anstelle von =\futurelet= verwenden, wenn man nach dem
+% n"achsten (non-space) Zeichen, nach einem Makro mit einem Argument sucht.
+% (Nach einem Makro
+% ohne ein Argument wird ein Leerzeichen ohnehin ignoriert, also w"urde
+% =\futurenonspacelet= nicht gebraucht werden.) Dieser Kniff erlaubt es dem
+% Nutzer, wei"se Leerzeichen zwischen aufeinanderfolgenden Linienbefehlen zu
+% setzen (was in Version 1.00 nicht klappte).
+% \begin{macrocode}
+\def\futurenonspacelet#1{\def\@BTcs{#1}%
+ \afterassignment\@BTfnslone\let\nexttoken= }
+\def\@BTfnslone{\expandafter\futurelet\@BTcs\@BTfnsltwo}
+\def\@BTfnsltwo{\expandafter\ifx\@BTcs\@sptoken\let\next=\@BTfnslthree
+ \else\let\next=\nexttoken\fi \next}
+\def\@BTfnslthree{\afterassignment\@BTfnslone\let\next= }
+% \end{macrocode}
+%
+%
+% \subsection{Linien von ganzer St\"arke}
+%
+% Wenn man nicht in einer =longtable=Umgebung ist, kann man einfach
+% Linien von ganzer St"arke als =\hrule= in einer =\noalign{}=-Gruppe
+% bearbeiten. Innerhalb einer =longtable= jedoch muss die Linie wie eine
+% =\cmidrule{1-\LT@cols}= gezogen werden (Die Begr"undung daf"ur ist in der
+% =longtable=-Dokumentation erkl"art).
+%
+% Um beides zu erlauben, m"ussen alle Linienmakros sofort eine
+% =\noalign=-Gruppe "offnen, w"ahrend sie ausarbeiten, ob sie innerhalb
+% einer =longtable= aufgerufen wurden; wenn das nicht gemacht wird, bekommt,
+% der \TeX zu Grunde liegender =\halign=-Prozess Schluckauf.
+% Ich verwende den kleinen Trick von \LaTeX{}
+% (\verb?\ifnum=0`}?), um dem Parser vorzumachen, dass die
+% Klammerzahl in Ordnung ist. Die Klammer wird nach dem ganzen "Uberspringen
+% am Ende des =\@BTendrule=-Makros dann tats"achlich geschlossen.
+%
+% Die Klasse-1-Linien und =\specialrule= unterscheiden sich in den Voreinstellungen
+% nur im Abstand dar"uber und darunter und in der St"arke, die durch eine normale
+% Routine erlassen wird, =\@BTrule=,
+% siehe unten. Die Abst"ande, =\@aboverulesep= und =\@belowrulesep=,
+% werden innerhalb der =\noalign=gruppe festgelegt, werden also von
+% =\@BTrule= "ubernommen. Genauso wei"s =\@BTrule= alles, was es "uber die
+% Routine, die es aufgerufen hat, wissen muss, durch das Untersuchen der
+% "ubernommenen =\@thisruleclass=. Das optionale St"arkenargument wird von
+% =\@BTrule= analysiert, nachdem es auf die Voreinstellung gesetzt wurde, falls
+% es fehlt.
+%
+%\begin{macro}{\toprule}
+% \changes{v1.61803}{2005/04/14}{Change \cmd{\@belowrulesep} to \cmd{\belowrulesep}}
+% \begin{macro}{\midrule}
+% \begin{macro}{\bottomrule}
+% \begin{macro}{\specialrule}
+% \begin{macrocode}
+\def\toprule{\noalign{\ifnum0=`}\fi
+ \@aboverulesep=\abovetopsep
+ \global\@belowrulesep=\belowrulesep
+ \global\@thisruleclass=\@ne
+ \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}}
+\def\midrule{\noalign{\ifnum0=`}\fi
+ \@aboverulesep=\aboverulesep
+ \global\@belowrulesep=\belowrulesep
+ \global\@thisruleclass=\@ne
+ \@ifnextchar[{\@BTrule}{\@BTrule[\lightrulewidth]}}
+\def\bottomrule{\noalign{\ifnum0=`}\fi
+ \@aboverulesep=\aboverulesep
+ \global\@belowrulesep=\belowbottomsep
+ \global\@thisruleclass=\@ne
+ \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}}
+\def\specialrule#1#2#3{\noalign{\ifnum0=`}\fi
+ \@aboverulesep=#2\global\@belowrulesep=#3\global\@thisruleclass=\tw@
+ \@BTrule[#1]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\addlinespace}
+% Ein =\addlinespace= ist im Wesentlichen eine Linie ohne Breite, keinem Abstand
+% dar"uber und angegebem (oder voreingestelltem) Abstand darunter. Aber weil die
+% Linie nicht wirklich gezogen wird, sondern blo\ss ein =\vskip= ist, ist es nicht
+% n"otig, zu schauen, ob man in einer longtable ist. Also muss man
+% =\@BTrule= nicht als `echte' Linie bezeichnen. Aber wir teilen den =\@BTendrule=
+% Vorausschau- und flagsetting -Code (sieh unten), und der =\vskip= wir dort
+% gemacht.
+% \begin{macrocode}
+\def\addlinespace{\noalign{\ifnum0=`}\fi
+ \@ifnextchar[{\@addspace}{\@addspace[\defaultaddspace]}}
+\def\@addspace[#1]{\global\@belowrulesep=#1\global\@thisruleclass=\tw@
+ \futurelet\@tempa\@BTendrule}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@BTrule}
+% Alle Linien (au"ser =\addlinespace=) teilen diesen Code.
+% \begin{macrocode}
+\def\@BTrule[#1]{%
+ \global\@thisrulewidth=#1\relax
+% \end{macrocode}
+% Das St"arkenargument (wenn der Nutzer keines angibt, dann wird
+% die Aufrufroutine =\@BTrule= mit der Voreinstellung aufgerufen haben) sollte f"ur
+% sp"atere Verwendung in einer globalen Variable gespeichert werden.
+% \begin{macrocode}
+ \ifnum\@thisruleclass=\tw@\vskip\@aboverulesep\else
+% \end{macrocode}
+% Speziallinien f"ugen immer angegebenen Abstand dar"uber ein. (Es ist
+% zu beachten, dass =addlinespaces= hier nicht gehen).
+% \begin{macrocode}
+ \ifnum\@lastruleclass=\z@\vskip\@aboverulesep\else
+ \ifnum\@lastruleclass=\@ne\vskip\doublerulesep\fi\fi\fi
+% \end{macrocode}
+% Nach Text (der letzten Klasse-1-Linie) sollte der Linie =\aboverulesep=
+% vorangehen; doch falls es direkt nach einer vorhergehenden Linie kommt,
+% sollte ein =\doublerulesep= eingef"ugt werden.
+%
+% Nun wird durch einen sehr fiesen Hack herausbekommen, ob man sich in einer
+% =longtable= befindet. Das ist leicht, wenn =\longtable= nicht mal definiert
+% ist: Dann ist man nicht drin.
+% Aber es reicht nicht einfach nur zu gucken, ob =longtable= geladen
+% ist -- man k"onnte ja auch innerhalb einer normalen Tabelle anstatt einer
+% =longtable= sein. Also wird geguckt, ob =\hline= von seiner
+% \LaTeX definition umgemodelt wurde, um genauso wie
+% =\LT@hline= zu sein. (Momentan macht =longtable= diese Umdefinition, wenn es
+% eine =longtable=-Umgebung "offnet, aber nicht global, also ist es gel"oscht,
+% sobald sich die Umgebung schlie"st.) Ein weiteres Paket k"onnte
+% das m"oglicherweise tun! Und =longtable= k"onnte sich ver"andern, insofern
+% es das einf"uhrt! Bisher ist es nicht v"ollig sicher, aber ich habe noch
+% keine bessere Methode gefunden.
+%
+% Wir richten =\@BTswitch= ein, um =\@BTnormal= oder =\@BLTrule= aufzurufen,
+% je nachdem was passt, und rufen es dann auf.
+% \begin{macrocode}
+ \ifx\longtable\undefined
+ \let\@BTswitch\@BTnormal
+ \else\ifx\hline\LT@hline
+ \let\@BTswitch\@BLTrule
+ \else
+ \let\@BTswitch\@BTnormal
+ \fi\fi
+ \@BTswitch}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\CT@arc@}
+% \changes{v1.6180}{2005/03/16}{add colortbl command for color support}
+% Das ist Unterst"utzung f"ur das =colortbl=-Paket f"ur farbige
+% Linien. \cmd{\CT@arc@} h"alt das \cmd{\arrayrulecolor} Setting.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \providecommand*\CT@arc@{}}%% colortbl support
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@BTnormal}
+% \changes{v1.6180}{2005/03/16}{add colortbl \cmd{\CT@arc@} command for color support}
+% Das ist f"ur den Fall, dass wir \emph{nicht} in einer =longtable= sind.
+% Wir sind bereits in einer
+% =\noalign=-Gruppe, alles, was getan werden muss, ist eine =\hrule= zu ziehen
+% und alle zur"uckliegenden Abst"ande zu verschlingen, um dann
+% die Abschlussroutine mit =\@tempa= mit dem n"achsten Zeichen im Dokument
+% gleichzusetzen.
+%
+% \begin{macrocode}
+\def\@BTnormal{%
+ {\CT@arc@\hrule\@height\@thisrulewidth}%
+ \futurenonspacelet\@tempa\@BTendrule}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@BLTrule}
+% Das ist f"ur eine Linie voller St"arke in einer =longtable=. Zuerst wird geguckt,
+% ob ein Kerningargument verwendet wurde; falls das so ist, soll =\@@BLTrule=
+% es auslesen,
+% ansonsten kann =\@@BLTrule= mit einem leeren String aufgerufen werden:
+% \begin{macrocode}
+\def\@BLTrule{\@ifnextchar({\@@BLTrule}{\@@BLTrule()}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@BLTrule}
+% \begin{macrocode}
+\def\@@BLTrule(#1){\@setrulekerning{#1}%
+\global\@cmidlb\LT@cols
+% \end{macrocode}
+% Die Routine =\@setrulekerning= analysiert die Zeichen des Kerningarguments
+% und setzt die globalen Kerningst"arken entsprechend (oder zur Voreinstellung,
+% wenn der Nutzer
+% sie nicht explizit angegeben hat). Die globale Anweisung an =\@cmidlb=
+% legt die Spaltenzahl f"ur die =\@cmidruleb=makro fest, die mit
+% =cmidrules= geteilt wird.
+% \begin{macrocode}
+\ifnum0=`{\fi}%
+% \end{macrocode}
+% Schlie"st die momentan ge"offnete =\noalign=-Gruppe. Innerhalb einer =longtable=
+% werden Linien als Bezugsstriche in einer Textbox, die
+% =\LT@cols= Spalten breit ist, gezogen.
+% \begin{macrocode}
+\@cmidruleb
+% \end{macrocode}
+% Zeichnet die Linie. Der =\@cmidruleb=-Code wird mit gew"ohnlichen =\cmidrule=s
+% geteilt.
+% \begin{macrocode}
+\noalign{\ifnum0=`}\fi
+% \end{macrocode}
+% Ein neues =noalign= muss aber sofort ge"offnet werden, da \TeX{} sonst eine
+% neue Textbox beginnen wird, wo wir keine wollen. Dann, nach dem Löschen
+% des nicht gewollten wei"sen Platzes, kann die Abschlussroutine aufgerufen
+% werden.
+% \begin{macrocode}
+\futurenonspacelet\@tempa\@BTendrule}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@BTendrule}
+% Wir schauen einen Schritt weiter; das Zeichen ist in =\@tempa=), um zu sehen, ob
+% eine andere Linie folgt (Der Nutzer sollte sich sch"amen!). Wenn dem so ist,
+% wird =\@lastruleclass= =\@thisruleclass= gleichgesetzt
+% (und damit f"ur die folgende Linie festgelegt). Wenn es keine darauffolgende
+% Linie gibt, wird =\@lastruleclass= freigelassen (d.\,h. auf Null
+% gesetzt), was technisch gesehen, nicht wahr ist, da gerade eine Linie gezogen
+% wurde. Aber es stellt es korrekt f"ur die n"achste Linie, der begegnet wird,
+% ein; die muss auf dazwischenliegenden Text folgen.
+% \begin{macrocode}
+\def\@BTendrule{\ifx\@tempa\toprule\global\@lastruleclass=\@thisruleclass
+ \else\ifx\@tempa\midrule\global\@lastruleclass=\@thisruleclass
+ \else\ifx\@tempa\bottomrule\global\@lastruleclass=\@thisruleclass
+ \else\ifx\@tempa\cmidrule\global\@lastruleclass=\@thisruleclass
+ \else\ifx\@tempa\specialrule\global\@lastruleclass=\@thisruleclass
+ \else\ifx\@tempa\addlinespace\global\@lastruleclass=\@thisruleclass
+ \else\global\@lastruleclass=\z@\fi\fi\fi\fi\fi\fi
+ \ifnum\@lastruleclass=\@ne\relax\else\vskip\@belowrulesep\fi
+ \ifnum0=`{\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Spezielle Unterlinien}
+%
+% \begin{macro}{\@setrulekerning}
+% Der folgende Code analysiert die Trimmingargumente (wenn es welche gibt)
+% f"ur =\cmidrule= oder eine =\BLTrule=. Die Linie
+% wird links und rechts durch =\cmrkern@l= und =\cmrkern@l= beschnitten,
+% die beide als Voreinstellung Null haben, auf =\cmidrulekern= durch die
+% einfachen Argumente
+% =(lr)= gesetzt werden oder durch den Nutzer wie bei =(r{.5em})= eingestellt
+% werden. Es wird Zeichen f"ur Zeichen durch die Argumente gest"obert.
+% Die Zeichen =r= und =l= bewirken, dass =\cmrkern@r= oder =\cmrkern@l= auf
+% =\cmidrulekern= gesetzt werden. Es gibt keine Vorschau, um zu sehen, ob
+% eine St"arke das n"achste Zeichen ist. Diese Strategie ist f"ur die
+% einfachen Befehle effizient, wohingegen es f"ur die bedingten Befehle
+% ineffizient ist. Viel wichtiger ist jedoch, dass es viel einfacher
+% zu programmieren ist. Die Zeichen =r= und =l= legen auch
+% =\cmrswitch= fest, sodass, wenn sich das n"achste Zeichen als
+% ={=\meta{wd}=}= herausstellt, das Kerning auf der Seite, die gerade
+% festgelegt ist, gemacht wird. Ich war zu faul, um eine Fehlermeldung zu
+% zu programmieren, falls anderen Zeichen als =r=, =l= oder
+% ={=\meta{wd}=}= begegnet wird.
+% \changes{v1.6180}{2005/03/16}{Refine option testing in \cmd{\@setrulekerning}}
+% \begin{macrocode}
+\def\@setrulekerning#1{%
+ \global\let\cmrkern@l\z@
+ \global\let\cmrkern@r\z@
+ \@tfor\@tempa :=#1\do
+ {\def\@tempb{r}%
+ \ifx\@tempa\@tempb
+ \global\let\cmrkern@r\cmidrulekern
+ \def\cmrsideswitch{\cmrkern@r}%
+ \else
+ \def\@tempb{l}%
+ \ifx\@tempa\@tempb
+ \global\let\cmrkern@l\cmidrulekern
+ \def\cmrsideswitch{\cmrkern@l}%
+ \else
+ \global\expandafter\let\cmrsideswitch\@tempa
+ \fi
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\cmidrule}
+% \begin{macro}{\@cmidrule}
+% \begin{macro}{\@@cmidrule}
+% \begin{macro}{\@@@cmidrule}
+% =\cmidrule= nutzt =\@lastruleclass= auf eine v"ollig andere Weise
+% als die Linien von ganzer St"arke. (Vielleicht h"atte ich ein anderes
+% Flag nutzen sollen; es erschien mir zu der Zeit effizient \ldots). Das
+% wird (links) auf eins gesetzt, wenn man sich in der Mitte einer Reihe von
+% =\cmidrules= befindet oder eine neue (mit =\morecmidrules=) anf"angt.
+% Ansonsten, f"ur den Fall, dass =\@lastruleclass= null ist, wird vor die Linie
+% ein =\aboverulesep= gesetzt.
+% \begin{macrocode}
+\def\cmidrule{\noalign{\ifnum0=`}\fi
+ \@ifnextchar[{\@cmidrule}{\@cmidrule[\cmidrulewidth]}}
+\def\@cmidrule[#1]{\@ifnextchar({\@@cmidrule[#1]}{\@@cmidrule[#1]()}}
+\def\@@cmidrule[#1](#2)#3{\@@@cmidrule[#3]{#1}{#2}}
+% \end{macrocode}
+% Das hier ist ein Herumt"ufteln, um die Voreinstellungen f"ur fehlende
+% optionale Argumente einzustellen.
+% Es wird au"serdem in einer anderen Reihenfolge zu =\@@@cmidrule= "ubergegangen,
+% n"amlich =[a-b]=={width required}= ={kerning commands}= (das ist
+% die Reihenfolge, in der die Argumente wirklich abgehandelt werden):
+% \begin{macrocode}
+\def\@@@cmidrule[#1-#2]#3#4{\global\@cmidla#1\relax
+ \global\advance\@cmidla\m@ne
+ \ifnum\@cmidla>0\global\let\@gtempa\@cmidrulea\else
+ \global\let\@gtempa\@cmidruleb\fi
+ \global\@cmidlb#2\relax
+ \global\advance\@cmidlb-\@cmidla
+% \end{macrocode}
+% Das erstellt einen Schalter (=\@gtempa=), um die relvanten Routinen
+% =\@cmidrulea= oder =\@cmidruleb= aufzurufen, abh"angig davon, ob man von
+% Spalte anf"angt oder nicht.
+% \begin{macrocode}
+ \global\@thisrulewidth=#3
+% \end{macrocode}
+% Das wird durch Voreinstellung oder eingesetztes Argument eingestellt. Dann
+% werden alle Trimmingargumente analysiert, um dementsprechend
+% =\cmrkern@r= und =\cmrkern@l= einzustellen:
+% \begin{macrocode}
+ \@setrulekerning{#4}
+% \end{macrocode}
+% Nun kann dar"uber, falls gew"unscht, Platz einf"ugen, das =\noalign=
+% geschlossen
+% und dann zur angemessenen Linienziehroutine, wie oben beschrieben, gewechselt
+% werden (=\let= bis =\@gtempa=):
+% \begin{macrocode}
+ \ifnum\@lastruleclass=\z@\vskip \aboverulesep\fi
+ \ifnum0=`{\fi}\@gtempa
+% \end{macrocode}
+% Nach gezogener Linie kann nun
+% ein anderes =\noalign= ge"offnet und die Abschlussroutine aufgerufen werden:
+% \begin{macrocode}
+ \noalign{\ifnum0=`}\fi\futurenonspacelet\@tempa\@xcmidrule}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@xcmidrule}
+% In dieser Abschlussroutine ist zu rp"ufen, ob ein anderes =\cmidrule= folgt;
+% wenn ja, sollte vertikal zur"uckgeschritten werden, damit es sich mit der gerade
+% gezeichneten Linie f"ugt.
+% Das Setzen von =\@lastruleclass= auf 1 wird verhindern, dass "uber dem n"achsten
+% wieder ein Abstand eingef"ugt wird. Wenn eine =\morecimdrules= folgt,
+% wird ein (positives) =\cmidrulesep= eingef"ugt (und wieder einmal
+% =\@lastruleclass= auf 1 gesetzt).
+% Ansonsten ist das die letzte Linie der momentanen Gruppe und es l"asst sich ganz
+% einfach =\belowrulesep= dahintersetzen. Abschlie"send wird das =\noalign=
+% geschlossen.
+% \changes{v1.618}{2003/03/28}{Change to \cmd{\@xcmidrule}:
+% replace \cmd{\@cmidrulewidth} with \cmd{\@thisrulewidth }}
+% \begin{macrocode}
+\def\@xcmidrule{%
+ \ifx\@tempa\cmidrule
+ \vskip-\@thisrulewidth
+ \global\@lastruleclass=\@ne
+ \else \ifx\@tempa\morecmidrules
+ \vskip \cmidrulesep
+ \global\@lastruleclass=\@ne\else
+ \vskip \belowrulesep
+ \global\@lastruleclass=\z@
+ \fi\fi
+ \ifnum0=`{\fi}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@cmidrulea}
+% Dieser Code (wird unter diesem Text aufgerufen) zeichnet die
+% Linien. Sie werden als Boxen
+% im Text gezeichnet, anstatt in einer =\noalign=gruppe, was das Kerning
+% links und rechts gestattet.
+% \changes{v1.6180}{2005/03/16}{add colortbl \cmd{\CT@arc@} command for color support}
+% \begin{macrocode}
+\def\@cmidrulea{%
+ \multispan\@cmidla&\multispan\@cmidlb
+ \unskip\hskip\cmrkern@l%
+ {\CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill}%
+ \hskip\cmrkern@r\cr}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@cmidruleb}
+% \changes{v1.6180}{2005/03/16}{add colortbl \cmd{\CT@arc@} command for color support}
+% \begin{macrocode}
+\def\@cmidruleb{%
+ \multispan\@cmidlb
+ \unskip\hskip \cmrkern@l%
+ {\CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill}%
+ \hskip\cmrkern@r\cr}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\morecmidrules}
+% Das ist wirklich ein hohler Befehl; die ganze Arbeit ist davor bereits
+% in der =\cmidrule=routine gemacht worden. Es l"asst sich einen Schritt voraus
+% schauen, um zu gucken, ob ein =\morecmidrules= der aktuellen =\cmidrule= folgt,
+% und k"onnen das Flag setzen, falls ja. Ansonsten macht =\morecmidrules= an sich
+% "uberhaupt nichts.
+% \begin{macrocode}
+\def\morecmidrules{\noalign{\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+%\PrintChanges
+%\PrintIndex
+%\end{document}
diff --git a/macros/latex/contrib/booktabs-de/booktabs-de.ins b/macros/latex/contrib/booktabs-de/booktabs-de.ins
new file mode 100644
index 0000000000..d0f2d87a3b
--- /dev/null
+++ b/macros/latex/contrib/booktabs-de/booktabs-de.ins
@@ -0,0 +1,87 @@
+% -----------------------------------------------------------------
+% File: booktabs-de.ins
+% Author: Simon Fear
+% Maintainer: Danie Els (dnjels@sun.ac.za)
+% Modifiziert: Christine Römer (christine-roemer@t-online.de)
+%
+% This file is part of the booktabs package for publication
+% quality tables for LaTeX
+%
+% Copyright (C) 1995--2005 Simon Fear
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2 of
+% the License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public
+% License along with this program; if not, write to the Free
+% Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+% MA 02111-1307 USA
+%
+% -----------------------------------------------------------------
+% This file will generate fast loadable files and documentation
+% driver files from the doc files in this package when run through
+% LaTeX or TeX.
+%
+% The file README' contains a list of all the files as well
+% directions for installation of this package.
+% -----------------------------------------------------------------
+
+\def\batchfile{booktabs-de.ins}
+\def\filedate{2005/03/16}
+\input docstrip.tex
+\keepsilent
+
+\preamble
+
+-----------------------------------------------------------------
+Author: Simon Fear
+Maintainer: Danie Els (dnjels@sun.ac.za)
+
+This file is part of the booktabs-de package for publication
+quality tables for LaTeX
+
+ Copyright (C) 1995--2005 Simon Fear
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this program; if not, write to the Free
+Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+MA 02111-1307 USA
+-----------------------------------------------------------------
+\endpreamble
+
+\generate{%
+ \askforoverwritefalse
+ \file{booktabs-de.sty}{\from{booktabs-de.dtx}{package}}%
+}
+
+{\obeyspaces%
+\Msg{**********************************************************}%
+\Msg{* *}%
+\Msg{* To finish the installation you have to move the *}%
+\Msg{* following file into a directory searched by TeX: *}%
+\Msg{* *}%
+\Msg{* booktabs-de.sty *}%
+\Msg{* *}%
+\Msg{* To produce the documentation run the file booktabs.dtx *}%
+\Msg{* through LaTeX. *}%
+\Msg{* *}%
+\Msg{* Happy TeXing! *}%
+\Msg{**********************************************************}}
+\endbatchfile
diff --git a/macros/latex/contrib/booktabs-de/booktabs-de.pdf b/macros/latex/contrib/booktabs-de/booktabs-de.pdf
new file mode 100644
index 0000000000..64d9717499
--- /dev/null
+++ b/macros/latex/contrib/booktabs-de/booktabs-de.pdf
Binary files differ