今天我发现了一个奇怪的副作用,我想在社区中分享并收集您的见解和反馈。如下所示,cleveref
如果使用xltabular
和,则可以通过不使用该包来解决该问题captionsetup
。负面副作用仅发生在xltabular
表中,而不会发生在tabularx
或tabular
一中。
MWE 显示出预期的效果
请注意,在下面的代码中,包cleveref
被注释掉了。
\documentclass[preprint, numbers]{elsarticle}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{tabularx}
\usepackage{xltabular}
\usepackage{booktabs}
\usepackage{showframe}
\usepackage{caption}
\captionsetup[table]{
labelfont = bf,
labelsep = newline,
indention = 0cm,
singlelinecheck = off,
justification = raggedright,
textformat = period
}
\usepackage[colorlinks=true, linkcolor=blue, citecolor=blue, urlcolor=blue, pdfauthor={Name}, bookmarksnumbered=true, bookmarksdepth=3, breaklinks]{hyperref}
% \usepackage{cleveref}
\begin{document}
\section{Test section}
\begin{xltabular}{\linewidth}{@{}lll@{}}
\caption{Test caption}
\label{appendix:CodingScheme}
\\ % This line break is needed, otherwise timeout in compilation
\toprule
Col 1 & Col 2 & Col 3 \\\midrule
Field 1 & Field 2 & Field 3 \\
\bottomrule
\end{xltabular}
\end{document}
但是,使用 active 运行相同的代码时cleveref
,表格标题超出页边距。
答案1
问题主要在于你懒于使用命令\label
。虽然通常情况下,你是否将其放在参数中并不重要,如果你在前面添加空格,但在这种情况下确实如此。cleveref 在内部添加了另一个标签,hyperref 也添加了代码。请看以下示例
\documentclass{article}
\usepackage{longtable}
\usepackage{showframe}
\usepackage{caption}
\captionsetup[table]{
labelfont = bf,
labelsep = newline,
indention = 0cm,
singlelinecheck = off,
}
%\usepackage[]{hyperref}
%\usepackage{cleveref}
\LTpre=\smallskipamount
\LTpost=\smallskipamount
\begin{document}
\begin{longtable}{@{}lll@{}}
\caption{Test caption} \label{appendix:CodingScheme0}
\end{longtable}
\begin{longtable}{@{}lll@{}}
\caption{Test caption} \label{appendix:CodingScheme1}\label{appendix:CodingScheme2}
\end{longtable}
\begin{longtable}{@{}lll@{}}
\caption{Test caption}\label{appendix:CodingScheme3}\label{appendix:CodingScheme4}
\end{longtable}
\begin{longtable}{@{}lll@{}}
\caption{Test caption\label{appendix:CodingScheme6}\label{appendix:CodingScheme5}}
\end{longtable}
\end{document}