![在双列文档中插入单列多页表](https://linux22.com/image/403421/%E5%9C%A8%E5%8F%8C%E5%88%97%E6%96%87%E6%A1%A3%E4%B8%AD%E6%8F%92%E5%85%A5%E5%8D%95%E5%88%97%E5%A4%9A%E9%A1%B5%E8%A1%A8.png)
我正在尝试在双列文档中插入单列多页表格。我不希望在表格前后切换列数时刷新页面。本质上,我想要的是能够table*
跨越多页的外观。下面是我想要的示例图(表格是否像本例中一样为 [h] 并不重要,重要的是它嵌入在周围的文本中)。
下面是生成“实际”图像的最小示例:
\documentclass{article}
\usepackage{lipsum} %% To generate example text
\usepackage{array, booktabs,longtable}
\twocolumn
\begin{document}
\lipsum[1-6] %% To generate example text
%%% Begin table %%%
\onecolumn
\begin{longtable}[h]{>{\hangindent=1em}p{13cm}}
\toprule
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\bottomrule
\end{longtable}
\twocolumn
%%% End table %%%
\lipsum[1-6] %% To generate example text
\end{document}
我曾尝试使用multicol
包作为替代方案,\onecolumn
但这会导致表格中的文本超出页边距,而不是换行。我也尝试使用,xltabular
但一定是出了什么问题,因为这会完全删除表格。
更新:解决方案大致是@Sveinung 下面提供的解决方案,但需要牢记几个注意事项(除第一个之外,其他都适用于我使用 documentclass IEEEtran 的具体情况):
- 所有只应跨越两列中的一列的表格和图形将无法在多列中使用,除非您使它们不浮动。
- 将 onecolumn 选项添加到 documentclass 指令。
- 将 \begin{multicols}{2} 放在 \maketitle 和摘要之后(将其放在之前会导致列覆盖摘要,并且标题仅跨越一列)。
- 将 \end{multicols} 放在文档末尾之前
- 将有问题的表格包装在结束/开始多列中。
- 使用 IEEEtran.cls 的本地副本,将 \abstract 和 \IEEkeywords 的两列/一列处理切换为您所使用的模式(例如,compsoc、transmag)。
答案1
您尝试实现的目标可能无法使用twocolumn
模式。当您从 更改为twocolumn
时onecolumn
,LaTeX 将出现一个新页面,并出现大量空白。
我建议使用包多色而不是twocolumn
模式,并将文本放在环境中的表格之前和之后multicols
。
多色在列内浮动方面存在一些缺点。如果您有大量浮动,这可能不是最佳选择。
示例 1
\documentclass{article}
\usepackage{lipsum} %% To generate example text
\usepackage{array, booktabs,longtable}
\usepackage[latin]{babel}
\usepackage{multicol}
\begin{document}
\begin{multicols}{2}
\lipsum[1-6] %% To generate example text
\end{multicols}
%%% Begin table %%%
\begin{longtable}{>{\hangindent=1em}p{13cm}}
\toprule
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\bottomrule
\end{longtable}
%%% End table %%%
\begin{multicols}{2}
\lipsum[1-6] %% To generate example text
\end{multicols}
\end{document}
示例 2 - 切换到单列
如果要将表格设置为与页边距齐平,则必须调整表格的左右边距longtable
。由于这取决于文档的边距,因此我将此事留给您自己决定。
\documentclass[twocolumn]{article}
\usepackage{lipsum} %% To generate example text
\usepackage{array, booktabs,longtable}
\usepackage[latin]{babel}
\usepackage{multicol}
\begin{document}
\onecolumn
\begin{multicols}{2}
\lipsum[1-7] %% To generate example text
\end{multicols}
%%% Begin table %%%
\begin{longtable}[c]{>{\hangindent=1em}p{13cm}}
\toprule
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\lipsum[1]\\ %% To generate example text
\bottomrule
\end{longtable}
%%% End table %%%
\begin{multicols}{2}
\lipsum[1-6] %% To generate example text
\end{multicols}
\end{document}