我正在使用 excel 到 latex 插件从 excel 生成表格,但是,当表格太长时,它不会自动拆分为 2 页(或更多页)。有没有简单的方法可以做到这一点?我找到了 longtable 包,但是,我无法将它与 LateX 生成的以下代码一起使用
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
\centering
\caption{Trial}
\begin{tabular}{|r|r|r|r|r}
\cline{1-4} Hello & How & Are & You & \bigstrut\\
\cline{1-4} \multicolumn{1}{|c|}{\multirow{2}[4]{*}{1}} & 2 & \multicolumn{1}{c|}{\multirow{2}[4]{*}{4}} & \multicolumn{1}{c|}{\multirow{2}[4]{*}{5}} & \bigstrut\\
\cline{2-2} \multicolumn{1}{|c|}{} & 3 & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \bigstrut\\
\cline{1-4} 6 & 7 & 8 & 9 & \bigstrut\\
\cline{1-4} \multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \bigstrut[t]\\
\multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \multicolumn{1}{r}{} & \\
\end{tabular}%
\label{tab:addlabel}%
\end{table}%
我使用了一个简单的例子,以免与这里的代码混淆(这个例子不跨越 2 页)但如果确实如此,需要进行哪些更改?
答案1
正如您所注意到的,为了让 LaTeX 将长表格拆分到跨页面,必须使用环境longtable
而不是嵌套table
环境tabular
。
以下示例首先显示由您的代码生成的表(部分代码已简化),然后显示使用longtable
环境生成的同一张表。四个主要区别如下:
环境
longtable
将指定为环境参数的材料作为其参数tabular
。不是尝试将 a 嵌套longtable
在 a 内table
。在 后插入
\\
(换行指令)\caption
。\endfirsthead
由于表格的页眉和页脚可能会重复出现,因此请明确指定重复的内容。页眉和页脚内容以名为、\endhead
、\endfoot
和 的指令分隔\endlastfoot
。无需提供
\centering
指令;longtable
默认居中。
\documentclass{article}
\usepackage{multirow,longtable,bigstrut,caption}
\begin{document}
\begin{table}[h!]
\centering
\caption{A Trial} \label{tab:addlabel}
\begin{tabular}{|r|r|r|r|}
\hline
Hello & How & Are & You \bigstrut\\
\hline
\multicolumn{1}{|c|}{\multirow{2}[4]{*}{1}} & 2
& \multicolumn{1}{ c|}{\multirow{2}[4]{*}{4}}
& \multicolumn{1}{ c|}{\multirow{2}[4]{*}{5}} \bigstrut\\
\cline{2-2}
\multicolumn{1}{|c|}{} & 3 & & \bigstrut\\
\hline
6 & 7 & 8 & 9 \bigstrut\\
\hline
\end{tabular}
\end{table}
\begin{longtable}{|r|r|r|r|}
\caption{Another Trial} \label{tab:addanotherlabel}\\
\hline
Hello & How & Are & You \bigstrut\\
\hline
\endhead % delimiter for header
\hline
\endfoot % delimiter for footer
\multicolumn{1}{|c|}{\multirow{2}[4]{*}{1}} & 2
& \multicolumn{1}{ c|}{\multirow{2}[4]{*}{4}}
& \multicolumn{1}{ c|}{\multirow{2}[4]{*}{5}} \bigstrut\\
\cline{2-2}
\multicolumn{1}{|c|}{} & 3 & & \bigstrut\\
\hline
6 & 7 & 8 & 9 \bigstrut \\
\end{longtable}
\end{document}
答案2
稍加修改的基于longtable
、booktabs
和 &multirow
的解决方案:
\documentclass[11pt,a4paper]{article}
\usepackage{multirow}
\usepackage{booktabs} % To nicely typeset tabular material
\usepackage{longtable} % For multipage tables!
\begin{document}
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{longtable}{ccccc}
\caption[Trial]{Trial\label{tab:addlabel}}\\
%
\toprule
Hello & How & Are & You \\
\midrule
\multirow{2}[4]{*}{1} & 2 & \multirow{2}[4]{*}{4} & \multirow{2}[4]{*}{5} \\
\cmidrule{2-2}
& 3 & & \\
\midrule
6 & 7 & 8 & 9 \\
\bottomrule
\end{longtable}
\end{document}
它看起来像这样: