我正在寻找一种自动机制来更改\textwidth
中第一个字母分页符处的有效值scrpage2
。我尝试过\afterpage
和\nextpage
(理想情况下它们应该设置在 内\firsthead
),但都没有成功。我不想使用该geometry
包,因为首先,在我看来scrlttr2
应该管用和朋友的变化KOMAoptions
,其次,如果在和 KOMA 布局内使用,它似乎无论如何都不起作用scrlttr2
。非常欢迎提出想法和建议。
这是 MNWE。第 2 页及后续页面的文本块应该比第一页更宽 — 但事实并非如此。
\documentclass{scrlttr2}%
\usepackage[english]{babel}
\usepackage{lipsum,afterpage}%
\setlength{\textwidth}{125mm}%
\nexthead{%
\global\areaset{170mm}{\textheight}%
\global\KOMAoptions{DIV=areaset}%
\global\recalctypearea%
}
\afterpage{%
\global\areaset{170mm}{\textheight}%
\global\KOMAoptions{DIV=areaset}%
\global\recalctypearea%
}
\begin{document}
\begin{letter}{Receipient}
\opening{Dear receipient,}
\lipsum[1-6]
\closing{Yours}
\end{letter}
\end{document}
顺便说一句,我真心认为这是不是覆盖在文档中间更改 \textwidth 和 \textheight和相关问题,而是以某种方式与 KOMA 类的内部相关。
答案1
\pagebreak
这是现在的一个工作示例。它仍然需要在信件正文中提供手册,但根据@DavidCarlisle 的解释(见上文),这已经是最好了,无需借助更强大的系统(如 luatex)。
\documentclass{scrlttr2}%
\usepackage[english]{babel}
\usepackage{lipsum,afterpage}%
\setlength{\textwidth}{125mm}%
\firstfoot{%
\afterpage{%
\global\setlength{\textwidth}{17cm}%
\global\setlength{\columnwidth}{\textwidth}%
\global\setlength{\hsize}{\columnwidth}%
\global\setlength{\linewidth}{\hsize}}%
}
\begin{document}
\begin{letter}{Receipient}
\opening{Dear receipient,}
\lipsum[1-2]
\pagebreak % enfore the page break, otherwise afterpage will take
% effect too late, i.e. after first broken paragraph on page 2.
\lipsum[3-12]
\closing{Yours}
\end{letter}
\end{document}
在此示例中,第一页的正文宽度为 12.5 厘米,后面所有页面的正文宽度均为 17 厘米。如果您希望此方法在包含多个字母的文档中起作用,则应\textwidth
在每个“第一页”上重置,例如使用
\firsthead{%
\global\setlength{\textwidth}{12.5cm}%
\global\setlength{\columnwidth}{\textwidth}%
\global\setlength{\hsize}{\columnwidth}%
\global\setlength{\linewidth}{\hsize}%
}
在序言中。