como implementar uma tabela que possui algumas células com textos longos?

Nov 23 2020

Tenho uma tabela com 6 colunas e algumas linhas. O problema é que algumas células em algumas colunas têm textos longos, então parecem estranhos e não cabem na largura do texto. Tentei \ makecell para dividir células de texto longas usando \ manualmente, mas a tabela resultante parece boa. Veja a figura em anexo como um exemplo exato do que estou tentando gerar (mas com textos fictícios). Não quero que seja como o Excel. Preciso de uma forma profissional de produzir a tabela em várias linhas por célula.

Respostas

2 Trolobezka Nov 24 2020 at 00:55

Não sei exatamente como você deseja que seu texto seja dividido em várias linhas. Aqui estão duas opções que eu criei:

Opção 1

\hspace{0pt} com tabularx

Como você pode ver, é muito exigente sobre onde quebra as palavras. Se a tabela ficar muito estreita, o texto começa a transbordar.

opção 2

\collectcell\seqsplit... \endcollectcellcom tabularx, seqsplitecollcell

Com isso, o texto pode quebrar em qualquer lugar. MAS parece que exclui o espaçamento entre as palavras. Se você deseja esta opção e precisa de espaços entre suas palavras, você pode colocar os espaços entre chaves { }e eles não serão quebrados / deletados.

Código

\documentclass[]{article}

\usepackage[margin=1cm]{geometry} % Changing page margin
\usepackage{array}
\usepackage{tabularx}
\usepackage{seqsplit}
\usepackage{collcell}

% >{\hsize=.5\hsize} Insert this into the column type definition to change column width (produces some glitches if used incorrectly)
%\newcolumntype{s}{>{\hspace{0pt}\raggedright\arraybackslash}X} % OPTION 1 "Human"-like breaking
\newcolumntype{s}{>{\collectcell\seqsplit}>{\raggedright\arraybackslash}X<{\endcollectcell}} % OPTION 2 Breaks everything

\renewcommand{\tabularxcolumn}[1]{m{#1}} % Vertical centering in cells
\renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Inserts hyphens at the breakpoints

\begin{document}

\begin{tabularx}{250pt}{|s|s|s|s|s|} % 6 columns, table width = 250pt
\hline
Numbers & Long Strings & Numbers & Long Strings & Numbers \\
\hline
1000000000{ }Big{ }Number & VeryVeryLongString with Number 524 & 1000000000 Big Number & VeryVeryLongString with Number 524 & 1000000000 Big Number \\
\hline
\end{tabularx}

\end{document}

BÔNUS

Se você quiser centralizar o texto dentro das células, basta mudar \raggedrightpara \centeringdentro da declaração do tipo de coluna. Se você precisar de colunas com estilos diferentes, basta copiar a declaração já existente, alterar o que você precisa, dar uma letra diferente e usá-la na tabela.