如何让Groff不输出空行?Groff tbl表格多余空行问题求助
解决Groff输出表格前后大量空行的问题
为什么会有这么多空行?
Groff本身不会默认生成这么多空行,你遇到的问题是**-me宏的特性导致的**。-me是Groff的文档排版宏包,专门用于生成完整的多页文档,它会自动添加页面顶部、底部的空白(模拟实体纸张的页边距),所以才会在表格前后出现大量空行。
解决方法
方法1:放弃-me宏,直接渲染表格
如果你只是生成独立的表格,完全不需要用-me宏。执行以下命令即可得到无多余空行的表格:
# 简化写法(-t参数自动调用tbl处理表格) groff -t -T ascii Documents/tempdir/tmp18=.md # 或者分开执行tbl和groff tbl Documents/tempdir/tmp18=.md | groff -T ascii
方法2:调整-me宏的页边距(适合需要扩展为完整文档的场景)
如果必须使用-me宏,可以通过-P参数给ASCII渲染器groty传递参数,消除页边距:
tbl Documents/tempdir/tmp18=.md | groff -me -T ascii -P-l0 -P-t0
参数说明:
-P-l0:将底部页边距设为0-P-t0:将顶部页边距设为0
如果还需要消除左右边距,可追加-P-b0(左)和-P-r0(右)。
方法3:用sed精准修剪前后空行
你之前的sed命令逻辑有误,下面的命令可以只删除开头和结尾的连续空行,保留表格内部的必要空行:
tbl Documents/tempdir/tmp18=.md | groff -me -T ascii | sed -e '/./,$!d' -e '/^[[:space:]]*$/,$!d'
命令解释:
/./,$!d:删除开头所有空行,直到遇到第一个有内容的行/^[[:space:]]*$/,$!d:删除最后一个有内容的行之后的所有空行
内容的提问来源于stack exchange,提问作者croakouttatune
相关产品推荐
相关产品推荐

