
我在 LTXtable 中包含了一個 longtable,最後一條規則並未跨越所有列。相反,它具有大約 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
- 命令。在表的後續部分使用它有些危險。 - 您可以使用
@{}
去除表格左右不必要的白邊距。如果您不介意的話,我已將它們插入您的標題中。如果您不介意,請小心地在\multicolumn
s 上重複這些聲明,這些聲明會作用於第一列或最後一列。如果你忘記了@{}
那裡,\multicolumn
就會破壞你乾淨的桌頭外觀。 - 為了節省打字,我將重複的
L{0.33}
- 聲明替換為*{3}{L}
。 - 將字體大小變更為 10 pt 後,您無法透過鍵入 恢復預設值
\normalsize
,因為\normalsize
上面的命令已將其設為 10pt@11pt。如果您想由於\footnotesize
表中的 - 命令而恢復正常的字體大小:這也沒有效果,因為\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 列的總寬度為0.5+.5+2=3倍寬度一個標準的X。
您有L{.33}L{.33}L{.33}
3X
列,但總寬度小於 1 個標準tabularx
X。L{1}
如果您希望所有列具有相同的寬度,則應該使用(正如 Jan 已在他的回答中所示)。