
À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 \starttable
and \stoptable
, mas como combinar o l
or r
com a largura necessária?
Responder1
A \starttable
sintaxe 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 database
módulo. Isso permite uma sintaxe muito fácil e legível, mas é menos flexível. Depende dos seus requisitos se o
database
mó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