如何使用 expl3 text_uppercase 为带有德语变音符号的 hyperref 书签添加?

如何使用 expl3 text_uppercase 为带有德语变音符号的 hyperref 书签添加?

当我使用text_uppercase德语变音符号和 hyperref 选项“unicode=true”时,书签中的变音符号会被替换为带有波浪号的“A”。我设置了选项“unicode=true”,因为我必须使用希腊字母对其中一个节级进行编号。为此,我使用了“textgreek”字母,这些字母只在带有 hyperref unicode 选项的书签中有效... 有办法解决这个问题吗?

\documentclass{book}
\usepackage[T1]{fontenc}

\usepackage{hyperref}
\hypersetup{
    unicode=true,
    bookmarksnumbered=true
}
\ExplSyntaxOn
\cs_set_eq:NN\textupper\text_uppercase:n
\ExplSyntaxOff
\begin{document}
\tableofcontents
\chapter{\textupper{Über die Einöde}}% umlauts get replaced in bookmarks
\end{document}

答案1

下面的方法似乎有效,但我没有检查很多情况。

\documentclass{book}
\usepackage[T1]{fontenc}

\usepackage{hyperref}
\hypersetup{
    unicode=true,
    bookmarksnumbered=true
}

%\usepackage{bookmark}
\ExplSyntaxOn
\newcommand\textupper{}

\pdfstringdefDisableCommands
  {
    \cs_set:Npn\textupper #1{ \use:e {\text_uppercase:n {#1}} }
  }

% if also in the headings 
%\cs_set_eq:NN\textupper\text_uppercase:n
\ExplSyntaxOff 
\begin{document}
\tableofcontents
\chapter{\textupper{Über die Einöde}}%
\end{document}

相关内容