尝试使用 \MakeTextUppercase 自定义目录时出错

尝试使用 \MakeTextUppercase 自定义目录时出错

\MakeTextUppercase当我尝试使用自定义目录时出现以下错误:

! Undefined control sequence.
\find@pdflink ...ode \protected@edef \Hy@testname 
                                              {#2}\ifx \Hy@testname \@em... 
l.2 ...entsline {chapter}{Contents}{1}{section*.1}

知道发生了什么吗?我在下面提供了一个最小示例以供测试。

\documentclass[a4paper, 10pt, english]{memoir}

\usepackage{babel}
\usepackage{csquotes}
\usepackage{textcase}
\usepackage{lipsum}
\usepackage{hyperref}

\renewcommand{\cftchapterfont}{\MakeTextUppercase}



\begin{document}

\tableofcontents

\chapter{Test}
\lipsum

\end{document}

答案1

我记得\MakeUppercase并且\MakeTextUppercase可以轻易打破,也可以使用超链接。

在尝试修复此问题之前,我建议考虑使用小写字母形状。从排版角度来看,这比全部大写字母要好得多。此声明有效:

\renewcommand{\cftchapterfont}{\scshape}

小型大写字母目录

如果确实需要,可以通过重新定义\l@chapter负责打印章节目录条目的回忆录来解决,使用\uppercase\MakeTextUppercase并且\Makeuppercase在这里也会中断):

\makeatletter
\renewcommand*{\l@chapter}[2]{%
  \l@chapapp{\uppercase{#1}}{#2}{\cftchaptername}}
\makeatother

目录章节条目全部大写

(这次带有超链接边框,可以通过选项删除。)

答案2

这是我最终得到的这个问题来自四月份(可能想将其作为重复项关闭,或者不关闭)。在我的特定情况下,我只需要将章节标题设为大写,而保留附录标题不变。我不想保留\@chapter或相关命令的完整副本,但如果您的代码存在多年,则无论哪种方式都有可能造成长期破坏(要么我使用的补丁会失败,要么您的旧副本\@chapter或相关命令将无法按照新版本预期的方式工作):

在此处输入图片描述

\documentclass{memoir}
\usepackage{etoolbox}
\makeatletter
\ifpatchable*{\@chapter}{\typeout{Chapter can be patched}}{\typeout{Chapter cannot be patched}}
\patchcmd{\@chapter}%
{\addcontentsline{toc}{chapter}}%
{\let\f@rtocold\f@rtoc \def\f@rtoc{\uppercase\expandafter{\f@rtocold}} \addcontentsline{toc}{chapter}}%
{\typeout{Succeeded}}%
{\typeout{Failed}}
\makeatother
\usepackage{hyperref}

\begin{document}
\tableofcontents*
\chapter{One}
\chapter{Two}
\appendix \appendixpage
\chapter{Alpha}
\end{document}

由于我仍然有一些使用 PC-TeX 的用户默认没有获得 e-TeX 支持,因此我使用该ted软件包时也有此选项。

\documentclass{memoir}
\usepackage{ted}
\makeatletter
\Substitute*[{\gdef\@chapter[##1]##2}]{\@chapter[#1]{#2}}%
{\addcontentsline{toc}{chapter}}%
{\let\f@rtocold\f@rtoc%
 \def\f@rtoc{\texorpdfstring{\uppercase\expandafter{\f@rtocold}}{\f@rtocold}}%
 \addcontentsline{toc}{chapter}}
\makeatother
\usepackage{hyperref}

\begin{document}
\tableofcontents*
\chapter{One}
\chapter{Two}
\appendix \appendixpage
\chapter{Alpha}
\end{document}

在此处输入图片描述

相关内容