将地址与 scrlttr2 中的信件正文对齐

将地址与 scrlttr2 中的信件正文对齐

scrlttr2,我希望将地址与信件正文对齐。我尝试了以下方法:

\@setplength{toaddrhpos}{\oddsidemargin}

但是它将地址移到了纸张的左边缘。

我怎样才能达到我想要的一致?

例子:

\ProvidesFile{h.lco}[2012/07/25]

\@setplength{toaddrhpos}{\oddsidemargin}

\endinput

信件.tex

\documentclass[h]{scrlttr2}

\usepackage[english]{babel}


\begin{document}

\begin{letter}{Name\\Address\\City}


\opening{Dear Madam or Sir:}

Hello.

\closing{Very truly yours,}


\end{letter}
\end{document}

答案1

KOMAscript 的作者 Markus Kohmnowindow在他的书中的样本中包含了 -lco(参见来自 4. KOMA-Script-Books 的示例)。该文件的来源为:

% nowindow.lco
% Copyright 2008 Markus Kohm
% 
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% 
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is Markus Kohm.
% 
% This work consists of this file only.
%-----------------------------------------------------------------------
\ProvidesFile{nowindow.lco}%
  [2003/01/24 v0.1 unsupported letter-class-option]
\@setplength{firstheadwidth}{\textwidth}
\@setplength{toaddrhpos}{\oddsidemargin}
\@addtoplength{toaddrhpos}{1in}
\KOMAoptions{backaddress=false}
\endinput

将此源复制到文本编辑器并将其保存为nowindow.lcotex 搜索路径(您的texmf-local),或保存到与您的信件相同的目录中。记得更新 tex 文件数据库(运行texhash或系统上的任何命令,例如从 MiKTeX 中的设置中“刷新 FNDB”)。

用于以下用途的 MWE nowindow.lco

\documentclass[UKenglish]{scrlttr2}
\usepackage{babel}
\usepackage[utf8]{inputenx}
\LoadLetterOption{nowindow}

\begin{document}
\begin{letter}{Name of Recipient \\ Address \\ of \\ Recipient}

\opening{Hello}  % eg. Hello

\closing{Kind regards} %eg. Regards

\end{letter}
\end{document}

编辑: PSH 询问为什么必须在 中添加 1in。Markus \toaddrhposKohn 在Komascript 主页上的这条回复. 德语的近似翻译:

最终,1in 源自 TeX 的历史。TeX 不是从页面的外边距开始,而是向左移动一英寸,向下移动一英寸。因此,\oddsidemargin 比偶数页的边距小一英寸。为了方便用户,伪长度是根据实际左边距(以及页面的实际顶部)计算的。因此,在伪长度中使用 \oddsidemargin 时,必须将这一英寸考虑在内。

(德国本地人,请随意改进翻译。)

答案2

这个答案详细阐述了Sveinung的观点。

\openingscrlttr2“移动到位”打印“收件人地址”,\move@topl其定义为:

\newcommand*{\move@topl}{%
  \null\hskip -1in%
  \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi
  \ignorespaces%
}

后面跟着一个\hskip大小为“ \toaddrhpos”的 。因此,将“ \toaddrhpos”设置为与跳过的距离相同\move@topl(在相反方向上),将使任何水平移动无效。因此,添加

\makeatletter
\@setplength{toaddrhpos}{\dimexpr\oddsidemargin+1in}
\makeatother

就足够了,因为开头通常是在奇数页。

相关内容