Defina a largura de cada coluna de uma tabela no ConTeXt

Defina a largura de cada coluna de uma tabela no ConTeXt

Às vezes, preciso de uma tabela cujas larguras de coluna sejam iguais entre si. Aqui está um exemplo:

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

A coluna Nome deve ser liberada para a direita e a coluna Email deve ser liberada para a esquerda. Claro, cada coluna tem a mesma largura.

Acho que esse requisito pode ser alcançado pelo \starttableand \stoptable, mas como combinar o lor rcom a largura necessária?

Responder1

A \starttablesintaxe está obsoleta e, portanto, deve ser evitada para novos documentos. Por isso apresento uma solução utilizando tabelas naturais, também chamadas de tabelas HTML. Como as tabelas naturais são muito detalhadas, elas podem ser melhor combinadas com o databasemódulo. Isso permite uma sintaxe muito fácil e legível, mas é menos flexível. Depende dos seus requisitos se o databasemódulo faz sentido neste caso. A configuração natural da mesa é a mesma em ambos os casos.

Para tarefas mais simples, as tabelas tabuladas podem ser suficientes.

\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

resultado

informação relacionada