避免因独立文件中的尾部有空行而出现段落

避免因独立文件中的尾部有空行而出现段落

使用我的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}

得出的结果为:

当前结果

想要的结果是:

想要的结果

(显示完整的“页面”。深色边框是 Adob​​e Reader 的背景颜色。)

答案1

当一个段落形成后,除了通过输出例程采取行动之外,几乎没什么可以做的,但这会引发一系列麻烦。

设置\catcode`\^^M=10将忽略输入中的空行(它们将被视为空格)。\par当需要真实段落时,这将强制在此类文件中明确使用。

人们还可以考虑重新定义\par为向前看,以查看是否\end{document}有“无”内容(空格或空行除外)介入,但这可能会导致普通文本出现其他问题。

相关内容