![避免因独立文件中的尾部有空行而出现段落](https://linux22.com/image/238885/%E9%81%BF%E5%85%8D%E5%9B%A0%E7%8B%AC%E7%AB%8B%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%B0%BE%E9%83%A8%E6%9C%89%E7%A9%BA%E8%A1%8C%E8%80%8C%E5%87%BA%E7%8E%B0%E6%AE%B5%E8%90%BD.png)
使用我的standalone
类和包,可以将图表等编译到自己的独立文件中或作为主文档的一部分。但是,一个常见的用户错误是在内容结尾和之间保留一个空行,这\end{document}
会导致图表等成为段落的一部分,并且生成的 PDF 会很\linewidth
宽。我现在正在寻找忽略此类尾随行或删除它们创建的段落的可能性。
以下 MWE 显示了该问题,并且还包含\sa@cls@beforeenddocument
位于 开头的内部宏的潜在重新定义\end{document}
。也许这个问题可以通过一些\lastbox
技巧来解决。
\documentclass{standalone}
\usepackage{tikz}
\makeatletter
\def\sa@cls@beforeenddocument{%
\ifhmode
\unskip
\else
% ???
\fi
\endstandalone
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
得出的结果为:
想要的结果是:
(显示完整的“页面”。深色边框是 Adobe Reader 的背景颜色。)
答案1
当一个段落形成后,除了通过输出例程采取行动之外,几乎没什么可以做的,但这会引发一系列麻烦。
设置\catcode`\^^M=10
将忽略输入中的空行(它们将被视为空格)。\par
当需要真实段落时,这将强制在此类文件中明确使用。
人们还可以考虑重新定义\par
为向前看,以查看是否\end{document}
有“无”内容(空格或空行除外)介入,但这可能会导致普通文本出现其他问题。