nameref + fontenc 导致 aux-File 中出现变音符号

nameref + fontenc 导致 aux-File 中出现变音符号

我编写了一个使用\@currentlabelname和 的小新命令\nameref。当我在标签名( 的参数\@currentlabelname)中包含变音符号时,一切都运行正常,直到我使用 fontenc 包。然后变音符号无法正确转义/转换为 .aux-File,从而导致 inputenc 错误。

这是一个最小的例子。运行两次就会出现错误!有什么想法可以让这个与 fontenc 一起工作吗?

\documentclass{scrartcl}
\usepackage[T1]{fontenc} %causes Umlauts in -aux-file and therefore an inputenc-error on the second run
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand\AP[1]{%
    \subsubsection*{#1}%
    \edef\@currentlabelname{#1}%
    }
\makeatother
\begin{document}
    \AP{endgültig}
    \label{foo}
    \nameref{foo}
\end{document}

答案1

您可以使用以下方法解决该\protected@edef问题\edef

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand\AP[1]{%
  \subsubsection*{#1}%
  \protected@edef\@currentlabelname{#1}%
}
\makeatother
\begin{document}

\AP{endgültig}\label{foo}

\nameref{foo}

\end{document}

相关内容