長い表の最後の脚注の \midrule がすべての列にまたがっていません

長い表の最後の脚注の \midrule がすべての列にまたがっていません

私は LTXtable で長いテーブルを含めていますが、最後のルールはすべての列にまたがっていません。代わりに、幅が約 60% で中央に配置されています。

次の警告が表示されます:

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

ビルドを再実行すると (Sublime Text と LatexTools を使用しています)、警告が再び表示されます。

MWE:

メイン.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}

テーブル.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 - 中間線が全幅に及ばない

表の末尾の \midrule を修正するにはどうすればよいですか?

答え1

ltxtable マニュアルの sに関する警告に関しては\multicolumn、複数の列にまたがるエントリを削除する必要があると思います。少なくとも、それを変更すると、大いに役立ちます。

私はまた、他のいくつかのこと(主にタイポグラフィに関連するもの)を変更する自由も得ました。

  1. 表のフォント サイズを小さくしないでください。小さくすると、読みにくくなる傾向があります。
  2. のようなコマンドを使用する場合は、変更を有効にするために を\fontsize{10pt}{11pt}使用する必要があります。\selectfont
  3. 新しく定義された -columntype が何をするのかよくわかりませんL。特に の部分です。さらに、のコンテンツとして\hsize=#1\hsize渡すと、 は完全修飾ディメンションである必要があると思われます(つまり、 のようなディメンションを持っている必要があります)。これを、少し単純な列宣言に置き換えました。0.33#1#1pt
  4. テーブルには\caption- コマンドが 1 つだけ必要です。テーブルの後続部分で - コマンドを使用するのは、多少危険です。
  5. テーブルの左右の不要な余白を取り除くには、 を使用できます@{}。よろしければ、ヘッダーに挿入しておきます。よろしければ、\multicolumn最初の列または最後の列に指定する でこれらの宣言を繰り返すように注意してください。 を忘れると@{}\multicolumnテーブル ヘッダーのすっきりした外観が台無しになります。
  6. L{0.33}入力を節約するために、繰り返しの-宣言を に置き換えました*{3}{L}
  7. フォント サイズを 10 pt に変更した後は、上記のコマンドですでに 10pt@11pt に設定されている\normalsizeため、と入力しても既定値を復元することはできません\normalsize。テーブル内の - コマンドにより通常のフォント サイズを復元したい場合、\footnotesizeこれも効果がありません。\footnotesizeテーブル内にキャプチャされているため、テーブルの外部には効果がありません。

もう 1 つのヒント: 3 列より多く、列をどんどん小さくしていく予定の場合は、パッケージをロードしてragged2e\raggedright列宣言の を に置き換えることを検討してください\RaggedRight。後者のコマンドは、単語間の行を折り返すだけでなく、正しいハイフンを使用して単語間を折り返すこともできます。これにより、列がより適切に埋められます。

以下は、修正した MWE です (-environment を使用してfilecontents、両方のファイルを 1 つのファイルに結合します)。

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

そして結果は(私の言葉を証明するために):

ここに画像の説明を入力してください

答え2

\hsize列を変更する場合はX、X 列の合計幅が変更されていないことを確認する必要があります。したがって、ここでのように 3 列ある場合、Xそのうち 2 列を半分にすると ( L{0.5})、3 列目を 2 倍にする必要があります ( L{2})。これにより、3 列の合計幅は標準の X の幅の 0.5+0.5+2=3 倍になります。

L{.33}L{.33}L{.33}列は3 つありますXが、合計幅は 1 標準 X 未満です。これでは完全に混乱しtabularx、ここで見られるように、適切な値に収束できなくなります。L{1}すべての列を同じ幅にしたい場合は、 を使用する必要があります (Jan が既に回答で示しているように)。

関連情報