\leftmark 不能小写(?)

\leftmark 不能小写(?)

显然,最近的更新不再允许\leftmark重新格式化:

\documentclass[10pt, openany]{book}
\usepackage{fancyhdr}

\AtBeginDocument{%
  \pagestyle{fancy}
    \fancypagestyle{stylemain} {%
      \fancyhf{}
      \fancyhead[C]{\nouppercase{\leftmark}}
    }
}

\begin{document}

% \pagestyle{stylemain}

  \chapter{chap 2}

  \newpage

  Lorem Ipsum Dolor blah blah blah
  \MakeLowercase{\leftmark}

\end{document}

编译结果

我刚刚更新了大约 90 多个软件包后才注意到此行为,所以我不知道是什么导致了此问题。有没有办法打印相同的内容并能够更改大小写?

答案1

fancyhdr 的命令\nouppercase通过重新定义 的一些内部命令来工作\MakeUppercase。由于 的定义\MakeUppercase在 LaTeX 中发生了变化,它现在失败了。也fancyhdr必须在本地进行无操作。但正如 egreg 在他的命令中所写,更好的方法是从一开始就正确\text_uppercase:nn设置。\chaptermark

\documentclass[10pt, openany]{book}
\usepackage{fancyhdr}

\AtBeginDocument{%
  \pagestyle{fancy}
    \fancypagestyle{stylemain} {%
      \fancyhf{}
      \fancyhead[C]{\nouppercase{\leftmark}}
    }
}

\usepackage{etoolbox}
\makeatletter
\patchcmd\f@nch@reset
 {\MakeUppercase\relax}
 {\MakeUppercase\relax 
  \expandafter\let\csname text_uppercase:nn\endcsname\relax}
 {}{\fail}
\makeatother  

\begin{document}

\pagestyle{stylemain}

\chapter{ChaP 2}

\newpage

Lorem Ipsum Dolor blah blah blah

\end{document}

在此处输入图片描述

关于\MakeLowercase{\leftmark}:恕我直言,这种嵌套从来没有起作用。

如果需要,您应该使用来自 L3 层(eplx3)的底层命令:

\documentclass{book}

\begin{document}

\ExplSyntaxOn
\text_lowercase:n {\text_uppercase:n{aBcD}}
\ExplSyntaxOff

\MakeLowercase{\MakeUppercase{aBcD}}

\end{document}

在此处输入图片描述

相关内容