MakeUppercase 无法与 KOMA 字母配合使用

MakeUppercase 无法与 KOMA 字母配合使用

我正在尝试使用MakeUppercase大写 KOMA-Letter 的主题:

\documentclass{scrlttr2}

\usepackage{textcase}

\makeatletter%
\renewcommand{\subject@format}[1]{\MakeUppercase{#1}}
\makeatother%

\usepackage{blindtext}

\begin{document}
  \begin{letter}{Recipient}

    \setkomavar{subject}{Foo Subject}

    \opening{Dear Sir or Madam}

    \blindtext

  \end{letter}
\end{document}

但是这不起作用。编译失败,并显示:

! Class scrlttr2 Error: KOMA-Script variable not defined.

See the scrlttr2 class documentation for explanation.
Type  H <return>  for immediate help.
...                                              

l.16     \opening{Dear Sir or Madam}

? ^C! Interruption.
\GenericError  ...    

例如,如果我使用\large而不是\MakeUppercase一切都按预期工作。我也试过

`\addtokomafont{\MakeUppercase}

但这也不起作用。我遗漏了什么?提前致谢!

答案1

不支持大写格式。另一方面,定义\subject@format\MakeUppercase肯定会失败,因为该\usekomavar操作不可扩展。

这是一个解决方法:

\documentclass[
  subject=titled,
]{scrlttr2}

\usepackage{textcase}
\usepackage{etoolbox}
\usepackage{blindtext}

\makeatletter
\patchcmd{\@subjfield}
  {\usekomavar{subject}}
  {\MakeUppercase{\usekomavarexp{subject}}}
  {}{}
\newcommand\usekomavarexp[1]{\@nameuse{scr@#1@var}}
\makeatother

\begin{document}

\begin{letter}{Recipient}

\setkomavar{subject}{Foo Subject}

\opening{Dear Sir or Madam}

\blindtext

\end{letter}

\end{document}

在此处输入图片描述

当然,最简单的解决方法是输入

\setkomavar{subject}{\MakeUppercase{Foo Subject}}

相关内容