使用 LuaTeX 的可变页面长度(每节 1 页)

使用 LuaTeX 的可变页面长度(每节 1 页)

如果每个人都在屏幕上阅读 PDF 文档,而没有人真正将其打印出来,我们不需要每 11 英寸(或 297 毫米)断行一次,以使文本适合实体纸张。这通常会产生难看的孤行。

因此,我使用非常长的纸张尺寸来尽量减少分页符的出现。但我也想到:如果没有人打印文档,就没有必要将每页都做成相同的大小。一个合理的替代方案是使用可变的页面长度,以便一页正好适合一个部分的长度。这样,就不会再有超长的空白,读者可以使用 PDF 阅读器应用程序中的“下一页”命令轻松跳转到下一节。

我可以使用Preview带有tightpage选项的包轻松完成此操作,但它不适用于marginpar。如果有 marginpar,TeX 会吐出“Float(s) lost”错误。

Standalone也这样做,但它在内部加载Preview带有选项的包tightpage来执行此操作,因此没有什么不同。Marginpar 仍然不起作用。

我也看了这个答案(不同的页面长度)。这可以完美地与 marginpar 配合使用,但代码(大概)仅适用于 PDFTeX。它不适用于 LuaLaTeX。也许我可以稍微修改一下代码,让它与 Lua 配合使用,但我不知道怎么做。

带有包的最低限度不工作的示例Preview

\documentclass{article}
\usepackage[active,tightpage]{preview}
\renewcommand{\PreviewBorder}{1cm}
\newcommand{\Newpage}{\end{preview}\begin{preview}}

\begin{document}
\begin{preview}
Some text to test.\marginpar{Some text in marginpar}
\end{preview}
\end{document}

答案1

一些 pdfTeX 命令已提升为 LuaTeX 原语,\pdfpageheight其中包括(参见luatex85 的文档)来实现鲍里斯的回答在 LuaTeX 中,你只需将\pdfpageheight其改为\pageheight。为了完整起见,我复制了 Boris 的代码,并进行了上述修改:

\documentclass{article}
\usepackage{everyshi,lipsum}
\pagestyle{empty}
\textheight500cm
\EveryShipout{%
  \pageheight=\pagetotal
  \advance\pageheight by 2in
  \advance\pageheight by 2\topmargin
  \advance\pageheight by \textheight
  \advance\pageheight by -\pagegoal}
\begin{document}

\lipsum[3-5]
\pagebreak

This line has a footnote\footnote{\lipsum[6-8]}.
\lipsum[1]

And this line too\footnote{\lipsum[12]}.
\pagebreak

\end{document} 

相关内容