当我写信并使用类时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}
同时接受这两种语法。