信头上的服从令

信头上的服从令

当我写信并使用类时scrlttr2。我想使用\obeylines它作为地址,因此我可以将地址粘贴到我的 latex 源代码中,即类似于这样:

\begin{letter}{\obeylines
Peter Paul Porkins
Ponderosa Ranch 
Philadelphia
}}

但是,这根本不起作用,编译后的文档中没有换行符。有没有办法让它起作用?提前谢谢!

答案1

该文件以下列方式scrlttr2.cls定义环境:letter

\newenvironment{letter}[2][]{%
  \newpage
  \if@twoside\ifodd\c@page\else\thispagestyle{empty}\null\newpage\fi\fi
  \setcounter{page}{\@ne}%
  \setcounter{footnote}{0}%
  \interlinepenalty=200\@processto{#2}%
  \KOMAoptions{#1}%
  \@beginletterhook
}{%
  \stopletter\@@par\pagebreak\@@par%
}
\newcommand*{\stopletter}{}
\newcommand{\@processto}[1]{%
  \ifx\relax#1\relax\else
    \expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{%
    \expandafter\@xproc#1\@nil}%
  \fi
}
\long\def\@xproc#1\\#2\@nil{%
  \setkomavar{toname}{#1}\setkomavar{toaddress}{#2}}

这意味着像

\begin{letter}{
  Peter Paul Porkins \\
  Ponderosa Ranch \\
  Philadelphia
}

是必需的(前导或尾随空格大多无关紧要),因为\@xproc 需求用于\\确定在变量中存储的收件人姓名toname以及在变量中存储的收件人地址toaddress

该命令的定义使得可以使用宏代替完整地址,因此

\newcommand{\porkins}{%
  Peter Paul Porkins \\
  Ponderosa Ranch \\
  Philadelphia}

在序言和

\begin{letter}{\porkins}

会工作。

相反,\obeylines用于印刷尊重该行的文本以打字稿结束。

可以用行尾来界定参数,但这样做非常脆弱。很难\begin{letter}同时接受这两种语法。

相关内容