\midrule последней сноски в длинной таблице не охватывает все столбцы

\midrule последней сноски в длинной таблице не охватывает все столбцы

Я включаю longtable с LTXtable, и последнее правило не охватывает все столбцы. Вместо этого оно имеет ширину около 60% и центры.

Я получаю следующее предупреждение:

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

Если я перезапускаю сборку (я использую Sublime Text и LatexTools), предупреждение появляется снова.

МВЭ:

основной.текс

\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

Что касается предупреждения о \multicolumns в руководстве ltxtable, я думаю, вам следует избавиться от тех записей, которые охватывают более одного столбца. По крайней мере, изменение этого очень помогло.

Я также позволил себе изменить некоторые другие (в основном типографические) вещи.

  1. Не следует уменьшать размер шрифта в таблице, иначе она станет нечитаемой.
  2. Если вы используете такие команды \fontsize{10pt}{11pt}, вам придется использовать , \selectfontчтобы активировать изменения.
  3. Я не уверен, что Lбудет делать ваш недавно определенный -columntype. Особенно часть \hsize=#1\hsize. Даже больше, поскольку вы передаете 0.33как содержимое #1. Я бы предположил, что это #1должно быть полностью определенное измерение (т.е. оно должно иметь измерение типа pt). Я заменил его на немного более простое объявление столбца.
  4. Ваша таблица должна иметь только одну \caption-команду. Использование ее в последующих частях таблицы несколько опасно.
  5. Вы можете использовать @{}, чтобы избавиться от ненужных белых полей слева и справа от таблицы. Я вставил их в ваш заголовок, если вы не возражаете. Если вы не возражаете, будьте осторожны, чтобы повторить эти объявления на \multicolumns, которые стремятся к первому или последнему столбцу. Если вы забудете там @{}, то \multicolumnразрушит ваш чистый вид заголовка таблицы.
  6. Чтобы сэкономить время, я заменил повторяющиеся L{0.33}-объявления на *{3}{L}.
  7. После изменения размера шрифта на 10 пунктов вы не сможете восстановить значение по умолчанию, введя \normalsize, поскольку оно \normalsizeуже было установлено на 10pt@11pt вашей командой выше. В случае, если вы хотели восстановить нормальный размер шрифта из-за вашей \footnotesizeкоманды - в таблице: это также не имеет никакого эффекта, так как \footnotesizeбыло зафиксировано внутри таблицы и, следовательно, не имеет никакого эффекта за пределами таблицы.

Еще один совет: если вы планируете иметь больше, чем эти три столбца, делая их, следовательно, все меньше и меньше, вам следует подумать о загрузке пакета ragged2eи замене \raggedrightобъявления столбца на \RaggedRight. Последняя команда сможет не только переносить строки между словами, но и между словами, используя правильные переносы. Это даст лучше заполненные столбцы.

Вот мой исправленный MWE (с использованием filecontents-environment для склеивания обоих файлов в один):

\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то если вы разделите два из них пополам ( L{0.5}), то вам нужно удвоить третий ( L{2}​​), чтобы общая ширина 3 столбцов была в 0,5+0,5+2=3 раза больше ширины стандартного X.

У вас есть L{.33}L{.33}L{.33}3 Xстолбца, но с общей шириной менее 1 стандартного X. Это полностью запутает tabularxи, как видно здесь, не позволит ему сходиться ни к каким разумным значениям. Вам следует использовать , L{1}если вы хотите, чтобы все столбцы были одинаковой ширины (как уже показал Ян в своем ответе).

Связанный контент