背景

背景

背景

生成的文档包含带标题和不带标题的表格。带标题的表格没有问题,例如:

标题行

问题

当没有标题时,生成的文档不包含表格的水平线:

无标题行

所需的输出在表格主体开始之前有一个边框:

所需标题行

代码

生成的表代码:

\startplacetable[location=none]
\startxtable
\startxtablebody[body]
\startxrow
\startxcell[align=right,width={0.50\textwidth}] {\bf ID} \stopxcell
\startxcell[align=right,width={0.50\textwidth}] FSA-1 \stopxcell
\stopxrow
\stopxtable
\stopplacetable

样式代码:

\setupxtable[
  frame=off,
  option={stretch,width},
  split=yes,
  header=repeat,
]
\setupxtable[head][topframe=on,bottomframe=on]
\setupxtable[foot][bottomframe=on]

添加代码来仅设置主体样式会导致所有行都有边框。例如:

\setupxtable[body][topframe=on,bottomframe=off]

生成:

带体型表

并出现以下错误信息:

setup           > error in line 8, namespace 'xtable', key 'body'

问题

如何将 xtable 主体的第一行(且只有第一行)设置为具有边框(以便产生所需的输出)?

请注意,必须禁用标题行的底部边框以避免重复行。还请注意,由于代码是生成的,因此无法修改每个 xtable 实例。理想情况下,可以使用以下方法添加边框setupxtable. 该领域的文献资料不足。

环境

  • ConTeXt MKIV 2018.01.04 17:37

答案1

目前还没有自动化的高级方法来做到这一点,正如 ConTeXt 邮件列表中所讨论的那样(https://mailman.ntg.nl/pipermail/ntg-context/2018/090527.html)。但是,您可以通过破解方式进入\startxrow宏并在第一行(索引 0)处分支。

你的问题中的表格不完整,我怀疑它不是通过 pandoc 生成的。生成的文档没有排版。我用一些虚假的内容完成了表格。

\unprotect

\unexpanded\def\startxrow
  {\begingroup
   \ifnum\currentxtablerow=0
     \setupcurrentxtable[topframe=on]
   \fi
   \doifelsenextoptionalcs\tabl_x_start_row_yes\tabl_x_start_row_nop}

\protect

\setupxtable[
  frame=off,
  option={stretch,width},
  split=yes,
  header=repeat,
]
\setupxtable[head][topframe=on,bottomframe=on]
\setupxtable[body][]
\setupxtable[foot][bottomframe=on]

\starttext

\startplacetable[location=none]
  \startxtable
    \startxtablebody[body]
      \startxrow
        \startxcell[align=right,width={0.50\textwidth}] {\bf ID} \stopxcell
        \startxcell[align=right,width={0.50\textwidth}] FSA-1 \stopxcell
      \stopxrow
    \stopxtablebody
    \startxtablefoot[foot]
      \startxrow
        \startxcell[align=right,width={0.50\textwidth}] Description \stopxcell
        \startxcell[align=right,width={0.50\textwidth}] ??? \stopxcell
      \stopxrow
    \stopxtablefoot
  \stopxtable
\stopplacetable

\stoptext

在此处输入图片描述

相关内容