Установить ширину каждого столбца таблицы в ConTeXt

Установить ширину каждого столбца таблицы в ConTeXt

Иногда мне нужна такая таблица, в которой ширина столбцов должна быть одинаковой. Вот пример:

Name    Email
John    [email protected]
Bill    [email protected]
Tim     [email protected]

Столбец Name должен быть смещен вправо, а столбец Email — влево. Конечно, каждый столбец имеет одинаковую ширину.

Я думаю, что это требование может быть выполнено с помощью \starttableи \stoptable, но как совместить lили rс требуемой шириной?

решение1

Синтаксис \starttableустарел и его следует избегать для новых документов. Вот почему я представляю решение с использованием естественных таблиц, также называемых таблицами HTML. Поскольку естественные таблицы очень многословны, их лучше всего комбинировать с модулем database. Это обеспечивает очень простой и читаемый синтаксис, но менее гибко. Имеет ли модуль смысл в этом случае, зависит от ваших требований database. Настройка естественной таблицы одинакова в обоих случаях.

Для более простых задач может быть достаточно таблиц.

\usemodule [database]

\defineseparatedlist
  [NaturalTable]
  [separator=comma, %% not necessary, already the default
   before=\bTABLE, after=\eTABLE,
   first=\bTR, last=\eTR,
   left=\bTD, right=\eTD,
   setups=s:NaturalTable]

\startsetups [s:NaturalTable]
  \setupTABLE              [frame=off, distance=5mm]
  \setupTABLE [column] [1] [width=2cm, align=flushright]
  \setupTABLE [row]    [1] [style=bold]
\stopsetups

\starttext

\startNaturalTable
  Name, Email
  John, [email protected]
  Bill, [email protected]
  Tim , [email protected]
\stopNaturalTable

\starttabulate [|p(3cm)r|l|]
  \NC Name \NC Email                \AR
  \NC John \NC [email protected]   \AR
  \NC Bill \NC [email protected] \AR
  \NC Tim  \NC [email protected]  \AR
\stoptabulate


\stoptext

результат

Связанный контент