这似乎是 tufte-book 图形标签的一个问题,但我不确定是否可以解决这个问题。
\documentclass{tufte-book}
\usepackage{listings}\lstloadlanguages{C}
\usepackage{hyperref}
\newcommand{\lstnumberautorefname}{Figure}
\begin{document}
\begin{figure}
\begin{center}
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\end{center}
\caption{A table}\label{fig}
\end{figure}
\begin{figure}
\begin{lstlisting}
void main() {}
\end{lstlisting}
\caption{A listing}\label{fig2}
\end{figure}
\begin{figure}
\begin{center}
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\end{center}
\caption{Another table}\label{fig3}
\end{figure}
testing \autoref{fig} and \autoref{fig2} and \autoref{fig3}
\end{document}
针对表格的两个\autoref
代码似乎不正确:最后一行打印为“测试 [1] 和 [图 2] 和 [图 3]”,其中 [1] 链接到文档的开头,[图 2] 链接到图 2,正如预期的那样,[图 3] 也链接到图 2。如果图形包含文本或其他内容而不是表格,则会出现相同的行为。因此,似乎环境lstlisting
正在做一些黑客行为来修复引用,而默认行为无法正确锚定标签。
我可以给其他图形添加一些神奇的魔力,让它们像列表图形一样工作吗?