tabularx 中的标题导致错误(没有行结束)

tabularx 中的标题导致错误(没有行结束)

我正在尝试在非浮动 tabularx 中使用标题。

到目前为止,我使用的是 \captionof,但据我所知,这会导致计数器增加两次,因为底层使用了 longtable。所以我需要切换到 tabularx 内的标题。

当我在表格中添加 \caption 时,出现以下错误:

There's no line here to end.

以下示例会产生错误:

% Preamble
% ---
\documentclass[11pt]{article}
% Packages
% ---
\usepackage[utf8]{inputenc} % Unicode support (Umlauts etc.)
\usepackage[ngerman]{babel} % Change hyphenation rules
\usepackage[a4paper, left=2.5cm, right=2.5cm]{geometry}
\usepackage{lmodern}
\usepackage{graphicx} % Add pictures to your document
\usepackage{caption}
\usepackage{tabularx}
\usepackage{ltablex} % Span tables over pages
\usepackage{float}
\usepackage{enumitem}

\renewcommand{\thesubsection}{\alph{subsection}}

\renewcommand{\arraystretch}{1.2}

\usepackage{listingsutf8}
\usepackage[usenames]{color}
\usepackage{xcolor}
\usepackage{parskip}
\usepackage{hyperref}

\newcolumntype{R}[1]{>{\raggedright}m{#1}}
\begin{document}
\title{Some title}

\tableofcontents{}
\newpage
\section{Foo}
\subsection{bar}
\subsubsection*{Foo}

\begin{center}
    \begin{tabularx}{\textwidth}{|R{3cm}|R{3cm}|X|p{1.5cm}|}
        \hline
        A
         & B
         & C
         & D
        \\
        \hline
        Lorem ipsum
         & Lorem ipsum
         & Lorem ipsum
         & 1
        \\
        \hline
        Some text
         & some more text
         & blah 
        blahh
         & 2
        \\
        \hline
        \caption{Some Caption}
    \end{tabularx}
\end{center}
\end{document}

答案1

您的代码有两个独立的问题。

  • 第一个也是最紧迫的问题与您遇到的不太有用的错误消息有关。发生的事情是\caption必须出现在tablefigure浮动内(LaTeX 术语警报)。此外,\caption不能出现在tabular类似环境中,例如tabularx。两步补救措施:(a)替换\caption{Some Caption}\captionof{table}{Some Caption}和(b)将此指令放在之后而不是之前\end{tabularx}

  • 第二个问题是,你不应该同时加载tabularxltablex——除非你知道确切地你在做什么。(大多数用户不知道……)对于手头的表格,主要症状是环境的实际宽度tabularx远远低于所需或目标宽度。对于手头的测试文档,补救措施是什么?不要加载包ltablex。相反,加载板状的longtable包,它直接结合了和包的功能tabularx。基本上,xltabular环境是longtable知道X提供的列类型的环境tabularx,但不会修改/破坏的属性tabularx

在此处输入图片描述

\documentclass[11pt]{article}
% Packages
% ---
%%%%\usepackage[utf8]{inputenc} % that's the default nowadays
\usepackage[T1]{fontenc} % <-- new
\usepackage[ngerman]{babel} % Change hyphenation rules
\usepackage[a4paper, hmargin=2.5cm]{geometry}
\usepackage{lmodern}
\usepackage{graphicx} % Add pictures to your document
\usepackage{caption}
\usepackage{tabularx}
%%%%\usepackage{ltablex} % Span tables over pages
\usepackage{float}
\usepackage{enumitem}

\renewcommand{\thesubsection}{\alph{subsection}}

\renewcommand{\arraystretch}{1.2}

%%%%\usepackage{listingsutf8}
%%%%\usepackage{color}
\usepackage[usenames]{xcolor}
\usepackage{parskip}
\usepackage{hyperref}

\newcolumntype{R}[1]{>{\raggedright\arraybackslash\hspace{0pt}}m{#1}}
\renewcommand\tabularxcolumn[1]{m{#1}} % <-- new

\begin{document}

\begin{center}
\begin{tabularx}{\textwidth}{|R{3cm}|R{3cm}|X|p{1.5cm}|}
        \hline
           A
         & B
         & C
         & D
        \\
        \hline
           Lorem ipsum
         & Lorem ipsum
         & Lorem ipsum
         & 1
        \\
        \hline
           Some text
         & some more text
         & blah 
        blahh
         & 2
        \\
        \hline 
\end{tabularx}
\captionof{table}{Some Caption}
\end{center}

\end{document}

答案2

在第一个表格前使用 手动设置标题编号\addtocounter{table}{-1}以重置计数器,然后\stepcounter{table}在表格后使用 将其加一。第一个表格的标题编号从 1 开始,后续表格的标题编号正确递增。

% Preamble
% ---
\documentclass[11pt]{article}
% Packages
% ---
\usepackage[utf8]{inputenc} % Unicode support (Umlauts etc.)
\usepackage[ngerman]{babel} % Change hyphenation rules
\usepackage[a4paper, left=2.5cm, right=2.5cm]{geometry}
\usepackage{lmodern}
\usepackage{graphicx} % Add pictures to your document
\usepackage{caption}
\usepackage{tabularx}
\usepackage{ltablex} % Span tables over pages
\usepackage{float}
\usepackage{enumitem}

\renewcommand{\thesubsection}{\alph{subsection}}

\renewcommand{\arraystretch}{1.2}

\usepackage{listingsutf8}
\usepackage[usenames]{color}
\usepackage{xcolor}
\usepackage{parskip}
\usepackage{hyperref}

\newcolumntype{R}[1]{>{\raggedright}m{#1}}

\begin{document}
\title{Some title}

\tableofcontents{}
\newpage
\section{Foo}
\subsection{bar}
\subsubsection*{Foo}

% Reset the counter for the caption
\addtocounter{table}{-1}

\begin{table}[H]
    \centering
    \begin{tabularx}{\textwidth}{|R{3cm}|R{3cm}|X|p{1.5cm}|}
        \hline
        A & B & C & D \\
        \hline
        Lorem ipsum & Lorem ipsum & Lorem ipsum & 1 \\
        \hline
        Some text & some more text & blah blahh & 2 \\
        \hline
    \end{tabularx}
    \caption{Some Caption} % Add caption with numbering
\end{table}

% Increment the counter for the next caption
\stepcounter{table}

\end{document}

在此处输入图片描述

相关内容