You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:31:17