在 multicols 环境中使用多个自动生成的 longtable

在 multicols 环境中使用多个自动生成的 longtable

我有几个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

因此,看起来我遇到了一个绊脚石。

然而,我发表这篇文章是希望有人能给我指出一个解决方案。

以下是事实和/或底线,

  1. 表格是自动生成的,除此以外的任何内容都longtable不能使用。
  2. 表格始终位于单个文件内,并且表格的数量不固定。
  3. 自动生成的文件编辑后是不是一个选项。

更新 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}

在此处输入图片描述

相关内容