如何将超宽的longtable适配至LaTeX文档页面宽度?
嗨,我帮你整理了几个把宽longtable适配到页面宽度的实用方案,都是LaTeX里常用的解决思路,你可以根据自己的需求选择:
方法1:用longtablex结合自适应列(最推荐)
longtablex是tabularx的扩展包,完美兼容longtable的跨页功能,同时能让X列自动分配剩余宽度,帮你把整个表格缩到页面宽度内。
代码示例:
\usepackage{longtablex} % 加载扩展包,同时兼容longtable和tabularx \usepackage{array} \begin{document} \begin{longtable}{@{}X*{10}{c}@{}} \caption{研究期间开展的实验列表} \\ \hline Date & Encoding & \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & Learning Rate & Dropout & Epochs & Optimizer & Accuracy \\ \hline \endfirsthead % 续表的表头,避免跨页后无表头 \multicolumn{11}{c}{\tablename\ \thetable\ -- 续表} \\ \hline Date & Encoding & \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & Learning Rate & Dropout & Epochs & Optimizer & Accuracy \\ \hline \endhead % 表尾格式 \hline \endfoot \hline \endlastfoot % 实验数据示例,替换成你的真实数据 2023-01-05 & One-Hot & BiLSTM & 128 & 32 & 64 & 0.001 & 0.2 & 50 & Adam & 0.89 \\ 2023-01-10 & Word2Vec & LSTM & 256 & 64 & 128 & 0.0005 & 0.3 & 30 & RMSprop & 0.92 \\ % 更多实验数据... \end{longtable} \end{document}
说明:@{}X*{10}{c}@{}里的@{}用来去掉列前后的多余空白,X列会自动填充页面剩余宽度,其余10列保持居中对齐,整个表格宽度会自动适配页面的\linewidth。
方法2:手动设置固定列宽(精确控制)
如果你想精准控制每一列的宽度,可以把原有的c列换成p{宽度}格式,让列内文本自动换行:
\usepackage{longtable} \usepackage{array} \begin{document} \begin{longtable}{@{}p{1.5cm}p{1.2cm}p{2cm}p{1cm}p{1cm}p{1.5cm}p{1.2cm}p{1cm}p{1cm}p{1.2cm}p{1.2cm}@{}} \caption{研究期间开展的实验列表} \\ \hline \centering Date & \centering Encoding & \centering \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & \centering Learning Rate & \centering Dropout & \centering Epochs & \centering Optimizer & \centering Accuracy \\ \hline \endfirsthead \multicolumn{11}{c}{\tablename\ \thetable\ -- 续表} \\ \hline \centering Date & \centering Encoding & \centering \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \centering \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & \centering Learning Rate & \centering Dropout & \centering Epochs & \centering Optimizer & \centering Accuracy \\ \hline \endhead \hline \endfoot \hline \endlastfoot % 实验数据示例 2023-01-05 & One-Hot & BiLSTM & 128 & 32 & 64 & 0.001 & 0.2 & 50 & Adam & 0.89 \\ 2023-01-10 & Word2Vec & LSTM & 256 & 64 & 128 & 0.0005 & 0.3 & 30 & RMSprop & 0.92 \\ \end{longtable} \end{document}
说明:p{宽度}会让列内文本自动换行,\centering用来让列内内容居中对齐,你可以根据实际内容调整每个p{}里的宽度数值,只要总宽度不超过页面宽度就行。
方法3:临时缩小字体(应急方案)
如果不想调整列结构,只是临时解决宽度问题,可以给整个表格套一个字体缩小的环境,比如\small或者\footnotesize:
\usepackage{longtable} \begin{document} {\small % 局部缩小字体,不会影响文档其他内容 \begin{longtable}{ccccccccccc} \caption{研究期间开展的实验列表} \\ \hline Date & Encoding & \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & Learning Rate & Dropout & Epochs & Optimizer & Accuracy \\ \hline \endfirsthead \multicolumn{11}{c}{\tablename\ \thetable\ -- 续表} \\ \hline Date & Encoding & \begin{tabular}[c]{@{}c@{}}Model\\Architecture\end{tabular} & \begin{tabular}[c]{@{}c@{}}LSTM\\Units\end{tabular} & \begin{tabular}[c]{@{}c@{}}Batch\\Size\end{tabular} & \begin{tabular}[c]{@{}c@{}}Embedding\\Dimension\end{tabular} & Learning Rate & Dropout & Epochs & Optimizer & Accuracy \\ \hline \endhead \hline \endfoot \hline \endlastfoot 2023-01-05 & One-Hot & BiLSTM & 128 & 32 & 64 & 0.001 & 0.2 & 50 & Adam & 0.89 \\ 2023-01-10 & Word2Vec & LSTM & 256 & 64 & 128 & 0.0005 & 0.3 & 30 & RMSprop & 0.92 \\ \end{longtable} } % 结束字体缩小环境 \end{document}
说明:这个方法操作最简单,但可能会让字体过小影响可读性,所以更适合作为应急方案,优先推荐前两种方法。
内容的提问来源于stack exchange,提问作者Danny




