
コンテキストのヘッダーとしてテーブルを使用しようとしています(コンテキストでテーブルをヘッダーとして使用する)。ただし、ドキュメント本体の \setupTABLEs コマンドと \bTABLE[head|foot]s コマンドは、ヘッダーの TABLE に影響します。次のスニペットは、この問題を示しています。
- ヘッダー内の 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
回避策の 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