summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ltabptch/ltabptch.tex
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/ltabptch/ltabptch.tex
Initial commit
Diffstat (limited to 'macros/latex/contrib/ltabptch/ltabptch.tex')
-rw-r--r--macros/latex/contrib/ltabptch/ltabptch.tex219
1 files changed, 219 insertions, 0 deletions
diff --git a/macros/latex/contrib/ltabptch/ltabptch.tex b/macros/latex/contrib/ltabptch/ltabptch.tex
new file mode 100644
index 0000000000..98d15c9907
--- /dev/null
+++ b/macros/latex/contrib/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 \pkg{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 \env{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 \env{longtable} is
+calculated using the depth of (i)~the last line above the
+\env{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 \env{longtable}. This only holds in the
+previous case (i)~when the last line above the \env{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,
+\env{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 \env{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
+ \env{longtable} is 0\,pt, the interline glue below the \env{longtable} is
+ \cmd{\baselineskip} minus the height of the first line after the
+ \env{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
+ \env{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}