我正在写一篇包含许多表格的论文。到目前为止,这些表格都是标准table*
格式,即
\begin{table*}
\caption{Caption}
\label{label}
\begin{center}
\begin{tabular}{lccccccccccccccc|cc}
& \multicolumn{15}{c}{Title}& $\mu$ & $\sigma$\\
etc.
大约有 15-20 个后续行,并且渲染正确,同时(刚好)适合页面宽度。但是,我现在需要添加另外两列,这使得table*
纵向显示太宽,因此需要切换到横向模式。这应该是一个简单的 90 度旋转案例,因为即使在横向显示中,表格的行数也不会太多,因此表格需要跨页显示。
但是,我尝试了两种方法,但都遇到了问题。首先,我尝试用 包裹表格\begin{landscape}
(包括 lscape \usepackage
),但页面底部有大量空白,而表格的左侧边缘被推过 \runningtitle 并超出页面顶部。其次,我尝试用 替换\begin{table*}
,\begin{sidewaystable*}
但现在表格的垂直间距正确(即底部没有过多的空白,或与 冲突\runningtitle
),但现在水平偏移 - 第一个表格超出页面的“左侧”(在纵向视图中为左侧,在横向视图中为顶部),而下一个表格旋转 180 度并从“右侧”落下。
在这两种情况下,添加或删除\begin{center}
或\centering
似乎没有任何区别,我不知道还能做什么。除了常见的 LaTeX 关于“浮动对于页面来说太大”的抱怨之外,没有明显的输出可以帮助我找出问题所在。这篇论文是在A&A 格式使用最新的 (v7) aa.cls。如果我切换到裁判模式(这会触发从两列转换为单列,字体更大,行距加倍),则表格似乎可以正确呈现,这让我怀疑 .cls 文件是否存在问题。
有人能给出一些可能有效的解决方案、解决方法或替代方案吗?我已经为此绞尽脑汁好几个小时了,但还是想不出主意。
答案1
除了使用table*
,您还可以尝试tabular*
。*
-form 需要一个额外的<width>
强制参数
\begin{tabular*}{<width>}{<column specification>}
它指定了表格环境的宽度;在常规形式中,宽度由 LaTeX 根据表格环境的内容确定。现在,这可能只有在你真正想要扩大表格/表格到特定宽度。但是,你可能需要收缩表格宽度。为此,可能有一些技巧你可以使用。但是,其中一些可能取决于期刊的要求/规范。此外,最佳解决方案/选择可能取决于表格超出文本块的程度。我在这里通过示例列出了几个:
\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
Original\par
\begin{tabular}{*{7}{|c}|}
Test 1 & Test 2 & Test 3 & Test 4 & Test 5 & Test 6 & Test 7
\end{tabular}
\bigskip Individual column separation modified via \verb|@{\hspace{<width>}}|\par
\begin{tabular}{*{7}{|@{\hspace{2pt}}c@{\hspace{2pt}}}|}
Test 1 & Test 2 & Test 3 & Test 4 & Test 5 & Test 6 & Test 7
\end{tabular}
\bigskip Global column separation modified via \verb|\renewcommand{\tabcolsep}{<width>}|\par
{\renewcommand{\tabcolsep}{2pt}
\begin{tabular}{*{7}{|c}|}
Test 1 & Test 2 & Test 3 & Test 4 & Test 5 & Test 6 & Test 7
\end{tabular}}
\bigskip Resized horizontally (keeping aspectratio) via \verb|\resizebox{<width>}{<height>}|\par
\resizebox{20em}{!}{\begin{tabular}{*{7}{|c}|}
Test 1 & Test 2 & Test 3 & Test 4 & Test 5 & Test 6 & Test 7
\end{tabular}}
\bigskip Original\par
\begin{tabular}{*{7}{|c}|}
Test 1 & Test 2 & Test 3 & Test 4 & Test 5 & Test 6 & Test 7
\end{tabular}
\end{document}
从语义角度来看,以下是针对您的代码的一些建议:
- 在 LaTeX 中,使用
\begin{center}...\end{center}
已经过时了,而且经常会产生不必要的垂直间距,即使表格中可能没有这种情况。最好使用\centering
。l2tabu
包裹对此进行了一些提及,以及对 LaTeX2e 过时代码的其他引用。 - 如果您有许多格式相似的列,则可以简化表格列规范。为此,使用
*{15}{c}
相当于ccccccccccccccc
(如上例所示)。当然,这种使用是有限制的,因为*{2}{c}
不如 有用cc
。但是,这里可读性以及后续修改的便利性都很重要。
答案2
这是我们发现的一种可行的技术table
,尽管我不知道它是否已经尝试过table*
。
使用这些包:
\usepackage{graphicx}
\usepackage{lscape}
构建要旋转的对象时,首先将其连同其标题一起放入minipage
宽度为 的环境\textheight
中,然后将其包裹在landscape
环境中以将 旋转minipage
90 度。例如,
\begin{landscape}
\begin{table}
\begin{minipage}{\textheight}
\caption{...}\label{...}
...
\end{minipage}
\end{table}
\end{landscape}
注意:landscape
环境必须位于浮动环境(table
或figure
)之外。因此,它必须出现在明确的分页符处。
测量物体的宽度并\textheight
用该宽度替换,以确保最佳定位,例如:
\begin{minipage}{6.5in}
(大多数 AMS 文档类可容纳的最大宽度为 7.5 英寸。您应该确定所使用的文档类的适当值;\textheight
不能直接工作,尽管事先将该值保存在另一个维度寄存器中可能会起作用。)
这种技术最大限度地减少了浮动对象右侧和运行头之间的额外空间。
(这些说明改编自AMS 作者常见问题解答,其中有很多提示,虽然主要是 AMS 特有的,但也可能与其他 LaTeX 环境相关。)