
Я пытаюсь использовать ТАБЛИЦУ в качестве заголовка в Context (см.Использование таблицы в качестве заголовка в контексте). Однако команды \setupTABLEs и \bTABLE[head|foot]s в теле документа влияют на TABLE в заголовке. Фрагмент ниже иллюстрирует проблему:
- ТАБЛИЦА в заголовке имеет строку заголовка.
- Эта строка заголовка имеет желтый фон.
Это ошибка? Или есть способ "ограничить" команды \setupTABLE \bTABLE[head|foot] так, чтобы они влияли только на определенную ТАБЛИЦУ.
В отношенииhttps://mailman.ntg.nl/pipermail/ntg-context/2015/083192.html, я пробовал использовать \egroup и \sgroup. Мои \setupTABLE также уже определены в блоке \bTABLE.
\startsetups[header]
\bTABLE
\bTR
\bTD Header \eTD
\eTR
\eTABLE
\stopsetups
\setupheadertexts[\setups{header}]
\starttext
\bTABLE[split=repeat, header=yes]
\setupTABLE[r][first]
[background=color,
backgroundcolor=yellow]
\bTABLEhead
\bTR
\bTH Header \eTH
\eTR
\eTABLEhead
\bTABLEbody
\dorecurse{100} {
\bTR
\bTD Body \eTD
\eTR
}
\eTABLEbody
\eTABLE
\stoptext
решение1
Один из обходных путей — сообщить ConTeXt, что таблица в заголовке является вложенной. Таким образом, ConTeXt проигнорирует настройки, определенные на предыдущем уровне. Это можно сделать следующим образом:
\unprotect
\startsetups[header]
\tabl_ntb_next_level
\bTABLE
\bTR
\bTD Header \eTD
\eTR
\eTABLE
\tabl_ntb_prev_level
\stopsetups
\protect
Операторы \unprotect
и \protect
необходимы, поскольку \tabl_ntb_next_level
это внутренняя команда.