以下 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
也使用。