Estou tentando criar uma mesa grande usando Latex. O resultado deve ser algo assim:
mas o que eu entendo é algo assim:
\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. \centering
nã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 fontsize
para footnotesize
. Ainda assim, você precisa usar landscape
o modo ou reduzir as margens esquerda e direita. eu useigeometriapara reduzir todas as margens.
O comando \noindent
antes do tabular evita que o tabular se mova para a esquerda e se projete na margem direita. Além disso, usei uma c
coluna 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 Y
com 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
, \raggedright
ou \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.
\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
S
tipos 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
S
o 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:
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.