假设我有下表(文档中众多表格之一):
\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