我正在尝试在非浮动 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
必须出现在table
或figure
浮动内(LaTeX 术语警报)。此外,\caption
不能出现在tabular
类似环境中,例如tabularx
。两步补救措施:(a)替换\caption{Some Caption}
为\captionof{table}{Some Caption}
和(b)将此指令放在之后而不是之前\end{tabularx}
。第二个问题是,你不应该同时加载
tabularx
和ltablex
——除非你知道确切地你在做什么。(大多数用户不知道……)对于手头的表格,主要症状是环境的实际宽度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}