当使用带有 ngerman 和 appendix 包的 babel 时,附录没有 autorefname

当使用带有 ngerman 和 appendix 包的 babel 时,附录没有 autorefname

appendix当与包一起使用时[ngerman]{babel}更改appendixautorefnameAppendixautorefname没有效果。

错误信息No autoref name for 'Anhang' [...]仍然存在。

我怎样才能让它工作?

提前致谢。

梅威瑟:

\documentclass{book}
\usepackage[titletoc]{appendix}
\usepackage[ngerman]{babel}
\addto\extrasngerman{%
    \def\chapterautorefname{Kapitel}%
    \def\appendixautorefname{Anhang}%
    \def\Appendixautorefname{Anhang}%
}
\usepackage{hyperref}

\begin{document}
\chapter{a}\label{ch:a}
Reference to chapter: \autoref{ch:a}

Reference to appendix: \autoref{App}

\begin{appendices}
\chapter{Ein Anhang}\label{App}
\end{appendices}

\end{document}

在此处输入图片描述

PS:我已经在评论区问过这个问题了‘附录’没有自动引用名称但感觉为此提出一个新问题会更好。

答案1

\Appendixautorefname不起作用的原因是tocloft使用\appendixname宏在这里创建锚点Anhang,请参阅条目

\newlabel{App}{{A}{3}{Ein Anhang}{Anhang.a.A}{}}

.aux文件中。hyperref正在寻找一个特殊\Anhangautorefname命令,而不是\Appendixautorefname

\documentclass{book}
\usepackage[titletoc]{appendix}
\usepackage[ngerman]{babel}

\makeatletter
\addto\extrasngerman{%
  \renewcommand{\chapterautorefname}{Kapitel}%
  \renewcommand{\appendixautorefname}{\appendixname}%
  \@ifundefined{Anhangautorefname}{%
    \newcommand{\Anhangautorefname}{\appendixname}%
  }{%
    \renewcommand{\Anhangautorefname}{\appendixname}%
  }
}
\makeatother

\usepackage{hyperref}

\begin{document}

\chapter{a}\label{ch:a}
Reference to chapter: \autoref{ch:a}

Reference to appendix: \autoref{App}

\begin{appendices}
\chapter{Ein Anhang}\label{App}
\end{appendices}

\end{document}

在此处输入图片描述

相关内容