![我可以编写一个宏来在任意段落中放置垂直、可破坏的规则而无需输出例程吗?](https://linux22.com/image/244070/%E6%88%91%E5%8F%AF%E4%BB%A5%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E5%AE%8F%E6%9D%A5%E5%9C%A8%E4%BB%BB%E6%84%8F%E6%AE%B5%E8%90%BD%E4%B8%AD%E6%94%BE%E7%BD%AE%E5%9E%82%E7%9B%B4%E3%80%81%E5%8F%AF%E7%A0%B4%E5%9D%8F%E7%9A%84%E8%A7%84%E5%88%99%E8%80%8C%E6%97%A0%E9%9C%80%E8%BE%93%E5%87%BA%E4%BE%8B%E7%A8%8B%E5%90%97%EF%BC%9F.png)
我回答了一个上周的问题关于在 Plain TeX 中创建连续但可拆分的规则,可放在任意数量的段落旁边。我的解决方案是将段落收集到规则中vbox
;我的输出例程将该内容放入hbox
并添加vrule
。如果内容溢出,我会vsplit
尽可能多地放置内容,然后将其余内容推迟到下一页。
我可以在没有自定义输出程序的情况下完成这个(在 Plain TeX 中)吗?
答案1
除非你准备只支持有限数量的情况(即使这样......)答案是不确实,你可以使用合适的循环来拆分收集到的垂直材料\vsplit
,但是与 OR 相比,该\vsplit
操作缺少以下内容:
- 无需处理插入材料(对于此应用来说还可以)
- 没有与拆分相关的惩罚记录(可通过 OR 获取
\outputpenalty
)
如果您想剖析垂直列表,向其中添加一些内容,然后重新构建它以便在相同的位置找到正常的断点,那么后者至少很重要。