
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
Wie behebe ich die \midrule am Ende der Tabelle?
Antwort1
In Bezug auf die Warnung zu \multicolumn
s 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.
- Sie sollten die Schriftgröße in Ihrer Tabelle nicht verringern, da diese sonst möglicherweise unleserlich wird.
- Wenn Sie Befehle wie verwenden
\fontsize{10pt}{11pt}
, müssen Sie verwenden,\selectfont
um die Änderungen zu aktivieren. - 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
#1
pt
- Ihre Tabelle sollte nur einen
\caption
-Befehl haben. Ihn auf die nachfolgenden Teile der Tabelle anzuwenden ist etwas gefährlich. - 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\multicolumn
s zu wiederholen, die auf die erste oder letzte Spalte zielen. Wenn Sie das@{}
dort vergessen,\multicolumn
wird das Ihr sauberes Aussehen des Tabellenkopfs zerstören. - Um Tipparbeit zu sparen, habe ich die wiederholten
L{0.33}
-Deklarationen durch ersetzt*{3}{L}
. - 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\normalsize
durch 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\footnotesize
innerhalb 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 ragged2e
und die \raggedright
der 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):
Antwort2
Wenn Sie \hsize
eine X
Spalte ändern, müssen Sie sicherstellen, dass die Gesamtbreite der X-Spalten unverändert bleibt. Wenn Sie also wie hier 3 haben X
und 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 X
Spalten, aber mit einer Gesamtbreite von weniger als 1 Standard-X. Das wird völlig verwirrend sein tabularx
und, 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).