带有 captionsetup{labelsep=newline} 问题的 longtabu 表

带有 captionsetup{labelsep=newline} 问题的 longtabu 表

我想使用 \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 需要处于浮动环境中,例如tablefigure。为了解决这个问题,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}

修复了长表标题换行的问题

相关内容