我们不能这样做:
\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}