使用 threeparttable 和 cleveref 的标签类型不正确

使用 threeparttable 和 cleveref 的标签类型不正确

我遇到了一个问题三部分表包装标签类型,导致cleverref无法正确引用表格。在 Overleaf 上编译会产生以下警告:“输入第 8 行中标签类型 `` 的 cref 引用格式未定义。”

有没有办法更正此表的标签类型?或者有其他可让 cleveref 正确引用的解决方法?

MWE 如下:

\documentclass{article}

\usepackage{threeparttable}
\usepackage{cleveref}

\begin{document}
    
    Cleveref reference to threeparttable \cref{tab:test}.
    
    \begin{table}
        \centering
        \begin{threeparttable}
            \caption{Caption.}
            \begin{tabular}{l l}
                Header 1 & Header 2 \\
                \hline
                Entry 3 & Entry 4 \\
                \hline
            \end{tabular}
        \end{threeparttable}
        \label{tab:test}
    \end{table}
    
\end{document}

答案1

这不是由于cleveref或 而threeparttable导致的。这是因为您处于环境\captionthreeparttable\label无法“看到”其在环境之外的影响。您应该\label在 之后进入环境\caption

\documentclass{article}

\usepackage{threeparttable}
\usepackage{cleveref}

\begin{document}

Cleveref reference to threeparttable \cref{tab:test}.

\begin{table}
  \centering
  \begin{threeparttable}
  \caption{Caption.}
  \label{tab:test}
    \begin{tabular}{l l}
      Header 1 & Header 2 \\
      \hline
      Entry 3 & Entry 4 \\
      \hline
    \end{tabular}
  \end{threeparttable}
\end{table}

\end{document}

在此处输入图片描述

答案2

如果使用包talltblr中定义的表环境,同样有效tabularray。它相当于threeparttable

\documentclass{article}
\usepackage{tabularray}
\usepackage{cleveref}

\begin{document}

Cleveref reference to \verb+talltblt+ table is \cref{tab:test}.

\begin{table}
    \centering
    \begin{talltblr}[
caption = {Caption.},
  label = {tab:test} % <---
                    ]{cells=l}
Header 1 & Header 2 \\
      \hline
Entry 3 & Entry 4\TblrNote{a}   \\
      \hline
    \end{talltblr}
\end{table}

\end{document}

在此处输入图片描述

相关内容