Используя 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}