% \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 %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{tabularborder} % [2010/04/14 v1.0a Tabular without border] % %<*driver> \documentclass{ltxdoc} \usepackage{tabularborder} \EnableCrossrefs \CodelineIndex \RecordChanges %\OnlyDescription \begin{document} \DocInput{tabularborder.dtx} \end{document} % % \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 % %\fi % \PrintChanges % \Finale \endinput