longtable 中最后一个脚注的 \midrule 未跨越所有列

longtable 中最后一个脚注的 \midrule 未跨越所有列

我用 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

关于 ltxtable 手册中关于 s 的警告\multicolumn,我认为您应该删除那些跨越多列的条目。至少,改变这一点会很有帮助。

我还自由地改变了一些其他的东西(主要是印刷相关的)。

  1. 您不应该减小表格中的字体大小,否则会使其变得难以阅读。
  2. 如果您使用类似这样的命令\fontsize{10pt}{11pt},则必须使用\selectfont来激活更改。
  3. 我不确定您新定义的L-columntype 会做什么。特别是部分。甚至当您将作为的内容\hsize=#1\hsize交出时。我会怀疑,那一定是一个完全合格的维度(即它必须具有像这样的维度)。我用一些稍微简单一点的列声明替换了它。0.33#1#1pt
  4. 您的表格应该只有一个\caption-command。在表格的后续部分使用它有点危险。
  5. 您可以使用@{}来删除表格左右两侧不必要的白色边距。如果您不介意的话,我将它们插入到了您的标题中。如果您不介意的话,请小心地在\multicolumns 上重复这些声明,这些声明将努力争取第一列或最后一列。如果您忘记了@{}那里的 ,\multicolumn将会破坏表格标题的整洁外观。
  6. 为了节省打字时间,我将重复的L{0.33}-declarations 替换为*{3}{L}
  7. 将字体大小更改为 10 pt 后,您无法通过键入 来恢复默认值\normalsize,因为\normalsize上面的命令已将其设置为 10pt@11pt。万一您想根据\footnotesize表格中的 -command 恢复正常字体大小:这也不会产生任何效果,因为该操作\footnotesize是在表格内部捕获的,因此对表格外部没有影响。

还有一个提示:如果您计划拥有超过这三列的内容,从而使它们越来越小,您应该考虑加载包ragged2e并将\raggedright列声明中的替换为\RaggedRight。后一个命令不仅可以在单词之间换行,还可以通过使用正确的连字符在单词之间换行。这将提供更好的填充列。

这是我更正后的 MWE(使用 -environment filecontents,将两个文件粘合成一个文件:

\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 列的总宽度为标准 X 的宽度的 .5+.5+2=3 倍。

您有L{.33}L{.33}L{.33}3X列,但总宽度小于 1 个标准 X。这会完全混淆tabularx,并且如这里所示,使其无法收敛到任何合理的值。L{1}如果您希望所有列的宽度相同,则应使用(正如 Jan 在他的回答中已经展示的那样)。

相关内容