如何将长表格分割为偶数页/奇数页?

如何将长表格分割为偶数页/奇数页?

在 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}

相关内容