ragged2e 和 scrlttr2 之间是否存在新的不兼容性?

ragged2e 和 scrlttr2 之间是否存在新的不兼容性?

以下 MWE 以前工作正常,但自从我昨天更新了 TeX 发行版(有一段时间没更新了)后,只要\\地址中出现超过 ,它就会引发错误。在 内\newline移动时,它可以使用 或。\RaggedRight{letter}

\documentclass{scrlttr2}

\RequirePackage{ragged2e}
\RaggedRight

\begin{document}

\begin{letter}{ x \\ x \\ x }
\opening{Hi,}
Text
\closing{Bye}
\end{letter}

\begin{letter}{ x \\ x }
\opening{Hi,}
Text
\closing{Bye}
\end{letter}

\end{document}

这是 KOMA-Script 的一个错误吗ragged2e?如果不是,我该如何修复它?

答案1

KOMA-Script 错误已在当前版本中修复KOMA-Script 下一版本的预发布(将是 3.27a):

\documentclass{scrlttr2}[2019/10/28]% needs at least version 3.27a.3319
\usepackage{lipsum}% only for dummy text
\usepackage{ragged2e}
\RaggedRight
\begin{document}
\begin{letter}{ x \\ x \\ x }
\opening{Hi,}
Recipient: \usekomavar{toname}, \usekomavar[\def\\{, }]{toaddress}

\lipsum[1]
\closing{Bye}
\end{letter}
\end{document}

KOMA-Script 版本 3.27 的可能解决方法:

\documentclass{scrlttr2}
\usepackage{lipsum}% only for dummy text
\usepackage{ragged2e}
\AtBeginLetter{\RaggedRight}% <- changed
\begin{document}
\begin{letter}{ x \\ x \\ x }
\opening{Hi,}
Recipient: \usekomavar{toname}, \usekomavar[\def\\{, }]{toaddress}

\lipsum[1]
\closing{Bye}
\end{letter}
\end{document}

或者

\documentclass{scrlttr2}
\usepackage{lipsum}% only for dummy text
\usepackage{ragged2e}
\RaggedRight
\begin{document}
\begin{letter}{ x \\ x \protect\\ x }% <- changed
\opening{Hi,}
Recipient: \usekomavar{toname}, \usekomavar[\def\\{, }]{toaddress}

\lipsum[1]
\closing{Bye}
\end{letter}
\end{document}

答案2

我的建议是“强化” \@centercr(其含义\\如下\raggedright)。

\documentclass{scrlttr2}

\makeatletter
\MakeRobust\@centercr
\makeatother

\raggedright

\begin{document}

\begin{letter}{x\\ x \\ x}
\opening{Hi,}
Text
\closing{Bye}
\end{letter}

\end{document}

使用 也是一样的\RaggedRight,因为它\@centercr也使用。

相关内容