我有几个longtable
自动生成的 s。由于它们实际上并不长也不宽,如果我能将它们打包在多列环境中,对我来说会节省不少空间。
因此,我尝试了类似的事情。
\documentclass{article}
\usepackage{longtable}
\usepackage{multicol}
\usepackage{filecontents}
\begin{document}
\begin{filecontents}{\jobname autotables.tex}
\begin{longtable}{|l|l|}
1&2\\
3&4
\end{longtable}
\begin{longtable}{|l|l|}
5&6\\
7&8
\end{longtable}
\begin{longtable}{|l|l|}
9&A\\
B&C
\end{longtable}
\begin{longtable}{|l|l|}
D&E\\
F&0
\end{longtable}
\end{filecontents}
\begin{multicols}{4}
\input \jobname autotables.tex
\end{multicols}
\end{document}
但这会生成一条错误消息,例如,
! 软件包 longtable 错误:longtable 不处于 1 列模式。
事实上,包装文档上说,
longtable
\twocolumn
如果在范围内或环境中启动,则会发出错误multicols
。
因此,看起来我遇到了一个绊脚石。
然而,我发表这篇文章是希望有人能给我指出一个解决方案。
以下是事实和/或底线,
- 表格是自动生成的,除此以外的任何内容都
longtable
不能使用。 - 表格始终位于单个文件内,并且表格的数量不固定。
- 自动生成的文件编辑后是不是一个选项。
更新 1
尝试了以下代码https://tex.stackexchange.com/a/46001/14103longtable
。不幸的是,当里面只有一个时,这个技巧才有效multicols
。
参见下面的代码,其中第一种情况有效,但第二种情况无效。
\documentclass{article}
\usepackage{longtable}
\usepackage{multicol}
\usepackage{filecontents}
\makeatletter
\newsavebox\ltmcbox
\def\putdbtables#1{\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne
\input {#1}
\unskip
\unpenalty
\unpenalty}
\unvbox\ltmcbox}
\makeatother
\begin{document}
\begin{filecontents}{\jobname onetables.tex}
\begin{longtable}{|l|l|}
1&2\\
3&4
\end{longtable}
\end{filecontents}
\begin{filecontents}{\jobname twotables.tex}
\begin{longtable}{|l|l|}
1&2\\
3&4
\end{longtable}
\begin{longtable}{|l|l|}
5&6\\
7&8
\end{longtable}
\end{filecontents}
% This will work
\begin{multicols}{4}
\putdbtables{\jobname onetables.tex}
\end{multicols}
% This will generate an error
\begin{multicols}{4}
\putdbtables{\jobname twotables.tex}
\end{multicols}
\end{document}
答案1
您可以尝试longtblr
新的 LaTeX3 包的环境tabularray
. 它在multicols
以下环境中工作:
\documentclass{article}
\usepackage{tabularray}
\usepackage{multicol}
\usepackage{filecontents}
\begin{document}
\begin{filecontents}{\jobname autotables.tex}
\begin{longtblr}{|l|l|}
1&2\\
3&4
\end{longtblr}
\begin{longtblr}{|l|l|}
5&6\\
7&8
\end{longtblr}
\begin{longtblr}{|l|l|}
9&A\\
B&C
\end{longtblr}
\begin{longtblr}{|l|l|}
D&E\\
F&0
\end{longtblr}
\end{filecontents}
\begin{multicols}{4}
\input \jobname autotables.tex
\end{multicols}
\end{document}