我正在编写一个包含多个table
s 的较大的文档,在某些情况下,其内容是内联的,而在其他情况下,则包含外部文件(由其他程序创建)。
标题放在这些表格上方,而不是下方,我注意到,当表格的内容从外部文件包含时,其下方会有额外的垂直空间,而内容内联时则不会有这种空间。
这是一个 FMWE(相当简单的工作示例):
\documentclass{article}
\usepackage{booktabs}
\begin{filecontents*}{tabular-external.tex}
\begin{tabular}{c}
\toprule
Stuff goes here \\
\bottomrule
\end{tabular}
\end{filecontents*}
\begin{document}
\begin{table}[h]
\centering
\caption{Inline}
\begin{tabular}{c}
\toprule
Stuff goes here \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[h]
\centering
\caption{Included}
\include{tabular-external.tex}
\end{table}
\end{document}
结果:
其实我想额外的垂直空间。那么 a) 为什么当内容是内联时它不在那里,以及 b) 获取它的最佳(最干净)方法是什么?
答案1
首先,\include
这绝对不是您想要的正确工具\input
。
为什么?因为\include
它适用于可以有条件编译的较大文本块。在处理大型文档需要大量时间的旧时代,它非常有用。
它的一个特点\include
是它\clearpage
在执行之前发出一个命令\input
,这是造成垂直空间的原因,因为 \clearpage
在浮动中是不合法的。
也许 LaTeX 应该对这里的错误使用发出警告\include
,但老实说,\include
这有点像过去的遗物。
\include
如果用正确的命令替换,即\input
,两个表格的排版相同。
第二个问题:标准课程设置有标题以下表。
您可以通过加载caption
包来修复此问题,该包设置表格上方(和图形下方)标题的默认值。
\begin{filecontents*}{\jobname-tab.tex}
\begin{tabular}{c}
\toprule
Stuff goes here \\
\bottomrule
\end{tabular}
\end{filecontents*}
\documentclass{article}
\usepackage{booktabs}
\usepackage{caption}
\begin{document}
\begin{table}[htp]
\centering
\caption{Inline}
\begin{tabular}{c}
\toprule
Stuff goes here \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[htp]
\centering
\caption{Included}
\input{\jobname-tab.tex}
\end{table}
\end{document}