使用我的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}
有“无”内容(空格或空行除外)介入,但这可能会导致普通文本出现其他问题。