我编写了一个使用\@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}