如何在 HVFloat 中使用 HVObox 创建多个大表

如何在 HVFloat 中使用 HVObox 创建多个大表

我有几张宽桌子,需要将它们分成多页来放书。想法是左页显示桌子的左半部分,右页显示桌子的右半部分。

例如这样的

在此处输入图片描述

我找到了 hvfloat 包,它适用于 1 个表。但是,如果我创建多个表,它只会将同一张表的多个副本(最后一个存储在 HVObox 中)放入文档中。

如何在同一文档中创建多个这样的表格?

答案1

这是浮动环境,这就是为什么只有当这些双面表格(框)之间有足够的文本时它才会起作用的原因。如果没有,就无法以正确的方式放置对象。一个工作示例:

\documentclass[12pt,twoside]{article} 
\usepackage{geometry}
\usepackage{hvfloat,booktabs,blindtext}
\renewcommand\thepage{\Huge\arabic{page}}
\begin{document}

\Blindtext

\savebox\hvOBox{%
\begin{tabular}{l*{18}r} \toprule
    & \textbf{1972} & \textbf{1973} & \textbf{1974} & \textbf{1975} & \textbf{1976}& \textbf{1977} & \textbf{1978} & 
    \textbf{1979} & \textbf{1980} & \textbf{1981} & \textbf{1982} & \ textbf{1983} & \textbf{1984} & \textbf{1985}& 
    \textbf{1986} & \textbf{1987} & \textbf{1988} & \textbf{1989} \\\midrule\addlinespace[3pt] 
    Zeile1&1&3&1&1&1&0&1&1&0&0&0&0&20&0&2&2&2&1\\\addlinespace[3pt]
    Zeile2&1&1&3&1&0&0&0&0&0&0&2&1&3&4&4&6&4&2\\\addlinespace[3pt] 
    Zeile3&2&1&2&1&0&0&0&0&0&0&0&1&5&3&1&7&7&3\\\addlinespace[3pt]
    Zeile4&1&0&5&1&2&0&0&0&0&2&1&0&1&0&3&7&2&1\\\addlinespace[3pt]
    Zeile6&2&1&1&0&0&0&0&0&0&1&2&0&5&2&2&5&4&2\\\addlinespace[3pt]
    Zeile5&0&0&4&2&1&2&2&1&0&0&0&1&1&0&2&5&4&3\\\addlinespace[3pt] 
    Zeile8&0&1&1&0&0&0&1&1&0&3&2&1&2&1&3&5&3&4\\\addlinespace[3pt]
    Zeile9&0&0&0&0&0&1&2&1&0&0&0&0&4&2&1&4&5&2\\\addlinespace[3pt] 
    Zeile10&0&1&3&0&1&0&1&0&0&1&1&0&1&1&1&4&4&1\\\addlinespace[3pt]
    Zeile11&0&2&2&1&1&0&1&0&0&0&0&2&6&1&0&2&1&1\\\addlinespace[3pt] 
    Zeile12&2&0&2&4&1&0&4&0&0&0&0&0&0&0&0&1&0&3\\\addlinespace[3pt]
    Lärm &2&3&0&0&0&0&0&0&0&0&1&0&2&0&0&2&2&2\\\addlinespace[3pt]
    Zeile13&0&1&0&0&1&0&3&0&0&0&0&0&2&0&1&3&0&2\\\addlinespace[3pt]
    Zeile14&0&1&0&0&0&0&0&0&0&0&0&0&3&3&2&1&1&0\\\addlinespace[3pt] 
    Zeile15&0&0&0&0&0&0&0&0&0&1&0&0&4&0&0&3&1&1\\\addlinespace[3pt]
    Zeile16&0&0&0&0&0&1&0&0&0&0&0&0&0&0&3&5&0&1\\\addlinespace[3pt]\midrule
    Artikelgesamt&2&6&13&8&4&3&5&4&0&6&3&5&23&10&8&15&13&1\\ \bottomrule
\end{tabular}}

\hvFloat[doublePage,useOBox,capPos=right,capVPos=top,floatCapSep=12pt]% 
  {table}%
  {}%%%%%%%%%%%%%%
  [A doublepage tabular with a caption on the right side of the 
   right part.]%
   {A caption for a double-sided tabular that will be placed on the right side of the right-hand part of the illustration.}%
  {tab:doublePage0}

\Blindtext[8]

\savebox\hvOBox{%
\begin{tabular}{l*{18}r} \toprule
        & \textbf{1972} & \textbf{1973} & \textbf{1974} & \textbf{1975} & \textbf{1976}& \textbf{1977} & \textbf{1978} & 
    \textbf{1979} & \textbf{1980} & \textbf{1981} & \textbf{1982} & \ textbf{1983} & \textbf{1984} & \textbf{1985}& 
    \textbf{1986} & \textbf{1987} & \textbf{1988} & \textbf{1989} \\\midrule\addlinespace[3pt] 
    Zeile1&1&3&1&1&1&0&1&1&0&0&0&0&20&0&2&2&2&1\\\addlinespace[3pt]
    Zeile16&0&0&0&0&0&1&0&0&0&0&0&0&0&0&3&5&0&1\\\addlinespace[3pt]\ midrule
    Artikelgesamt&2&6&13&8&4&3&5&4&0&6&3&5&23&10&8&15&13&1\\ \bottomrule
\end{tabular}}%%%%%%%%%%%%%%


\hvFloat[doublePage,useOBox,capPos=right,capVPos=top,floatCapSep=12pt]% 
  {table}%
  {}
  [A doublepage tabular with a caption on the right side of the right part.]%
  {A caption for a double-sided tabular that will be placed on the right side of the right-hand part of the illustration.}%
  {tab:doublePage1}
    
\Blindtext
\end{document}

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

\Blindtext[8]将两个表格之间的线更改为\Blindtext[4],它将会失败,因为对象之间的文本太少。

解决方法是放置框中的表格或使用非浮动环境并手动将对象放置在相对的页面上。

相关内容