我正在创建一个信件选项 (lco) 文件,我将使用它来处理多封信件。该类scrlttr2
设计用于固定放置地址字段,并将日期放置在页面顶部的固定位置 ( refvpos
)。我想更改它,以便refvpos
根据地址的高度自动调整。此示例导致信件的日期和开头与地址冲突:
\documentclass[paper=letter]{scrlttr2}
\usepackage[american]{babel}
\areaset{6.5in}{9in}
\KOMAoptions{parskip=full,refline=dateleft,fromalign=right}
\makeatletter
\@setplength{toaddrvpos}{0.5in}
\@setplength{refvpos}{1.5in}
\makeatother
\date{16 February 2012}
\begin{document}
\begin{letter}{Dr.~Leo Lion\\Fordstan University\\Room 50\\1600 Pennsylvania Ave\\Somewhere\\United States of America}
\opening{Dear Sir,}
This is a test.
\closing{Sincerely yours}
\end{letter}
\end{document}
我可以修复这个问题,以便日期始终是\baselineskip
地址后面的 1 行,无论地址是两行还是十行?
答案1
您可以像这样重新定义字母命令:
\let\oldletter\letter
\renewcommand\letter[1]{%
\newdimen\height%
\setbox0=\vbox{#1}%
\height=\ht0 \advance\height by \dp0%
\@setplength{toaddrheight}{\height}%
\@setplength{refvpos}{\useplength{toaddrvpos}}%
\@addtoplength{refvpos}{\useplength{toaddrheight}}%
\@addtoplength{refvpos}{2\baselineskip}%
\oldletter{#1}%
}
它将地址放在 vbox 中,计算其高度,设置地址字段的高度,最后将结果 refvpos 计算为 toaddrvpos+toaddrheight+2baselineskip 的总和。
希望能帮助到你。