我用 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
关于 ltxtable 手册中关于 s 的警告\multicolumn
,我认为您应该删除那些跨越多列的条目。至少,改变这一点会很有帮助。
我还自由地改变了一些其他的东西(主要是印刷相关的)。
- 您不应该减小表格中的字体大小,否则会使其变得难以阅读。
- 如果您使用类似这样的命令
\fontsize{10pt}{11pt}
,则必须使用\selectfont
来激活更改。 - 我不确定您新定义的
L
-columntype 会做什么。特别是部分。甚至当您将作为的内容\hsize=#1\hsize
交出时。我会怀疑,那一定是一个完全合格的维度(即它必须具有像这样的维度)。我用一些稍微简单一点的列声明替换了它。0.33
#1
#1
pt
- 您的表格应该只有一个
\caption
-command。在表格的后续部分使用它有点危险。 - 您可以使用
@{}
来删除表格左右两侧不必要的白色边距。如果您不介意的话,我将它们插入到了您的标题中。如果您不介意的话,请小心地在\multicolumn
s 上重复这些声明,这些声明将努力争取第一列或最后一列。如果您忘记了@{}
那里的 ,\multicolumn
将会破坏表格标题的整洁外观。 - 为了节省打字时间,我将重复的
L{0.33}
-declarations 替换为*{3}{L}
。 - 将字体大小更改为 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 在他的回答中已经展示的那样)。