使用 conTeXt 格式化自然表头

使用 conTeXt 格式化自然表头

我对表格格式有点困惑,希望有人能帮我一下。

这是我现在拥有的桌子。

\bTABLE
    \startTABLEhead
        \bTR \bTD No. \eTD \bTD[nc=2] Length              \eTD \eTR
        \bTR \bTD               \bTD [m] \eTD \bTD [inch] \eTD \eTR
    \stopTABLEhead
    \startTABLEbody
        \bTR \bTD 1.  \eTD \bTD 1        \eTD \bTD 25.4   \eTD \eTR
    \stopTABLEbody
\eTABLE

现在我想在第一行的顶部和第二行的底部设置一条规则。这很简单,我只想使用类似这样的方法来实现

\setupTABLE[frame=off]
\setupTABLE[header][first][topframe=on]
\setupTABLE[header][last][bottomframe=on]

这样,我就可以在文档中的所有表格上使用此设置。

这能做到吗?

答案1

\setupTABLE{header]不接受firstlast键。您只能使用 \setupTABLE[header][1]等,但这会设置表头第一列的样式。目前,无法设置表头行的样式。

但是,您可以轻松定义自己的 Metapost 背景,将其添加topframebottomframe表头并与多页表一起使用。

\setupTABLE[frame=off]
\setupTABLE[header][each][background=tableheader, framecolor=darkblue, rulethickness=2bp]

\defineoverlay[tableheader][\useMPgraphic{tableheader}]

\startuseMPgraphic{tableheader}
    if \positiverow = 1 : % first row
        draw topboundary OverlayBox 
    elseif \positiverow = \noftblheadlines : % last row
        draw bottomboundary OverlayBox
    fi 
        withcolor OverlayLineColor
        withpen pensquare scaled OverlayLineWidth;

    setbounds currentpicture to OverlayBox;
\stopuseMPgraphic

\starttext
\bTABLE[split=repeat]
    \startTABLEhead
        \bTR \bTD No. \eTD \bTD[nc=2] Length         \eTD \eTR
        \bTR \bTD     \eTD \bTD{} [m] \eTD \bTD{} [inch] \eTD \eTR
    \stopTABLEhead
    \startTABLEbody
        \dorecurse{100}
        {\bTR \bTD 1.  \eTD \bTD 1        \eTD \bTD 25.4   \eTD \eTR}
    \stopTABLEbody
\eTABLE
\stoptext

在此处输入图片描述

相关内容