ConTeXt xtable 设置文档中所有表格的表头格式

ConTeXt xtable 设置文档中所有表格的表头格式

假设我有下表(文档中众多表格之一):

\starttext
    \startxtable
        \startxtablehead
            \startxrow
                \startxcell Head\stopxcell
                \startxcell Head\stopxcell
                \startxcell Head\stopxcell
            \stopxrow
        \stopxtablehead
        \startxtablebody
            \startxrow
                \startxcell Cell\stopxcell
                \startxcell Cell\stopxcell
                \startxcell Cell\stopxcell
            \stopxrow
        \stopxtablebody
    \stopxtable
\stoptext

现在我想将每一行的格式更改\startxtablehead...\stopxtablehead为特定的单元格格式,比如说

\setupxtable[head][background=color, backgroundcolor=gray]

我知道我基本上可以标记每个表的表头中的每一行head(在此示例中),但考虑到我已经在逻辑上用周围的开始/停止对标记了表头,这似乎有点多余。

如何将格式选项传递给表头中的每一行文档中每个表格的

答案1

本身\startxtablehead不应用样式,但只与重复标题的分页有关。但是,如果您告诉它要使用哪种样式\startxtablehead[head],它将应用于标题中的所有行。

这里我使用紧凑的语法来节省一些空间。

\setupxtable[head][background=color, backgroundcolor=gray]

\starttext
\startxtable
  \startxtablehead[head]
    \NC Head \NC Head \NC Head \NR
    \NC Head \NC Head \NC Head \NR
    \NC Head \NC Head \NC Head \NR
  \stopxtablehead
  \startxtablebody
    \NC Cell \NC Cell \NC Cell \NR
  \stopxtablebody
\stopxtable
\stoptext

在此处输入图片描述


正如我所说,\startxtablehead不应用任何样式,但仍然可以破解宏以应用您选择的默认样式。但是,如果您未能定义默认值,您将在日志中看到,例如foot

setup           > error in line 8, namespace 'xtable', key 'foot'
setup           > error in line 8, namespace 'xtable', key 'foot'
setup           > error in line 8, namespace 'xtable', key 'foot'
% macros=mkvi
\unprotect

\unexpanded\def\startxtablehead{\begingroup\c_tabl_x_mode\plusone  \dodoubleempty\tabl_x_start_partition[head]}
\unexpanded\def\startxtablefoot{\begingroup\c_tabl_x_mode\plustwo  \dodoubleempty\tabl_x_start_partition[foot]}
\unexpanded\def\startxtablenext{\begingroup\c_tabl_x_mode\plusthree\dodoubleempty\tabl_x_start_partition[next]}
\unexpanded\def\startxtablebody{\begingroup\c_tabl_x_mode\plusfour \dodoubleempty\tabl_x_start_partition[body]}

\unexpanded\def\tabl_x_start_partition[#defaults][#settings]%
  {\ifsecondargument
     \tabl_x_set_checked{#settings}%
   \else
     \tabl_x_set_checked{#defaults}%
   \fi}

\protect

\setupxtable[head][background=color,backgroundcolor=red]
\setupxtable[body][background=color,backgroundcolor=green]
\setupxtable[foot][background=color,backgroundcolor=blue]

\starttext
\startxtable
  \startxtablehead
    \NC Head \NC Head \NC Head \NR
  \stopxtablehead
  \startxtablebody
    \NC Cell \NC Cell \NC Cell \NR
  \stopxtablebody
  \startxtablefoot
    \NC Foot \NC Foot \NC Foot \NR
  \stopxtablefoot
\stopxtable
\stoptext

在此处输入图片描述

相关内容