带有groff / ntoff的tbl:到达页面末尾时边框混乱

时间:2018-08-24 14:39:35

标签: groff tbl

作为脚本的输出,我为tbl生成了inut。但是,当表格似乎到达页面的末尾时,表格的边框会遍及整个地方。例如:

             │            │                │                 │
             │            │                │                 │
             │            │                │                 │
             │            │        ‐ 1 ‐   │                 │
             │            │                │                 │
             │            │                │                 │
             │            │                │                 │
       4.  The in3 intermediate data structure               │
             │            │                │                 │
       In3   is   an   intermediate   language.  The  goal  of  the
       intermediate language is to provide all the content  in  the
       right │order,  in  such  a  way  that the output‐filters can

(这是nroff输出)。列边界符合页面底部的表格。

这似乎主要发生在完全指定表格时(例如,对于每一行,在标题中都写了一行),例如:

.TS
allbox,center;
l l l
l l l
l l l
l l l
l l l
^ l l
l l l.

我必须这样做,因为我事先不知道两行何时需要合并的单元格(^)。

我试图在每个表之前放置一个有条件的新页面,但这并不像看起来那样明显,因为a)nroff(文本输出)和groff(ps输出)似乎不能以相同的方式处理此问题,并且b)由于可能存在多行单元,因此很难预测一张桌子的长度。

我想要一个不强迫我为每个表开始新页面的解决方案。

1 个答案:

答案 0 :(得分:0)

通过给它一个显式表头来完全指定该表可能就足够了,在页拆分后下一页的开始处需要重复该表头。您可能还需要使用宏-mm-ms,它们也正在进行页面末尾处理,并且需要与tblT#宏配合使用为此创建的。

格式为

.TS H
options ;
format .
heading
.TH
data
data
.TE

上面的heading行可以省略,但是您仍然需要.TH.TS H

我使用groff 1.22.3和以下示例进行了一些测试,其中14页的强制页面长度(.pl)在-mm上工作得很好,但在-ms上却不能很好地工作。

( echo .pl 14
  echo .TS H
  echo 'allbox,center;'
  for ((i=1;i<5;i++)); do echo 'l l l'; done
  echo '^ l l'
  for ((i=1;i<5;i++)); do echo 'l l l'; done
  echo 'l l l.'
  echo .TH
  for ((i=1;i<11;i++)); do echo -e 'a\tb\tc';done
  echo .TE
) >t
tbl t | nroff -mm

这是输出的一部分,删除了空白行:

         - 1 -

     +--+---+---+
     |a | b | c |
     +--+---+---+
     |a | b | c |
     +--+---+---+

         - 2 -

     +--+---+---+
     |a | b | c |
     +--+---+---+

         - 3 -

     +--+---+---+
     |  | b | c |
     |a +---+---+
     |  | b | c |
     +--+---+---+