我正在创建一个 TeX 文档,要分发给一个班级,它必须使用es150.sty
教授提供的样式文件。由于这里无法详述的原因,我们假设这es150.sty
是一个黑匣子,我无法访问它来更改各种间距设置。我已经用这个样式文件创建了一个文档,一切都编译得很好。但是,我需要的所有文本、标题等只出现在第 1 页和第 2 页(如预期的那样),但 TeX 在文档末尾生成了一个完全无关的空白第 3 页。
我读过很多留言板帖子,关于如何修改书籍类、章节类以及使用\part
环境之类的东西来删除章节之间或这些类型文档末尾出现的空白页和空格。但是,我的问题是如何从不属于这些类型的文档中删除单个多余的空白页。
我可以说的是es150.sty
:它定义了一个名为“讲义”的环境和另一个名为“练习”的环境,用于在讲义上创建家庭作业练习以分发给学生。此样式文件源自其他一些文件,已用于数十门课程。这是一个简单明了的模板文件,没有任何花哨的东西,过去一直使用它,没有出现过这样的问题。
因此,总结一下:是否有一个合理、实用、简便的方法(最好只是发出某种 \ignorepage{} 命令或其他东西)来切断文档末尾多余的空格无需修改.sty
文件?
答案1
有没有办法去掉文档末尾多余的空格无需修改 .sty 文件?
您始终可以通过在实际文档中重新定义 .sty 文件的宏来覆盖它们。这可能并不总是很好,但绝对是可能的。在最简单的情况下,如果我们假设某个命令\foo
通过发出命令来负责空白页\clearpage
,您可以将其从.sty
文件中复制出来并在主文档中重新定义它。
鉴于:
\newcommand\foo{…something…\clearpage…something else…}
只需将其放入您的文档中:
\renewcommand\foo{…somethign……something else…}
当然,这需要根据参数等进行调整,而且可能不像删除冗余那么简单\clearpage
,但原理仍然适用。
答案2
有一种非常实用的方法既不会弄乱样式文件,也不会弄乱您的 tex 文档:之后删除空白页。如果您使用的是安装了 TeXLive 的 Unix 系统(debian 软件包texlive-pictures
),则可以使用该实用程序pdftk
通过选择某些页面从旧 PDF 创建新 PDF。如果您非常幸运并且正在使用zsh
,那么这里有一个命令可以删除 PDF 的最后一页:
pdftk essay.pdf cat 1-$(pdfinfo !#:1 | perl -ne '/^Pages: *(\d+)/ && print ($1-1)') output !#:1:r.trunc.pdf
答案3
这当然是可能的,因为 Tex 对页面的操作可以通过重新定义标记列表来控制。\output
我不确定如何在 vanilla Latex 中确定页面是否为空,因为内容因\output
文档类别而异。使用 Luatex,您可以在排版后查看页面的内容,如果页面为空白,则可以“倒回”,这允许您编写更强大的代码。
以下代码可能对你有用,也可能没用:
%%Put this at the point after which you want no blank pages
\makeatletter
\edef\@@output{\the\output}
\output={\ifdim\ht255<\hsize % \ht255 is the height of \box255,
% which contains the text to be output
\relax
\else \@@output \fi}
\makeatother
我还没有测试过。