Estoy intentando crear una mesa grande usando Latex. El resultado debe ser algo como esto:
pero lo que obtengo es algo como esto:
\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 este código solo pude hacer el texto más pequeño. Simplemente no puedo agrupar palabras individuales (las grandes como "Deformação" y "Comprimento") en una celda y ya probé el \hspace{0pt}
truco, pero no parece funcionar. Después de probar soluciones con paquetes como tabularx, todavía no puedo hacerlo funcionar correctamente. Además, sólo pude hacer que permaneciera centrado usando el cuadro de ajuste. \centering
no funcionó. ¿Alguien me puede ayudar?
Respuesta1
Es sólo cuestión de utilizar los paquetes correctos.
Usartabularpara obtener automáticamente el ancho de las columnas,Babelcon el idioma correcto (el portugués fue mi mejor suposición) yragged2econ opción [overload]
para activar la separación de palabras en los encabezados. Tienes que ayudar a la separación de palabras con \-
dónde.Babelfalla. Además, la tabla es tan ancha que es necesario reducirla fontsize
a footnotesize
. Aún así, debes usar landscape
el modo o reducir los márgenes izquierdo y derecho. solíageometríapara reducir todos los márgenes.
El comando \noindent
antes del tabular, evita que el tabular se mueva hacia la izquierda y sobresalga hacia el margen derecho. Además, utilicé una c
columna ordinaria en los dos primeros cuadros, porquetabularTerminé con una primera columna demasiado estrecha (podría haber ajustado el tymin
).
Puedes considerar usarpestañaspara obtener un mejor espaciado, pero luego debes eliminar todas las reglas verticales. He incluido código usandopestañasy también sugerir que reduzcas el número de reglas horizontales, además de eliminar todas las verticales.
Si no está dispuesto o no se le permite hacer algo con las reglas, utilice
\renewcommand{\arraystretch}{1.1} % or 1.5
\setlength{\extrarowheight}{1pt} % or 2 in case of 1.5 for arraystretch
para mejorar el espaciado.
Si desea que todas las columnas tengan el mismo ancho, utilicetabularxy ocho columnas similares. Parece que quieres columnas centradas, así que las he centrado todas definiendo un nuevo tipo de columna Y
con el comando:
\newcolumntype{Y}{>{\Centering\arraybackslash}X}
Centering
es un comando delragged2epaquete. Puede definir columnas alineadas a la izquierda o a la derecha de la misma manera:
\newcolumntype{W}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Z}{>{\RaggedLeft\arraybackslash}X}
Desde que uso la [overload]
opción,ragged2ese activará incluso si usa \centering
, \raggedright
o \raggedleft
. También he aumentado considerablemente el espacio, como indicaste en la pregunta.
Si está elaborando una tarjeta de puntuación para completarla a mano con un lápiz, la tercera tabla está bien. Si está escribiendo un formato tabular para una presentación o documento, debería (en mi opinión) utilizar uno de lospestañasversiones.
Si brinda información sobre lo que se incluirá en la tabla, es posible que obtenga recomendaciones adicionales.
\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}
Respuesta2
Como complemento/alternativa al segundo ejemplo de @Sveinung en su respuesta:
- Sospecho que en la columna hay números. Lamentablemente son desconocidos. ¿Son todos números enteros? ¿Tienen todos el mismo número de dígitos? De todos modos, prefiero usar
S
tipos de columnas y considerar el comentario de @frougon a continuación:
\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
el tipo de columna no determiné el formato de los números, por ejemplo,S[table-format=2,2]
ya que los números son desconocidos; sin embargo, usar valores predeterminados parece dar un resultado bastante bueno:
Como puede ver, elimino de los encabezados de columna todos
\hspace{...}
(no está claro cuáles son sus funciones) y elimino el entorno matemático para las unidades, es decir, en su lugar[$\si{metre}$]
se usa simple[\si{\metre}]
.En la última columna unidades se inserta entre llaves:
\thead{Deformação\\ {[\si{\metre}]}}
. En este caso, esto es necesario ya que, de lo contrario, la compilación generará un error inesperado.