
Estoy incluyendo una tabla larga con LTXtable y la última regla no abarca todas las columnas. En cambio, tiene aproximadamente un 60% de ancho y centros.
Recibo la siguiente advertencia:
Package longtable Warning: Column widths have changed(longtable)
Package longtable Warning: Table widths have changed. Rerun LaTeX.
Si vuelvo a ejecutar la compilación (estoy usando Sublime Text y LatexTools), la advertencia aparece nuevamente.
MWE:
principal.tex
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{longtable}
\usepackage{ltxtable}
\usepackage{booktabs}
% Column Type for Table
\newcolumntype{L}[1]{>{\hsize=#1\hsize\raggedright\arraybackslash}X}%
\begin{document}
\chapter{First Chapter}
\LTXtable{\textwidth}{Tables/table.tex}
\end{document}
tabla.tex
\renewcommand{\arraystretch}{1.5}
\fontsize{10}{11}
\begin{longtable}{L{0.33}L{0.33}L{0.33}}
\caption[Spielermotivationen nach Yee]{Spielermotivationen nach Yee\footnotemark}\label{tab:yeeMotivation}\\
\midrule
\endfirsthead
\caption[]{fortgesetzt} \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{{Fortgesetzt auf nächster Seite}} \\
\endfoot
\midrule
\multicolumn{3}{r}{{Ende der Tabelle}} \\
\endlastfoot
\textbf{Achievement} & \textbf{Social} & \textbf{Immersion} \\
Advancement\linebreak\footnotesize Progress, Power, Accumulation, Status & Socializing\linebreak\footnotesize Casual chat, helping others, making friends & Discovery\linebreak\footnotesize Exploration, Lore, Finding hidden things \\
\end{longtable}
\normalsize
¿Cómo soluciono el \midrule al final de la tabla?
Respuesta1
Con respecto a la advertencia sobre \multicolumn
s en el manual de ltxtable, creo que deberías deshacerte de esas entradas que abarcan más de una columna. Al menos, cambiar eso ayudó mucho.
También me tomé la libertad de cambiar algunas otras cosas (en su mayoría relevantes tipográficas).
- No debe disminuir el tamaño de fuente en su tabla, de lo contrario tenderá a hacerla ilegible.
- Si usa comandos como
\fontsize{10pt}{11pt}
, debe usarlos\selectfont
para activar los cambios. - No estoy seguro de qué
L
hará su tipo de columna recién definido. Especialmente la parte\hsize=#1\hsize
. Aún más, cuando lo entregas0.33
como contenido de#1
. Habría sospechado que#1
debe ser una dimensión totalmente calificada (es decir, debe tener una dimensión comopt
). Lo reemplacé con una declaración de columna un poco más simple. - Su tabla debe tener solo un
\caption
comando. Usarlo en las partes posteriores de la mesa es algo peligroso. - Puede utilizarlo
@{}
para deshacerse de los márgenes blancos innecesarios a izquierda y derecha de la tabla. Los inserté en tu encabezado, si no te importa. En caso de que no le importe, tenga cuidado de repetir esas declaraciones en\multicolumn
s, que aparecen en la primera o última columna. Si lo olvida@{}
,\multicolumn
demolerá el aspecto limpio del cabezal de la mesa. - Para ahorrar escritura, reemplacé las
L{0.33}
declaraciones repetidas por*{3}{L}
. - Después de haber cambiado el tamaño de fuente a 10 pt, no puede restaurar el valor predeterminado escribiendo
\normalsize
, como\normalsize
ya lo configuró el comando anterior en 10pt@11pt. En caso de que quisiera restaurar el tamaño de fuente normal debido a su\footnotesize
comando -en la tabla: esto tampoco tiene ningún efecto, ya que\footnotesize
se capturó dentro de la tabla y, por lo tanto, no tiene efecto en el exterior de la tabla.
Una sugerencia más: si planea tener más de esas tres columnas, haciéndolas cada vez más pequeñas, debería pensar en cargar el paquete ragged2e
y reemplazar la \raggedright
declaración de columna con \RaggedRight
. El último comando podrá, no sólo ajustar líneas entre palabras, sino también entre palabras utilizando las separaciones de palabras correctas. Esto dará columnas mejor llenadas.
Aquí está mi MWE corregido (usando el filecontents
entorno, para unir ambos archivos en un solo archivo:
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{longtable}
\usepackage{ltxtable}
\usepackage{array}
\usepackage{booktabs}
% Column Type for Table
% \newcolumntype{L}[1]{>{\hsize=#1\hsize\raggedright\arraybackslash}X}%
\newcolumntype{L}{>{\raggedright\arraybackslash}X}%
%% New:
%% Extra file within this file.
\begin{filecontents}{table.tex}
\renewcommand{\arraystretch}{1.5}
%\fontsize{10}{11}\selectfont %% <--- you need to use \selctfont in
%% order to make your font selection work
\begin{longtable}{@{} *{3}{L} @{}} %% <--- save typing
\caption[Spielermotivationen nach Yee]{Spielermotivationen nach
Yee\footnotemark}
\label{tab:yeeMotivation}\\
\toprule % <--- use the correct rulers
\endfirsthead
% \caption[]{fortgesetzt} \\ <--- your table should have only one caption!
\midrule
\multicolumn{1}{@{} l}{Fortsetzung \dots}\\
\endhead
\midrule
&& \multicolumn{1}{r @{}}{Fortsetzung auf nächster Seite} \\
\endfoot
\midrule
&& \multicolumn{1}{r @{}}{Ende der Tabelle} \\
\bottomrule % <--- correct ruler
\endlastfoot
\textbf{Achievement} & \textbf{Social} & \textbf{Immersion} \\
Advancement\newline
Progress, Power, Accumulation, Status
& Socializing\newline
Casual chat, helping others, making friends
& Discovery\newline
Exploration, Lore, Finding hidden things \\
\end{longtable}
% \normalsize % <--- you don't need this, as \footnotesize was
% enclosed in the table. Switching back to 10 or 12 pt fontsize as
% default font size, will not be sufficient to restore the original
% value!
\end{filecontents}
\begin{document}
\chapter{First Chapter}
\LTXtable{\textwidth}{table.tex}
\end{document}
Y el resultado (para probar mis palabras):
Respuesta2
Si modifica \hsize
una X
columna, debe asegurarse de que el ancho total de las columnas X no cambie. entonces, si, como aquí, tienes 3, X
entonces si divides dos de ellas por la mitad ( L{0.5}
), entonces necesitas duplicar la tercera ( L{2}
) para que el ancho total de las 3 columnas sea .5+.5+2=3 veces el ancho de una X estándar.
Tiene L{.33}L{.33}L{.33}
3 X
columnas pero con un ancho total de menos de 1 X estándar. Eso confundirá completamente tabularx
y, como se ve aquí, hará que no converja a ningún valor sensible. Debe usarlo L{1}
si desea que todas las columnas tengan el mismo ancho (como ya mostró Jan en su respuesta).