我想使用 \captionsetup{} 中的“labelsep=newline”选项创建下表。但是,我收到一条错误消息。如果没有“labelsep=newline”参数,代码运行正常(参见示例)。如能得到任何帮助,我将不胜感激。谢谢。
\documentclass[float=false, crop=false]{standalone}
\usepackage{collcell}
\usepackage[latin1]{inputenc}
\usepackage{longtable,tabu}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{geometry}
\geometry{a4paper, top=25mm, left=40mm, right=25mm, bottom=30mm,
headsep=10mm, footskip=12mm}
\captionsetup[table]{justification=centering,labelsep=newline}
%\captionsetup[table]{justification=centering}
\begin{document}
{\footnotesize
\begin{longtabu} to \textwidth {
X[15,l]
X[4,l]
X[6,l]
X[8,l]
}
\caption{Caption 1}\\
\caption*{Caption 2}\\
\label{tab:table genral information es50} \\
\hline \hline \hline \hline
\textbf{Column 1} &
\textbf{Column 2} &
\textbf{Column 3} &
\textbf{Column 4}
\\ \hline \hline \hline \hline
& & & \\
entry& entry & entry & entry\\
entry & entry & entry & entry\\
entry & entry & entry & entry\\
\end{longtabu}
}
\end{document}
答案1
longtable
和标题
这样做的原因是,为了longtable
能够将表格拆分成页面,表格不能处于浮动环境中。这对于 -macro 来说是个问题\caption
,因为 -macro 需要处于浮动环境中,例如table
或figure
。为了解决这个问题,longtable
重新定义\caption
-macro,本质上使其成为一个multicolumn
这在文档中有描述,请longtable
注意,您始终可以通过命令行/终端输入 来找到文档texdoc longtable
,这适用于任何软件包。该文档也可在以下位置找到:http://ctan.org/pkg/longtable
这对我们来说为什么是个问题?
当您指定标签分隔符应为换行符时,这意味着将\\
在后面插入桌子 #,但在表格中\\
, 意味着不仅仅是插入换行符,正如您所知,它将创建一个新行,这会给我们一个错误,因为我们现在实际上在里面multicolumn
,因为 的重新定义\caption
,如上所述。
解决方案
使用命令添加新的标签分隔符
\DeclareCaptionLabelSeparator{tableNewline}{\par}
我们将只在 中使用它longtables
。这将给我们预期的结果。缺点是我们需要跟踪两种不同的格式。
输出
代码
\documentclass[float=false, crop=false]{standalone}
\usepackage{collcell}
\usepackage[latin1]{inputenc}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{geometry}
\usepackage{booktabs}% some new rules for tables
\DeclareCaptionLabelSeparator{tableNewline}{\par}
\geometry{a4paper, top=25mm, left=40mm, right=25mm, bottom=30mm,
headsep=10mm, footskip=12mm}
\captionsetup{
justification=centering,
labelsep=newline,
}
\captionsetup[longtable]{
justification=centering,
labelsep=tableNewline,
}
\begin{document}
\begin{table}
\caption{Some test caption for a regular table}
\centering
\begin{tabular}{ll}
\toprule
Foo & Baz \\
\midrule
baz & foobaz \\
\bottomrule
\end{tabular}
\end{table}
{\footnotesize
\begin{longtabu} to \textwidth {
X[15,l]
X[4,l]
X[6,l]
X[8,l]
}
\caption{Caption 1}
\label{tab:table genral information es50} \\
\toprule
\textbf{Column 1} &
\textbf{Column 2} &
\textbf{Column 3} &
\textbf{Column 4}
\\
\midrule
& & & \\
entry& entry & entry & entry\\
entry & entry & entry & entry\\
entry & entry & entry & entry\\
\bottomrule
\end{longtabu}
}
\end{document}