From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/ltabptch/ltabptch.tex | 219 +++++++++++++++++++++++++++++
 1 file changed, 219 insertions(+)
 create mode 100644 macros/latex/contrib/ltabptch/ltabptch.tex

(limited to 'macros/latex/contrib/ltabptch/ltabptch.tex')

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}
-- 
cgit v1.2.3

