我想读取一个 csv 文件并使用创建一个多页表格\longtable
。我需要放置标题后表格。当表格较小且适合一页时,它可以正常工作(MWE 中的第一个表格)。但是,当我有多页表格时,标题会放置在非常靠近表格的位置(第二个示例)。当我使用\tabularnewline
或\\[0.2in]
在表格和标题之间添加一些空间时,表格中的 3 条垂直线中有 2 条会增加其大小并“退出”表格。
当我加载caption
包并设置belowskip=20pt
时,多页表的标题位置正确,但短表的标题离表太远。我需要文档中两个表的标题位置都正确。
我也尝试了上述的etoolbox
包\AtBeginEnvironment{longtable}{\linespread{1}\selectfont}
这里,但没有得到期望的输出。
如何修复多页表,并在不影响短表标题的情况下在表和标题之间留出更多空间?
以下是短表和长表数据文件,以及我的 MWE:
\documentclass[11pt,letterpaper,times]{article}
\usepackage{longtable}
\usepackage{pgfplots, pgfplotstable}
\usepackage{booktabs}
\usepackage{caption}
%\captionsetup[table]{belowskip=20pt, position=top}
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\linespread{1}\selectfont}
\begin{document}
\pgfplotstableset{
begin table=\begin{longtable},
end table=\end{longtable},
}
%% Correct table
\paragraph{Table \ref{tab:correct} is correct.} There is some space between the table and the caption.
\begin{table}[h!]
\begin{center}
\footnotesize
\pgfplotstabletypeset[
col sep=comma,
every head row/.style={
before row={
\hline & \multicolumn{3}{c|}{\bf 3 Cols}\\
},
after row=\hline,
},
every last row/.style={
after row=\hline,
},
columns/col1/.style={
column name={\bf Col1},
column type={|l|},
string type,
},
columns/col2/.style={
column name={\bf Col2},
column type={c},
string type,
},
columns/col3/.style={
column name={\bf Col3},
column type={c},
string type,
},
columns/col4/.style={
column name={\bf Col4},
column type={c|},
string type,
},
]{data-short.csv}
\end{center}
\caption{This table has ``correct'' caption location.}
\label{tab:correct}
\end{table}
%% Incorrect
\paragraph{Table \ref{tab:incorrect} is Incorrect.} The caption is attached to the table. There should be some space between the table and the caption as in Table \ref{tab:correct}.
%\begin{table}[h!]
\begin{center}
\footnotesize
\pgfplotstabletypeset[
col sep=comma,
every head row/.style={
before row={
\hline & \multicolumn{3}{c|}{\bf 3 Cols}\\
},
after row=\hline,
},
every last row/.style={
after row={
\hline
%\tabularnewline
%\\[0.2in]
\caption{\normalsize \mbox{This table has ``incorrect'' caption location. It is attached to the table.}}
\label{tab:incorrect}
},
},
columns/col1/.style={
column name={\bf Col1},
column type={|l|},
string type,
},
columns/col2/.style={
column name={\bf Col2},
column type={l},
string type,
},
columns/col3/.style={
column name={\bf Col3},
column type={c},
string type,
},
columns/col4/.style={
column name={\bf Col4},
column type={c|},
string type,
},
]{data-long.csv}
\end{center}
%\end{table}
\end{document}
答案1
事实上,table
环境中标题的额外间距是由环境的使用引起的center
。一般来说,由于这个额外的空间(表格上方和下方),不鼓励这样做。相反,\centering
建议使用命令,但第一个表格中的标题也太靠近表格了。但请参阅下文如何解决这个问题。
当你使用caption
包时,你可以使用
\captionsetup[longtable]{position=bottom,skip=20pt}
\captionsetup[table]{position=bottom,skip=20pt}
或者任何你喜欢的数量。