Como fazer o texto caber nas células desta tabela?

Como fazer o texto caber nas células desta tabela?

Estou tentando criar uma mesa grande usando Latex. O resultado deve ser algo assim: insira a descrição da imagem aqui

mas o que eu entendo é algo assim: insira a descrição da imagem aqui

\documentclass{article}

\usepackage{tabularx}
\usepackage{adjustbox}
\usepackage{siunitx}
\usepackage{array}
\usepackage{graphicx}

\begin{document}

\begin{center}
    \begin{adjustbox}{width=20cm, center}
    \begin{tabular}{|c|m{0.5cm}|c|c|c|c|c|c|}
        \hline
        \textbf{Barra} & \textbf{Comprimento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Deformação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabular}
    \end{adjustbox}
\end{center}

\end{document}

Usando esse código eu só consegui diminuir o texto. Só não consigo agrupar palavras isoladas (grandes como "Deformação" e "Comprimento") em uma célula e já tentei o \hspace{0pt}truque, mas parece não funcionar. Depois de tentar soluções com pacotes como tabularx ainda não consegui fazê-lo funcionar corretamente. Além disso, só consegui mantê-lo centralizado usando o Adjustbox. \centeringnão funcionou. Alguém pode me ajudar?

Responder1

É apenas uma questão de usar pacotes corretos.

Usartabularpara obter automaticamente a largura das colunas,babelcom a linguagem correta (o português foi meu melhor palpite) eesfarrapado2ecom opção [overload]de ativar a hifenização nos títulos. Você tem que ajudar a hifenização com \-ondebabelsente falta. Além disso, o tabular é tão largo que é necessário reduzi-lo fontsizepara footnotesize. Ainda assim, você precisa usar landscapeo modo ou reduzir as margens esquerda e direita. eu useigeometriapara reduzir todas as margens.

O comando \noindentantes do tabular evita que o tabular se mova para a esquerda e se projete na margem direita. Além disso, usei uma ccoluna comum nas duas primeiras tabelas, porquetabularacabei com uma primeira coluna muito estreita (eu poderia ter ajustado o tymin).

Você pode considerar usarguias de livrospara obter melhor espaçamento, mas então você terá que remover todas as regras verticais. Eu incluí o código usandoguias de livrose também sugiro que você reduza o número de réguas horizontais, além de retirar todas as verticais.

Se você não estiver disposto ou não tiver permissão para fazer algo com as regras, use

\renewcommand{\arraystretch}{1.1}  % or 1.5
\setlength{\extrarowheight}{1pt}   % or 2 in case of 1.5 for arraystretch

para melhorar o espaçamento.

Se você quiser que todas as colunas tenham a mesma largura, usetabularxe oito colunas semelhantes. Parece que você deseja colunas centralizadas, então centralizei todas elas definindo um novo tipo de coluna Ycom o comando:

\newcolumntype{Y}{>{\Centering\arraybackslash}X}

Centeringé um comando doesfarrapado2epacote. Você pode definir colunas alinhadas à esquerda ou à direita da mesma maneira:

\newcolumntype{W}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Z}{>{\RaggedLeft\arraybackslash}X}

Como eu uso a [overload]opção,esfarrapado2eentrará em ação mesmo se você usar \centering, \raggedrightou \raggedleft. Também aumentei consideravelmente o espaçamento, como você indicou na pergunta.

Se você estiver produzindo um scorecard para ser preenchido à mão com um lápis, a terceira tabela está correta. Se você estiver compondo uma tabela para uma apresentação ou documento, você deve (minha opinião) usar um dosguias de livrosversões.

Se você fornecer informações sobre o que será incluído na tabela, poderá obter recomendações adicionais.

![insira a descrição da imagem aqui insira a descrição da imagem aqui

\documentclass{article}
\usepackage[portuguese]{babel}
\usepackage[margin=1.5cm]{geometry}
\usepackage{tabularx,tabulary, booktabs}
\usepackage{siunitx}
\usepackage[overload]{ragged2e}

\setlength{\tabcolsep}{2pt}
\renewcommand{\arraystretch}{1.1}
\setlength{\extrarowheight}{1pt}

\begin{document}

\section*{tabulary}


\footnotesize
{
\noindent\begin{tabulary}{\linewidth}{|c|C|C|C|C|C|C|C|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Defor\-mação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabulary}%
}

\vspace{2cm}
{
\noindent\begin{tabulary}{\linewidth}{@{}c*{7}{C}@{}}
\toprule
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\midrule
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \bottomrule
    \end{tabulary}
\pagebreak
\section*{tabularx}
}
{
\renewcommand{\arraystretch}{1.5}
\setlength{\extrarowheight}{2pt}
\setlength{\arrayrulewidth}{0.2pt}
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{|Y}|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\hline
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \hline
    \end{tabularx}%
}

\vspace{2cm}

{
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{Y}}
\toprule
        \textbf{Barra} &
        \textbf{Compri\-mento[$\si{\metre}$]}l &
        \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} &
        \textbf{Força sobre a barra[$\si{\newton}$]} &
        \textbf{Tensão Normal[$\si{\mega\pascal}$]} &
        \textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} &
        $\si{\epsilon_{L}}$ &
        \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        100 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        200 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        300 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        400 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        500 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\\addlinespace[6pt]
        600 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        700 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        800 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        900 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        1000 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
    \hline
    \end{tabularx}%
}
\end{document}

Responder2

Como suplemento/alternativa ao segundo exemplo do @Sveinung em sua resposta:

  • Eu suspeito que na coluna há números. Infelizmente eles são desconhecidos. Eles são todos inteiros? Eles têm todos o mesmo número de dígitos? De qualquer forma, prefiro usar Stipos de coluna e considerar o comentário do @frougon abaixo da pergunta:
\documentclass{article}
%\usepackage[portuguese]{babel}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{booktabs, makecell}
\renewcommand\theadfont{\footnotesize\bfseries}
\renewcommand\theadgape{}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{center}
\small
\setlength{\tabcolsep}{4pt}        % Reduce space between columns
\setcellgapes{3pt}
\makegapedcells
\begin{tabular}{*{8}{S}}
    \toprule
{\thead{Barra}}
    &   {\thead{Compri-\\mento [\si{\metre}]}}         
        &   {\thead{Área da\\ Seção [\si{mm^2}]}}
    &   {\thead{Força sobre\\ a barra [\si{\newton}]}}
        & {\thead{Tensão\\ Normal [\si{\mega\pascal}]}}
    &   {\thead{Módulo de\\ Elasticidade [\si{\mega\pascal}]}} 
        &   {\si{\epsilon_{L}}}
    & {\thead{Deformação\\ {[\si{\metre}]}}}  \\
    \midrule
1  & 12.3 & 30 & 40      & 55.7  & 60 & 7 & 8  \\
12 &  4.5 & 33 & 38,2    & 33.44 & 60 & 7 & 6  \\
    \bottomrule
    \end{tabular}
\end{center}
\end{document}
  • Para So tipo de coluna não determinei o formato dos números, por exemplo, S[table-format=2,2]porque os números são desconhecidos, no entanto, usar valores padrão parece dar um resultado muito bom:

insira a descrição da imagem aqui

  • Como você pode ver, eu removo todos os cabeçalhos das colunas \hspace{...}(não está claro quais são suas funções) e removo o ambiente matemático para unidades, ou seja, em vez disso, [$\si{metre}$]é usado simple [\si{\metre}].

  • Na última coluna as unidades são inseridas entre chaves: \thead{Deformação\\ {[\si{\metre}]}}. Isso é necessário, caso contrário a compilação resultará em erro inesperado.

informação relacionada