
Я включаю 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
Как исправить \midrule в конце таблицы?
решение1
Что касается предупреждения о \multicolumn
s в руководстве ltxtable, я думаю, вам следует избавиться от тех записей, которые охватывают более одного столбца. По крайней мере, изменение этого очень помогло.
Я также позволил себе изменить некоторые другие (в основном типографические) вещи.
- Не следует уменьшать размер шрифта в таблице, иначе она станет нечитаемой.
- Если вы используете такие команды
\fontsize{10pt}{11pt}
, вам придется использовать ,\selectfont
чтобы активировать изменения. - Я не уверен, что
L
будет делать ваш недавно определенный -columntype. Особенно часть\hsize=#1\hsize
. Даже больше, поскольку вы передаете0.33
как содержимое#1
. Я бы предположил, что это#1
должно быть полностью определенное измерение (т.е. оно должно иметь измерение типаpt
). Я заменил его на немного более простое объявление столбца. - Ваша таблица должна иметь только одну
\caption
-команду. Использование ее в последующих частях таблицы несколько опасно. - Вы можете использовать
@{}
, чтобы избавиться от ненужных белых полей слева и справа от таблицы. Я вставил их в ваш заголовок, если вы не возражаете. Если вы не возражаете, будьте осторожны, чтобы повторить эти объявления на\multicolumn
s, которые стремятся к первому или последнему столбцу. Если вы забудете там@{}
, то\multicolumn
разрушит ваш чистый вид заголовка таблицы. - Чтобы сэкономить время, я заменил повторяющиеся
L{0.33}
-объявления на*{3}{L}
. - После изменения размера шрифта на 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}
если вы хотите, чтобы все столбцы были одинаковой ширины (как уже показал Ян в своем ответе).