我一直在按照教程在 Latex 中格式化表格,但一直遇到问题。我的目标是:
但是使用以下代码:
\begin{table}[h!]
\begin{center}
\caption{Multicolumn table.}
\label{tab:table1}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|p(3cm)}
\hline
|c| & \multicolumn{5}{|c|}{WordCNN} & \multicolumn{5}{|c|}{WordLSTM} & \multicolumn{5}{|c|}{BERT}
\hline
|c| & MR & IMDB & YELP & YG & Fake & MR & IMDB & YELP & YG & Fake & MR & IMDB & YELP & YG & Fake
\hline
\end{tabular}
\end{center}
\end{table}
我发现表格的位置不对,而且空白处也有问题。我尝试使用以下网站的解决方案: https://latex-tutorial.com/tutorials/tables/#Csv Latex 表格超出页面边框 但没有运气。 任何帮助都将不胜感激,非常感谢!
答案1
@leandriis 已经提到了您的代码中的一些错误。此外,如果您有许多相同类型的列,您可以使用语法一次定义所有列*{num}{str}
。这增加了代码的可读性并降低了出错的可能性。
您的表格太宽,即使使用 footnotesize 字体,也需要使用横向模式才能显示完整表格。对于横向布局,代码和输出如下:
\documentclass{article}
\usepackage[landscape]{geometry}
\usepackage{caption}
%------------------------------
% to show page layout, should be excluded in original document
\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{red}}
%-----------------------------
\begin{document}
\begin{table}[htbp]
\centering
\caption{Multicolumn table.}
\label{tab:table1}
\footnotesize
\begin{tabular}{p{3cm}|*{3}{*{5}{c}|}}
\hline
& \multicolumn{5}{c|}{WordCNN} & \multicolumn{5}{c|}{WordLSTM} & \multicolumn{5}{c|}{BERT}\\
%\hline
& MR & IMDB & YELP & YG & Fake & MR & IMDB & YELP & YG & Fake & MR & IMDB & YELP & YG & Fake\\
\hline
Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0\\
Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0\\
Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0\\
Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0\\
\hline
Average Text Length & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0 & 12 & 15.0 & 12.0 & 12.0 & 12.0\\
\hline
\end{tabular}
\end{table}
\end{document}
但是,您可以修改表格以适合纵向布局。一种方法可能如下:
\documentclass{article}
\usepackage{caption}
\usepackage{multirow}
%------------------------------
% to show page layout, should be excluded in original document
\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{red}}
%-----------------------------
\begin{document}
\begin{table}[htbp]
\centering
\caption{Multicolumn table.}
\label{tab:table1}
\begin{tabular}{ll|*{5}{c}|}
\cline{3-7}
& & MR & IMDB & YELP & YG & Fake\\
\hline%\cline{3-7}
\multirow{5}{*}{WordCNN} & Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
\hline
\multirow{5}{*}{WordSTM} & Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
\hline
\multirow{5}{*}{BERT} & Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
& Original Accuracy & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
\hline
& Average Text Length & 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
\hline
\end{tabular}
\end{table}
\end{document}
此外,对于正式的表格,您可以考虑使用该booktabs
包。
答案2
假设tabularray
并确定页面布局\usepackage[margin=25mm]{geometry}
,则可以将表格放置在纵向页面方向的测试区域:
\documentclass{article}
\usepackage[margin=25mm]{geometry}
\usepackage{caption}
\usepackage{tabularray}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{table}[ht]
\centering
\caption{Multicolumn table.}
\label{tab:table1}
\footnotesize
\begin{tblr}{hline{1,Z} = 1pt, hline{3,Y} = 0.6pt,
vline{2,7,12},
colsep = 2.1pt,
colspec = {@{} l *{15}{c} @{}},
column{1} = {font=\bfseries},
row{1,2} = {font=\bfseries},
}
\SetCell[r=2]{l}
& \SetCell[c=5]{c} WordCNN
& & & & & \SetCell[c=5]{c} WordLSTM
& & & & & \SetCell[c=5]{c} BERT
& & & & \\
& MR & IMDB & YELP & YG & Fake
& MR & IMDB & YELP & YG & Fake
& MR & IMDB & YELP & YG & Fake \\
Original Accuracy
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
Original Accuracy
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
Original Accuracy
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
Original Accuracy
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
Average Text Length
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0
& 12 & 15.0 & 12.0 & 12.0 & 12.0 \\
\end{tblr}
\end{table}
\end{document}
编辑:
在某些情况下,当文本宽度小于上述 MWE 中预期的宽度时,或者您喜欢使用更大的字体大小,例如\small
,您可以允许表格突出到文本区域之外。这可以通过使用包adjustwidth*
中定义的环境 轻松完成changepage
。例如:
% existed preamble
\usepackage[strict]{changepage}
\begin{document}
\begin{table}[ht]
\begin{adjustwidth*}{}{-11mm}
\centering
\caption{Multicolumn table.}
\label{tab:table1}
\small
% table
\end{adjustwidth*}
\end{table}
\end{document}
在这种情况下,表格如下所示: