结合使用hyperref
和beamer
时,我遇到了以下问题。原本\autoref
应该添加引用项名称的命令不起作用。
这是一个演示该问题的最小示例
\PassOptionsToPackage{naturalnames}{hyperref}
\documentclass{beamer}
\usepackage[naturalnames]{hyperref}
\hypersetup{naturalnames}
\renewcommand{\sectionname}{Unit}
\begin{document}
\section{My first section} \label{first}
\begin{frame}
See \autoref{second}.
\end{frame}
\section{My second section} \label{second}
\begin{frame}
See \autoref{first}.
\end{frame}
\end{document}
输出结果如下
请注意,名称“Unit”并未出现在生成的引用中。
答案1
如果我们查看.aux
代码生成的文件,我们会发现
\newlabel{first}{{1}{1}{My first section}{Doc-Start}{}}
移除并naturalnames
不能解决问题。
另一方面,该文件
\documentclass{article}
\usepackage{hyperref}
\renewcommand{\sectionautorefname}{Unit}
\begin{document}
\section{First}\label{first}
\autoref{first}
\end{document}
将产生
\newlabel{first}{{1}{1}{First}{section.1}{}}
然后.aux
打印“Unit 1”。
使用cleveref
似乎更容易:
\documentclass{beamer}
\usepackage{cleveref}
\crefname{section}{Unit}{Units}
\begin{document}
\section{My first section}\label{first}
\begin{frame}
See \cref{first}.
\end{frame}
\end{document}