我希望我的文档中同时显示一个图和一个表,因此我使用了图形环境,用 绘制了图tikzpicture
,链接到此文件,然后添加了命令\captionof
,然后在表格环境中添加了表。在我的文档中,引用表格时显示的是 Abb. 而不是 Tab.。当在新文档中使用完全相同的代码引用表格时,显示的\autoref
是 Tab.,这是应该的。虽然在我的文档中显示的是 Abb. 而不是 Tab.,但枚举遵循表格之一,而不是图形。
\documentclass[12pt]{article}
\usepackage{hyperref}
\usepackage{capt-of}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\addto\captionsngerman{\def\figurename{Abb.}}
\addto\extrasngerman{\def\figureautorefname{Abb.}}
\addto\extrasngerman{\def\tableautorefname{Tab.}}
\begin{document}
\begin{figure}
\centering
%Figure
\begin{tikzpicture}
\begin{axis}
\addplot coordinates{(1,1)};
\end{axis}
\end{tikzpicture}
\caption{CAPTION}
\label{figure}
%Table
\captionof{table}{CAPTION\label{tab:LABEL}}
\begin{tabular}{ccc}
akbvk & laknflfk& kanfkf \\
\end{tabular}
\end{figure}
Refering to the figure (\autoref{figure}) and refering to the table (\autoref*{tab:LABEL})
\end{document}
代码显示了一个最小示例,它在新文档中按预期工作,但插入到我现有的文档中后突然不起作用。\addto
两个文档中的包和命令相同。我的论文已经有 50 页了,我不想发表它,你(可能)也不想深入研究它以找出问题所在,但也许你知道问题可能是什么……
第一张图片显示的是我的文档(论文)中上面给出的代码,第二张图片显示的是新文档中给出的代码。
编辑:我将论文中使用的所有包复制到新文档中,然后一个接一个地删除包,这样我发现 subfig 包导致了错误:
\documentclass[12pt]{article}
\usepackage{hyperref}
\usepackage{capt-of}
\usepackage{subfig}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\addto\captionsngerman{\def\figurename{Abb.}}
\addto\extrasngerman{\def\figureautorefname{Abb.}}
\addto\extrasngerman{\def\tableautorefname{Tab.}}
\begin{document}
\begin{figure}
\centering
%Figure
\begin{tikzpicture}
\begin{axis}
\addplot coordinates{(1,1)};
\end{axis}
\end{tikzpicture}
\caption{CAPTION}
\label{figure}
%Table
\captionof{table}{CAPTION\label{tab:LABEL}}
\begin{tabular}{ccc}
akbvk & laknflfk& kanfkf \\
\end{tabular}
\end{figure}
Refering to the figure (\autoref{figure}) and refering to the table (\autoref*{tab:LABEL})
\end{document}
因为我不想错过 subfig,你知道如何绕过这个问题吗?
答案1
\captionsetup[type=table]
最简单的解决方案是在之前加上一个明确的\captionof{table}{...}
。
显然,\captionof
根本不应该在浮动环境中使用,它似乎会抓取错误的\@captype
内容。最终,这会将错误的锚点名称写入.aux
文件,然后从中\autoref
抓取其信息以确定名称。
或许,抱团并不是最好的方式。
但是,该包cleveref
提供了正确的名称!
\documentclass[12pt]{article}
\usepackage{capt-of}
\usepackage{subfig}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\usepackage{hyperref}
\addto\captionsngerman{\def\figurename{Abb.}}
\addto\extrasngerman{\def\figureautorefname{Abb.}}
\addto\extrasngerman{\def\tableautorefname{Tab.}}
\begin{document}
\begin{figure}
\centering
%Figure
\begin{tikzpicture}
\begin{axis}
\addplot coordinates{(1,1)};
\end{axis}
\end{tikzpicture}
\caption{CAPTION}
\label{figure}
%Table
\captionsetup{type=table}
\captionof{table}{CAPTION\label{tab:LABEL}}
\begin{tabular}{ccc}
akbvk & laknflfk& kanfkf \\
\end{tabular}
\end{figure}
Refering to the figure (\autoref{figure}) and refering to the table (\autoref*{tab:LABEL})
\end{document}