![为什么 \iow_shipout: 会引入排版空格(而 \iow_now: 不会)?](https://linux22.com/image/283111/%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Ciow_shipout%3A%20%E4%BC%9A%E5%BC%95%E5%85%A5%E6%8E%92%E7%89%88%E7%A9%BA%E6%A0%BC%EF%BC%88%E8%80%8C%20%5Ciow_now%3A%20%E4%B8%8D%E4%BC%9A%EF%BC%89%EF%BC%9F.png)
对于我的简历,我有一个环境,它将信息分为两个小页面——一个用于显示职位/教育数据,一个用于显示环境内容。我编写的类还会产生纯文本输出(目前主要是为了好玩):
\cs_new:Nn \resume_maybe_write:n {
\tl_if_empty:NF \g_resume_options_output_text_file_tl {
\iow_now:Nx \g_resume_output_text_iow { #1 }
}
}
这实际上是导致此处出现的间距问题的原因:
\hrule
您会注意到,在第二个环境的顶部和底部添加minipage
可以解决问题。我不确定为什么——texdef hrule
似乎表明它是一个原始的(!?)。
完整源代码可供查看在 GitHub 上 (写作地点为 [此处][github-ioq]),但我要强调的是,完全地已修复该问题这个。
我的实际问题已经解决,但我非常好奇:这可能是什么原因造成的?这应该被视为 中的错误l3file
,还是预期的行为?如果是后者,为什么会这样?
答案1
翻译回 TeX 原始名称:
\immediate\write...{...}
不会创建节点,因此不太可能影响任何东西的间距,它只是写入指定的输出流。
\write...{..}
确实会使一个节点坐在那里弄乱间距,直到您输出带有的页面\shipout
。
真的很难停下来那是什么节点弄乱间距。颜色支持也会出现同样的问题。尤其是将这样的节点放在垂直列表中会存在问题,而且通常很难避免将它们放在垂直列表中。