如何使用 \MakeUppercase 作为超链接书签?

如何使用 \MakeUppercase 作为超链接书签?

我们不能这样做:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\hypersetup{
    unicode=true,
    bookmarksnumbered=true
}
\begin{document}
\tableofcontents
\chapter{\MakeUppercase{First chapter}}% that doesn't work
\end{document}

我猜测在将命令用于 hyperref pdfstring 之前必须先“扩展”该命令?!

(我希望 \part-headings 的书签条目全部大写。 (但是,标题本身的格式不同。)基本上,我希望能够在文档中使用类似 \mychapter{First chapter} 的内容,同时在书签中使用全部大写。我知道我可以使用 \texorpdfstring{First chapter}{FIRST CHAPTER} ,但我正在寻找一种可以自动完成此操作的解决方案。)

答案1

使用 expl3 函数:

\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{First chapter}}% that doesn't work
\end{document}

在此处输入图片描述

如果您只希望将其放在书签中,您可以这样做:

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

\usepackage{hyperref}
\hypersetup{
    unicode=true,
    bookmarksnumbered=true
}
\ExplSyntaxOn
\newcommand\textupper{}
\pdfstringdefDisableCommands{\cs_set_eq:NN\textupper\text_uppercase:n}
\ExplSyntaxOff
\begin{document}
\tableofcontents
\chapter{\textupper{First chapter}}% 
\end{document}

相关内容