使用 captionsetup 和 xltabular 并激活 cleveref 时,表格标题超出页边距

使用 captionsetup 和 xltabular 并激活 cleveref 时,表格标题超出页边距

今天我发现了一个奇怪的副作用,我想在社区中分享并收集您的见解和反馈。如下所示,cleveref如果使用xltabular和,则可以通过不使用该包来解决该问题captionsetup。负面副作用仅发生在xltabular表中,而不会发生在tabularxtabular一中。

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}

没有 hyperref 和 cleveref:

在此处输入图片描述

使用超链接

在此处输入图片描述

使用 hyperref 和 cleveref

在此处输入图片描述

相关内容