一起使用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}