在 A5 文档上,我想打印一个长表格,分成几页(使用longtable
我知道)但我还需要将该表的两列放在文档的每一侧:
- 偶数页左栏,跨越多页
- 奇数页右栏,跨越多页
当然,表格前后都有文本,否则我不会问。理想情况下,表格应该有框架。并重复每列的标题(在其页面上),但这应该很容易longtable
。
这个东西是为了比较两个不同事物的特征,因此我并不需要完全对齐的表格,两列可以逐项列出。重复的标题可以用重复的标题代替。但如果这样,边框就变得很重要了。
我可以想象一个 1 列表格打印在偶数页上,另一个 1 列表格打印在奇数页上,但它们需要“嵌套”,在 A5 书中彼此相对。
或者,如果没有解决方案让表格横向跨越几页,有没有办法让文本只在偶数页上流动,而其他一些文本在奇数页上流动,彼此相对? 可以定义 2 个浮点数,一个用于偶数页,一个用于奇数页,每个浮点数都会溢出到下一个偶数或奇数页?
然后问题可以重新表述如下:是否可以让浮点数跨越几页,但将其限制在偶数(或奇数)页上?
我可以手动进行页面跳转,但如果添加了文本或更改了页面布局,就会搞砸一切(这会破坏整个 LaTeX 理念)。我知道使用 Scribus 可以实现这样的效果。
答案1
\documentclass[a5paper,twoside]{article}
\textheight.5\textheight
\paperheight.7\paperheight
\pdfpageheight\paperheight
\pdfpagewidth\paperwidth
\usepackage{array,longtable,color}
\makeatletter
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\zzz\vbox{\moveleft10in\vbox{\unvcopy\@cclv\copy\LT@foot}\vss}%
\setbox\@cclv\vbox{\vbox{\unvbox\@cclv\copy\LT@foot}\vss}%
\@makecol
\@outputpage
\setbox\@cclv\box\zzz
\@makecol
\@outputpage
\setbox\z@\vbox{\box\LT@head}%
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
% \vbox
% {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\fi
\else
\setbox\zzz\vbox{\moveleft10in\vbox{\unvcopy\@cclv\copy\LT@foot}\vss}%
\setbox\@cclv\vbox{\vbox{\unvbox\@cclv\copy\LT@foot}\vss}%
\@makecol
\@outputpage
\setbox\@cclv\box\zzz
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
\newbox\zzz
\def\a{%
one&&red\\
two&&green\\
three&&yellow\\
four&&brown\\
}
\def\b{%
111&&this\\
2&&that\\
333&&the other\\
44&&something\\}
\begin{document}
\begin{titlepage} testing longtable\end{titlepage}
\pagenumbering{arabic}
\clearpage\ifodd\value{page}\mbox{}\clearpage\fi
\setlength\LTright{-3\textwidth plus 1fill}
\begin{longtable}{cp{10in}c}
LEFT&&RIGHT\\
\endhead
first&&row\\
\a\uppercase{\a}\b
\a\uppercase{\a}\b\b
last&&row\\
\pagebreak% you need this
\end{longtable}
\end{document}