\midrule der letzten Fußnote in longtable erstreckt sich nicht über alle Spalten

\midrule der letzten Fußnote in longtable erstreckt sich nicht über alle Spalten

Ich füge eine Longtable mit LTXtable ein und die letzte Regel erstreckt sich nicht über alle Spalten. Stattdessen hat sie etwa 60 % Breite und ist zentriert.

Ich erhalte die folgende Warnung:

Package longtable Warning: Column widths have changed(longtable)
Package longtable Warning: Table widths have changed. Rerun LaTeX.

Wenn ich den Build erneut ausführe (ich verwende Sublime Text und LatexTools), wird die Warnung erneut angezeigt.

MWE:

main.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}

Tabelle.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

MWE - Mittellinie erstreckt sich nicht über die volle Breite

Wie behebe ich die \midrule am Ende der Tabelle?

Antwort1

In Bezug auf die Warnung zu \multicolumns im ltxtable-Handbuch denke ich, dass Sie die Einträge entfernen sollten, die sich über mehr als eine Spalte erstrecken. Zumindest hat es sehr geholfen, das zu ändern.

Ich habe mir auch die Freiheit genommen, einige andere (meist typografisch relevante) Dinge zu ändern.

  1. Sie sollten die Schriftgröße in Ihrer Tabelle nicht verringern, da diese sonst möglicherweise unleserlich wird.
  2. Wenn Sie Befehle wie verwenden \fontsize{10pt}{11pt}, müssen Sie verwenden, \selectfontum die Änderungen zu aktivieren.
  3. Ich bin mir nicht sicher, was Ihr neu definierter L-Spaltentyp tun soll. Insbesondere der Teil . Noch mehr, da Sie als Inhalt von \hsize=#1\hsizeübergeben . Ich hätte vermutet, dass dies eine vollqualifizierte Dimension sein muss (d. h. es muss eine Dimension wie haben ). Ich habe es durch eine etwas einfachere Spaltendeklaration ersetzt.0.33#1#1pt
  4. Ihre Tabelle sollte nur einen \caption-Befehl haben. Ihn auf die nachfolgenden Teile der Tabelle anzuwenden ist etwas gefährlich.
  5. Sie können verwenden, @{}um die unnötigen weißen Ränder links und rechts der Tabelle loszuwerden. Ich habe sie in Ihren Kopf eingefügt, wenn es Ihnen nichts ausmacht. Falls es Ihnen nichts ausmacht, achten Sie darauf, diese Deklarationen auf \multicolumns zu wiederholen, die auf die erste oder letzte Spalte zielen. Wenn Sie das @{}dort vergessen, \multicolumnwird das Ihr sauberes Aussehen des Tabellenkopfs zerstören.
  6. Um Tipparbeit zu sparen, habe ich die wiederholten L{0.33}-Deklarationen durch ersetzt *{3}{L}.
  7. Nachdem Sie die Schriftgröße auf 10 pt geändert haben, können Sie den Standardwert nicht mehr durch Eintippen von wiederherstellen \normalsize, da dieser \normalsizedurch Ihren obigen Befehl bereits auf 10pt@11pt eingestellt war. Falls Sie aufgrund Ihres \footnotesize-Befehls in der Tabelle die normale Schriftgröße wiederherstellen wollten: Dies hat ebenfalls keine Auswirkung, da es \footnotesizeinnerhalb der Tabelle erfasst wurde und daher keine Auswirkung nach außen hat.

Noch ein Hinweis: Wenn Sie mehr als diese drei Spalten haben möchten und diese dadurch immer kleiner werden, sollten Sie darüber nachdenken, das Paket zu laden ragged2eund die \raggedrightder Spaltendeklaration durch zu ersetzen \RaggedRight. Der letztere Befehl kann Zeilen nicht nur zwischen Wörtern umbrechen, sondern auch zwischen Wörtern, indem er die richtigen Silbentrennungen verwendet. Dadurch werden die Spalten besser gefüllt.

Hier ist mein korrigiertes MWE (unter Verwendung der filecontents-Umgebung, um beide Dateien zu einer Datei zusammenzufügen):

\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}

Und das Ergebnis (um meine Worte zu beweisen):

Bildbeschreibung hier eingeben

Antwort2

Wenn Sie \hsizeeine XSpalte ändern, müssen Sie sicherstellen, dass die Gesamtbreite der X-Spalten unverändert bleibt. Wenn Sie also wie hier 3 haben Xund zwei davon halbieren ( L{0.5}), müssen Sie die dritte verdoppeln ( L{2}), sodass die Gesamtbreite der 3 Spalten 0,5+0,5+2=3 mal die Breite eines Standard-X beträgt.

Sie haben L{.33}L{.33}L{.33}also 3 XSpalten, aber mit einer Gesamtbreite von weniger als 1 Standard-X. Das wird völlig verwirrend sein tabularxund, wie hier zu sehen, dazu führen, dass es nicht zu sinnvollen Werten konvergiert. Sie sollten verwenden, L{1}wenn Sie möchten, dass alle Spalten die gleiche Breite haben (wie Jan bereits in seiner Antwort gezeigt hat).

verwandte Informationen