如何在 ConTeXt 中创建延伸到下一页的表格?

如何在 ConTeXt 中创建延伸到下一页的表格?

根据工作区模板,我在 ConTeXt 中有一个这样的表格,每个单元格周围都有边框。

\startsetups table:all
    \setupTABLE[align={hyphenated, normal}]
    \setupTABLE[frame=on]
\stopsetups
\startsetups table:three
    \setupTABLE[column][1][width=0.333\textwidth, align=right, distance=0.05\textwidth]
    \setupTABLE[column][2][width=0.333\textwidth, align=right]
    \setupTABLE[column][2][width=0.333\textwidth, align=right]
\stopsetups

\starttext
    \startTABLE[setups={table:all, table:three}]
        \NC column 1 \NC column 2 \NC \input knuth \input knuth \input knuth \input knuth \input knuth \input knuth \input knuth \input knuth  \NC\NR
    \stopTABLE
\stoptext

每列中的数据都非常长,因此不幸的是,数据从页面底部消失了。

我试过了split=yes,但这样会分割表格,而不是单元格中间。大单元格仍然超出页面底部。

如何将表格单元格一分为二,以便数据继续显示到下一页?

答案1

您可以使用leftframe, rightframe, topframe, bottomframe选项来伪造更大的单元格。

如果您对输入有完全控制权,您可以按段落或任何其他自然划分来拆分较长的条目。这看起来像:

\usemodule[visual]

\startsetups table:all
    \setupTABLE[align={hyphenated, normal}]
    \setupTABLE[frame=off]
    \setupTABLE[split=yes]
\stopsetups
\startsetups table:three
    \setupTABLE[column][1][width=0.333\textwidth, align=right, distance=0.05\textwidth]
    \setupTABLE[column][2][width=0.333\textwidth, align=right]
    \setupTABLE[column][2][width=0.333\textwidth, align=right]
\stopsetups

\define\filler{\fakenwords{30}{5}}

\starttext
    \setupTABLE[r][1,4][leftframe=on, topframe=on, rightframe=on]
    \setupTABLE[r][2,5][leftframe=on, rightframe=on]
    \setupTABLE[r][3,6][leftframe=on, bottomframe=on, rightframe=on]
    \startTABLE[setups={table:all, table:three}]
       \NC column 1 \NC column 2 \NC \filler \NC\NR
       \NC  \NC \NC \filler \NC\NR
       \NC  \NC \NC \filler \NC\NR
       \NC column 1 \NC column 2 \NC \filler \NC\NR
       \NC  \NC \NC \filler \NC\NR
       \NC  \NC \NC \filler \NC\NR
    \stopTABLE
\stoptext

如果您正在使用csv输入,那么可能可以解析 lua 中的输入,以根据指定的模式拆分较长的条目,然后生成要输入的“顶部”、“中间”和“底部”单元格编号列表setupTABLE[r][...]。但这取决于您的具体需求。

相关内容