根据生成的文档长度更改选项

根据生成的文档长度更改选项

我正在使用该包和一些每个字母都会改变的变量创建大量信件scrlttr2。这些变量的内容可能会导致信件占用我想要避免的额外页面。例如,有些人的地址占用的行数多于其他人,但也有其他变量也会导致这种情况发生。当我有空间时,我想设置,\KOMAoptions{parskip=full}因为它看起来更好,但如果空间不足,我想设置\KOMAoptions{parindent}。有没有一种好的方法可以自动执行此操作?以下是我想到的一些选项:

  1. 定义一个包含信件正文的命令。使用\KOMAoptions{parskip=full}\savebox地址以及正文命令来获取其高度。如果高度超过一定量,则设置\KOMAoptions{parindent}。然后再次使用正文命令输出实际的信件。我不确定如何获取高度并打开它,并且在单个命令中定义整个信件及其包含的环境听起来很笨拙。

  2. 制作两个版本的文档。在我的 Makefile 中,以某种方式识别版本的页数(如何?) ,并在必要时parskip替换版本。parindent

  3. 只需设置另一个变量来定义它,并为每个字母手动设置它(这就是我现在正在做的事情)。

欢迎其他想法。

答案1

这可以通过使用我使用的相同策略来实现这里. 它同样依赖于没有发生任何失误\AtEndDocument

\documentclass{scrlttr2}
\usepackage[english]{babel}
\usepackage{lipsum}

\makeatletter
\AtEndDocument{%
    \ifnum\value{page} = 1%
      \immediate\write\@auxout{\global\let\noexpand\@singlepage\noexpand\@empty}%
    \fi%
}
\newcommand{\oneormorepages}{\ifdefined\@singlepage\KOMAoptions{parskip=full}\fi}
\makeatother

\begin{document}
\oneormorepages
\lipsum[1-5]
\end{document}

相关内容