diff options
author | Karl Berry <karl@freefriends.org> | 2010-03-08 01:09:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-03-08 01:09:46 +0000 |
commit | a81aa67c15e2785142204eef54b3ddcaf9ab29d3 (patch) | |
tree | 734f1a0009d89b43debebf4e32c4438f06c4e516 /Master/texmf-dist | |
parent | 16d4328eddf7525d22a0e8b113432a9ed343935b (diff) |
ltabptch doc update (7mar10)
git-svn-id: svn://tug.org/texlive/trunk@17371 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/ltabptch/ltabptch.pdf | bin | 0 -> 277031 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/ltabptch/ltabptch.tex | 219 |
2 files changed, 219 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ltabptch/ltabptch.pdf b/Master/texmf-dist/doc/latex/ltabptch/ltabptch.pdf Binary files differnew file mode 100644 index 00000000000..a3e691051a6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltabptch/ltabptch.pdf diff --git a/Master/texmf-dist/doc/latex/ltabptch/ltabptch.tex b/Master/texmf-dist/doc/latex/ltabptch/ltabptch.tex new file mode 100644 index 00000000000..efbace2aa10 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltabptch/ltabptch.tex @@ -0,0 +1,219 @@ +\documentclass[DIV=9, parskip=half, pagesize=auto]{scrartcl} + +\usepackage{fixltx2e} +\usepackage{etex} +\usepackage{xspace} +\usepackage{lmodern} +\usepackage[T1]{fontenc} +\usepackage{textcomp} +\usepackage[utf8]{inputenc} +\usepackage{array} +\usepackage{microtype} +\usepackage{hyperref} + +\newcommand*{\pkg}[1]{\textsf{#1}} +\newcommand*{\cs}[1]{\texttt{\textbackslash#1}} +\makeatletter +\newcommand*{\cmd}[1]{\cs{\expandafter\@gobble\string#1}} +\makeatother +\newcommand*{\env}[1]{\texttt{#1}} +\newcommand*{\meta}[1]{\textlangle\textsl{#1}\textrangle} + +\addtokomafont{title}{\rmfamily} + +\title{The \pkg{ltabptch} package\thanks{This manual corresponds to \pkg{ltabptch}~v1.74d, dated~2005/01/10.}} +\subtitle{patch for \pkg{Longtable}} +\author{Uwe Lück} +\date{2005/01/10} + + +\begin{document} + +\maketitle + +For David Carlisle's \pkg{Longtable.sty}, version 4.11 +Fixes \texttt{tools/3180} (Sebastian Rahtz) and \texttt{tools/3485}: +missing/wrong interline glues above/below table. + +\begin{quote} + \small + Copyright \textcopyright\ 2002--2004 Uwe Lück, + \url{http://www.contact-ednotes.sty.de.vu}. + + Usage, no warranty, distribution as in \texttt{lppl.txt} on CTAN + (\href{http://www.ctan.org/pub/tex-archive/macros/latex/base/lppl.txt}{\texttt{macros\slash latex\slash base\slash lppl.txt}}). +\end{quote} + + +\minisec{The problem(s):} + +\renewcommand*{\labelenumi}{(\theenumi)} + +Sebastian Rahtz (\texttt{tools/3180}) observed 2000/03/05 that there be +a ``spurios blank line'' below the \env{longtable}. This impression +may have been due to two spacing problems: +% +\begin{enumerate} +\item There is \cmd{\parskip} and some interline glue below \env{longtable}, + while there is no \cmd{\parskip} and no interline glue above + (without head as specified by \cmd{\endhead} or \cmd{\firstendhead}) + or just \cmd{\lineskip} 0.0\,pt (with head---\cmd{\endhead}, \cmd{\endfirsthead}). +\item After \env{longtable}, \cmd{\prevdepth} is the depth of the last line + before the \env{longtable} (if there is no head) or the depth of the + head (otherwise). So \cmd{\prevdepth} may be 0\,pt. By contrast, the + last table row has depth of at least \verb+\dp\@arstrutbox+---which + should rather matter, and this is 3.6\,pt or more. +\end{enumerate} +% +---\,I have reported something like this as \texttt{tools/3485}, not +entirely correctly. Details are presented below. + + +\minisec{Solution presented:} + +\begin{enumerate} +\item I think there should be \cmd{\parskip} and usual interline glue + above, since the same would happen with a table in a center + environment (e.\,g.)\@. + \cmd{\noindent} seems to work fatally; moreover, \cmd{\LT@start}'s decision + whether to enter a new page would ignore \cmd{\parskip} and interline + glue still needed. + So emulate interline glue calculation according to \TeX book~p.~80 + and add it by \cmd{\vskip}, along with \cmd{\parskip}. + (This is rather a hack---a proper correction should perhaps not + ``emulate'' but place the interlineglue changes of \cmd{\LT@array} inside + the \cmd{\vbox} \cmd{\LT@bchunk} starts and treat glue between chunks in a + new way.) +\item Set \cmd{\prevdepth} to depth of box~0 before the latter is + \cmd{\unvbox}'ed (which leaves \cmd{\prevdepth} untouched, \TeX book~p.~ 282) + in \cmd{\endlongtable}. +\end{enumerate} +% +I thought David Carlisle would change \pkg{Longtable} according to my +suggestions. By e-mail from 2003/04/07 however, he finds it +better not to change \pkg{Longtable}, in order not to change layouts +of works that have been made using \pkg{Longtable} so far +(e-Mail 2003/04/08). + + +\minisec{By the way:} + +\renewcommand*{\labelenumi}{\theenumi.)} + +\begin{enumerate} +\item There are two successive lines in the Longtable code (v4.11) + together saying: + % +\begin{verbatim} +\prevdepth\z@\global +\global\let\LT@setprevdepth\relax +\end{verbatim} + % + Isn't the first \cmd{\global} just a typo? + --Yes--this is David Carlisle's answer in his e-mail + dating from 2004/05/14. +\item Couldn't the one-column restriction easily be removed + by using \cmd{\columnwidth} instead of \cmd{\hsize}? +\end{enumerate} + + +\minisec{Detailed diagnosis:} + +\renewcommand*{\theenumi}{(\Alph{enumi})} +\renewcommand*{\labelenumi}{\theenumi} + +Concerning the question of ``bugs'' vs.\ ``features'', you might +reason what features should be aimed at. +% +\begin{enumerate} +\item \label{item:A} If there is \cmd{\parskip} below a \env{longtable}, there should + be \cmd{\parskip} above as well--shouldn't it? +\item \label{item:B} Interline glue above should (in general) depend on the + same values of \cmd{\base\-line\-skip} and \cmd{\lineskip} as below---OK? +\item \label{item:C} Interline glue below a \env{longtable} should depend on the + depth of the last row, not on the depth of the head or of the + last line above the \env{longtable}--OK? +\end{enumerate} +% +The recent versions of \pkg{longtable.sty} have not satisfied any +of these three demands. +Concerning~\ref{item:A}, \cmd{\parskip} appears below the longtable, but not +above. +Concerning~\ref{item:B}, (i)~no interline glue appears above if there +is no head, (ii)~otherwise, only zero interline glue appears. +Concerning~\ref{item:C}, the interline glue below the longtable is +calculated using the depth of (i)~the last line above the +longtable as \cmd{\prevdepth} when there is no head or of (ii)~the +head otherwise. (Thus I was wrong earlier when I claimed that +\cmd{\prevdepth} were 0\,pt after longtable. This only holds in the +previous case (i)~when the last line above the longtable has +zero depth.) + +You can observe this by playing with the demonstration file +\texttt{ltabptch.tex} in CTAN folder \href{http://www.ctan.org/pub/tex-archive/macros/latex/contrib/ltabptch/}{\texttt{macros/latex/contrib/ltabptch}}. + +Reasons: For contributing a head to the main vertical list, +longtable uses \cmd{\copy} or \cmd{\box}, which yields a \meta{box} according +to \TeX book~p.~278. Rows are contributed by \cmd{\unvbox}. Now, +violation of~\ref{item:A} is due to the fact that neither \cmd{\copy} or +\cmd{\box} of the head nor the \cmd{\unvbox} for table rows leads to +execution of an \cmd{\indent} or \cmd{\noindent} (\TeX book~pp.~282\,f.,\ see +also \meta{horizontal command}). +Violation of~\ref{item:B} is due either to (i)~the fact that \cmd{\unvbox} +is no \meta{box} (\TeX book~p.~282/278) or to (ii)~the fact that at +\cmd{\copy} or \cmd{\box} \cmd{\baselineskip} and \cmd{\lineskip} are 0\,pt. +Violation of~\ref{item:C} is due to the fact that \cmd{\unvbox} does not +change \cmd{\prevdepth} (\TeX book~p.~282). + +As to recognizable effects: +% +\begin{itemize} +\item Violation of~\ref{item:A}, of course, has very little effect in + general since \cmd{\parskip} is \texttt{0pt plus 1pt} usually. This is hardly + recognizable in the presence of the \cmd{\bigskipamount} above and + below a longtable. + +\item Violation of~\ref{item:B} results in missing appropriate interline + glue above, which often should be 3.6\,pt or more. This may + rather be recognizable and may contribute to the impression + that there even is a spurious blank line below the \env{longtable} + (this is what Sebastion Rahtz reported in \texttt{tools/3180}). + +\item For the previous as well as for the details and the + effects of violation of~\ref{item:C}, consider the algorithm for + calculating interline glue on p.~80 of the \TeX book. If there + is no head, and the depth of the last line before the + longtable is 0\,pt, the interline glue below the \env{longtable} is + \cmd{\baselineskip} minus the height of the first line after the + longtable. The interline glue \emph{should be} \cmd{\baselineskip} minus + height of following line \emph{minus} depth of last table row--if + this depth is not too large (depending on \cmd{\lineskiplimit}). + This depth is at least 3.6\,pt. So the interline glue is often + by 3.6\,pt or more greater than is appropriate. Considering the + missing interline glue above the \env{longtable} and the \cmd{\parskip} + below, the glue after the \env{longtable} is by 6.2\,pt (or more) plus + 1\,pt larger than the glue before. Due to the shrink component + of the surrounding \cmd{\bigskipamount}, the glue following the + longtable may be nearly twice as large as the glue before. + ---\,Usually, violation of~\ref{item:C} has no effect at all. Namely, + there is a head usually, and its depth is usually the same as + the depth of the last row, namely \verb+\dp\@arstrutbox+. +\end{itemize} + + +\minisec{Version history:} + +\begin{tabular}{@{}lr>{\raggedright\arraybackslash}p{93mm}@{}} + v1.7 & 2003/01/07 & Sent around 2003/01/13 with first release of \pkg{ednotes.sty}. Sent to David Carlisle. Earlier versions were sent to Frank Mittelbach and the team. \\ + v1.71 & 2003/01/22 & Added version history. \\ + v1.72 & 2003/01/27 & Changed copyright notice. \\ + v1.73 & 2004/05/13 & Adapted to \pkg{Longtable}~v4.11; new copyright; \pkg{longtable} $\to$ \pkg{Longtable} (selectively). Added `I have \ldots \texttt{3485}'. \\ + v1.74 & 2004/08/05 & Added `---Yes---\ldots'. \\ + & 2004/08/21 & Typo fix for `problem'; added report on 2003/04/08. \\ + & 2004/08/23 & Corrected and extended diagnosis, sent to CTAN. \\ + v1.74b & \ldots/08/23 & `---' $\to$ `--'; added that~\ref{item:C} usually doesn't matter. \\ + v1.74c & \ldots/08/31 & `author-maintained'. \\ + v1.74d & 2005/01/10 & Contact via \textsc{http}. +\end{tabular} + +\end{document} |