longtable:更改表格标题位置

longtable:更改表格标题位置

我想读取一个 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}

或者任何你喜欢的数量。

相关内容