我遇到了一个问题三部分表包装标签类型,导致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
导致的。这是因为您处于环境\caption
中threeparttable
,\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}