summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tabularborder/tabularborder.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tabularborder/tabularborder.dtx')
-rw-r--r--macros/latex/contrib/tabularborder/tabularborder.dtx515
1 files changed, 515 insertions, 0 deletions
diff --git a/macros/latex/contrib/tabularborder/tabularborder.dtx b/macros/latex/contrib/tabularborder/tabularborder.dtx
new file mode 100644
index 0000000000..1b6270edb5
--- /dev/null
+++ b/macros/latex/contrib/tabularborder/tabularborder.dtx
@@ -0,0 +1,515 @@
+% \iffalse meta-comment
+%
+% Copyright (C) Johannes Fink
+% -----------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{tabularborder}
+%<package> [2010/04/14 v1.0a Tabular without border]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{tabularborder}
+
+\EnableCrossrefs
+
+\CodelineIndex
+
+\RecordChanges
+
+%\OnlyDescription
+
+\begin{document}
+\DocInput{tabularborder.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{162}
+%
+% \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 \~}
+%
+%
+% \changes{v1.0}{2010/04/03}{Initial version}
+%
+% \GetFileInfo{tabularborder.sty}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\@ne}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+% \DoNotIndex{\bgroup,\egroup,\newcommand}
+% \DoNotIndex{\ifx,\fi}
+% \DoNotIndex{\let}
+%
+% \title{The \textsf{tabularborder} package
+% \thanks{This document corresponds to \textsf{tabularborder}~\fileversion,
+% dated \filedate.}}
+% \author{Johannes Fink\\
+% \iffalse\texttt{fink@unileoben.ac.at}\fi
+% }
+%
+% \maketitle
+%
+% \begin{abstract}
+% This package changes the space for horizontal lines
+% at the left side and the right side of a |tabular| (but not |array|) to zero space.
+%
+% \end{abstract}
+% \tableofcontents
+% \section{Introduction}
+% Usually, the |tabular| environment adds a space of |\tabcolsep| on the left side and on the right
+% side of the text. For this reason a |\hline|, or a |\toprule|, etc. will exceed the text by
+% the total length of 2 |\tabcolsep|.
+% \tboff\vskip3ex
+%
+% \begin{tabular}{llll}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+%
+% \begin{verbatim}
+% \begin{tabular}{llll}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+%
+% If some publishers, or authors, respectively, do
+% not like these additional length of the horizontal lines, the |tabular| must be reformatted.
+%
+% \vskip3ex
+%
+% \begin{tabular}{@{}llll@{}}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{@{}l}{multicol 1-2}
+% & \multicolumn{2}{l@{}}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+%
+% \begin{verbatim}
+% \begin{tabular}{@{}llll@{}}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{@{}l}{multicol 1-2}
+% & \multicolumn{2}{l@{}}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+% Formatting is done with |@{}|, as shown above. Note that the |\multicolumn| commands must
+% be formatted separately.
+% In a longer project, such as a thesis or book,
+% this reformatting may be a time consuming and a tedious task.
+% In particular, if the supervisor of a thesis work changes his opinion about the layout several times
+% in the course of correcting.
+%
+% This package changes the leading and trailing spaces automatically into zero without the need of inserting the |@{}|.
+% \tbon\vskip3ex
+% \begin{center}
+% \begin{tabular}{llll}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+%
+%
+% Of course, with such an arrangement, outer
+% vertical lines do not make sense,
+% and actually, they are displaced if tried anyway.
+% By the way, we are using here the package |booktabs|.
+%
+%
+%
+% \section{Usage}
+%
+% Here are some examples:
+% \subsection{Basic Example}
+% \begin{center}
+% \begin{tabular}{llll}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+% %
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}{llll}
+% \toprule
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+% \subsection{Odd Example}
+% Vertical lines look odd here:
+%
+% \begin{center}
+% \begin{tabular}{|ll|ll|}
+% \hline
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \hline
+% \end{tabular}
+% \end{center}
+% %
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}{|ll|ll|}
+% \hline
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{l}{multicol 1-2}
+% & \multicolumn{2}{l}{multicol 3-4}\\
+% \hline
+% \end{tabular}
+% \end{verbatim}
+%
+% \subsection{Improved Example}
+% But we may switch off the |tabularborder| package with |\tboff|.
+% \tboff
+% \begin{center}
+% \begin{tabular}{|ll|ll|}
+% \hline
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{|l|}{multicol 1-2}
+% & \multicolumn{2}{l|}{multicol 3-4}\\
+% \hline
+% \end{tabular}
+% \end{center}
+% %
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}{|ll|ll|}
+% \hline
+% col 1 & col 2 & col 3 & col4\\
+% \multicolumn{2}{|l|}{multicol 1-2}
+% & \multicolumn{2}{l|}{multicol 3-4}\\
+% \hline
+% \end{tabular}
+% \end{verbatim}
+% But we had still to manipulate the |\multicolumn| command.
+% And now switch on again with |\tbon|. \tbon
+% \subsection{Sophisticated Example}
+%
+% %
+% \begin{center}
+% \begin{tabular}{>{\sf}l|r@{}l}
+% \toprule
+% Article & \multicolumn{2}{c}{Price/[USD]} \\
+% \midrule
+% Beer & \hskip4ex 3&.40\\
+% Whisky & 8&.20 \\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+%
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}{>{\sf}l|r@{}l}
+% \toprule
+% Article & \multicolumn{2}{c}{Price/[USD]} \\
+% \midrule
+% Beer & \hskip4ex 3&.40\\
+% Whisky & 8&.20 \\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+%
+% \subsection{Example Using Helpers}
+%
+% \begin{tabular}
+% {b{0.5\tabcolwidthii\hangindent2ex}%
+% b{0.5\tabcolwidthii\hangindent2ex}}
+% \toprule
+% Article & Remark \\
+% \midrule
+% Beer & Note that this article
+% can be sold only
+% in special shops\\
+% Whisky & --- \\
+% \bottomrule
+% \end{tabular}
+% \vskip3ex
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}
+% {b{0.5\tabcolwidthii\hangindent2ex}%
+% b{0.5\tabcolwidthii\hangindent2ex}}
+% \toprule
+% Article & Remark \\
+% \midrule
+% Beer & Note that this article
+% can be sold only
+% in special shops\\
+% Whisky & --- \\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+% \subsection{Example Using Helpers}
+% \label{2010.04.03.17:45}
+%
+% \begin{tabular}
+% {b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}}%
+% \toprule
+% Article &\hskip-2ex Code & \hskip-4ex Subcode & Remark\\
+% \midrule
+% Beer &B&12 & Note that this article
+% can be sold only
+% in special shops\\
+% Whisky &W&10& --- \\
+% \bottomrule
+% \end{tabular}
+% \vskip3ex
+% Source code:
+% \begin{verbatim}
+% \begin{tabular}
+% {b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}%
+% b{0.25\tabcolwidthiv\hangindent2ex}}%
+% \toprule
+% Article &\hskip-2ex Code & \hskip-4ex Subcode & Remark\\
+% \midrule
+% Beer &B&12 & Note that this article
+% can be sold only
+% in special shops\\
+% Whisky &W&10& --- \\
+% \bottomrule
+% \end{tabular}
+% \end{verbatim}
+%
+% \subsection{Array Example}
+% The |array| environment is left as before:
+% \[
+% \begin{array}{lcr}
+% \toprule
+% x^2+y^2 &=& z^2\\
+% \end{array}
+% \]
+% \vskip3ex
+% Source code:
+% \begin{verbatim}
+% \[
+% \begin{array}{lcr}
+% \toprule
+% x^2+y^2 &=& z^2\\
+% \end{array}
+% \]
+% \end{verbatim}
+% \subsection{Example Using Tabular Star Form}
+%
+% The following does not make sense:
+% \vskip3ex
+% \begin{tabular*}{0.5\textwidth}{@{}lr}
+% \toprule
+% first column & second column\\
+% first column & next second column\\
+% \bottomrule
+% \end{tabular*}
+%
+% \vskip3ex
+% Source code:
+% \vskip3ex
+%
+%
+% \begin{verbatim}
+% \begin{tabular*}{0.5\textwidth}{@{}lr}
+% \toprule
+% first column & second column\\
+% first column & next second column\\
+% \bottomrule
+% \end{tabular*}
+% \end{verbatim}
+%
+%
+%
+% \subsection{Nested Tabular Example}
+%
+% A nested tabular:
+% \vskip3ex
+% \begin{tabular}{ll}
+% \toprule
+% first column & second column\\
+% first column & next second column\\
+% \bottomrule
+% \multicolumn{2}{l}
+% {\begin{tabular}{ll}
+% \textsuperscript{a} & A nested tabular, longer in this field now \\
+% \end{tabular}}\\
+% \end{tabular}
+%
+% \vskip3ex
+% Source code:
+% \vskip3ex
+%
+%
+% \begin{verbatim}
+% \begin{tabular}{ll}
+% \toprule
+% first column & second column\\
+% first column & next second column\\
+% \bottomrule
+% \multicolumn{2}{l}
+% {\begin{tabular}{ll}
+% \textsuperscript{a} & A nested tabular, longer in this field now \\
+% \end{tabular}}\\
+% \end{tabular}
+% \end{verbatim}
+%
+%
+%
+%
+%
+%
+% \StopEventually{\PrintIndex}
+%
+% \section{Implementation}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\RequirePackage}
+% This package has been tested based on the following package:
+% \begin{macrocode}
+\RequirePackage{booktabs}
+\RequirePackage{array}[2003/12/17 v2.4a Tabular extension package (FMi)]
+% \end{macrocode}
+% However, the examples given here are working with version |v2.4c| too.
+% \end{macro}
+% \begin{macro}{\tb@ialign}
+% We redefine |\ialign|, |\tabskip| into |-\col@sep|:
+% \begin{macrocode}
+\newcommand{\tb@ialign}{\everycr{}\tabskip-\col@sep\halign}
+% \end{macrocode}
+% Here we change definitions so that only the |tabular| is involved.
+% \begin{macrocode}
+\newcommand{\tb@tbtabarray}{\@ifnextchar[{\tb@array}{\tb@array[c]}}
+\def\@tabular{%
+ \leavevmode
+ \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
+ \let\d@llarend\endgroup
+ \@tb@tbtabarray}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbon \tboff}
+% The following allows to switch back to the original settings by |\tboff| and reactivate by |\tbon|.
+% \begin{macrocode}
+\newcommand{\@tb@tbtabarray}{}
+\newcommand{\tbon}{\global\let\@tb@tbtabarray\tb@tbtabarray}
+\tbon
+\newcommand{\tboff}{\global\let\@tb@tbtabarray\@tabarray}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@array}
+% We change the definition of the macro |\@@array| and rename it.
+% Only three changes are needed, but we must place the full macro.
+% \begin{macrocode}
+\newcommand{\tb@array}{}
+\def\tb@array[#1]#2{%
+ \@tempdima \ht \strutbox
+ \advance \@tempdima by\extrarowheight
+ \setbox \@arstrutbox \hbox{\vrule
+ \@height \arraystretch \@tempdima
+ \@depth \arraystretch \dp \strutbox
+ \@width \z@}%
+% \end{macrocode}
+% \begin{macrocode}
+ \begingroup
+ \@mkpream{#2}%
+% \end{macrocode}
+% Here we use |\tb@ialign|, and in the next line we reset the |\tabskip|.
+% \begin{macrocode}
+ \xdef\@preamble{\noexpand \tb@ialign \@halignto
+ \bgroup \@arstrut \tabskip \z@skip \@preamble
+% \end{macrocode}
+% In the next line we are switching the |\tabskip| to
+% |-\col@sep|.
+% \begin{macrocode}
+ \tabskip-\col@sep \cr}%
+% \end{macrocode}
+% The rest of the macro is unchanged.
+% \begin{macrocode}
+ \endgroup
+ \@arrayleft
+ \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+ \bgroup
+ \let \@sharp ##\let \protect \relax
+ \lineskip \z@
+ \baselineskip \z@
+ \m@th
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Additional Helpers}
+% Here are some additional definitions that facilitate the handling of a tabular.
+% An example is given in section \ref{2010.04.03.17:45}.
+% \begin{macrocode}
+\ifdefined\tabcolwidthi\else\newlength{\tabcolwidthi}\fi
+\ifdefined\tabcolwidthii\else\newlength{\tabcolwidthii}\fi
+\ifdefined\tabcolwidthiii\else\newlength{\tabcolwidthiii}\fi
+\ifdefined\tabcolwidthiv\else\newlength{\tabcolwidthiv}\fi
+\setlength{\tabcolwidthi}{\textwidth}
+\addtolength{\tabcolwidthi}{-0\tabcolsep}
+\setlength{\tabcolwidthii}{\textwidth}
+\addtolength{\tabcolwidthii}{-2\tabcolsep}
+\setlength{\tabcolwidthiii}{\textwidth}
+\addtolength{\tabcolwidthiii}{-4\tabcolsep}
+\setlength{\tabcolwidthiv}{\textwidth}
+\addtolength{\tabcolwidthiv}{-6\tabcolsep}
+% \end{macrocode}
+%\iffalse
+%</package>
+%\fi
+% \PrintChanges
+% \Finale
+\endinput