将表格内容拆分为两列,而无需在 .tex 源代码中执行此操作

将表格内容拆分为两列,而无需在 .tex 源代码中执行此操作

我有一些两列表格数据,如下所示:

Foo    12
Bar    34
Baz    56
Quux   78
Quuz   910
Corge  1112
Grault 1314

我想将其布局为 2x2 = 4 列表格,即每个表行包含两条记录,每条记录都有一个名称单元格和一个数字单元格。这本身不是问题:

\begin{tabular}{llll}
  Foo    & 12    &
  Bar    & 34    \\
  Baz    & 56    &
  Quux   & 78    \\
  Quuz   & 910   &
  Corge  & 1112  \\
  Grault & 1314  &
  {}     & {}    \\
\end{tabular}

...我可以通过一些正则表达式工作来做到这一点(尽管你确实需要对多行正则表达式的支持,但并非所有编辑器都具备)。

问题是,这将导致“行主”进程,即:

1 2
3 4
5 6
7 

第一行将有记录 1 和 2,第二行将有记录 3 和 4 等等。我想要的是按列主顺序排列:

1 5
2 6
3 7
4 

在 LaTeX 中布局时,但我想要重新排列.tex文件中的行,并且必须交错记录集的第一半和第二半。

这能做到吗?

注意:我确实希望这是在适当的tabular环境中,即我想要不同的对齐方式,在列之间添加生成的内容,规则等 - 我只是为这个例子简化了一些东西。

答案1

\documentclass{article}
\usepackage{multicol}
\begin{document}
\begin{multicols}{2}
\obeylines\obeyspaces\raggedcolumns
Foo    12
Bar    34
Baz    56
Quux   78
Quuz   910
Corge  1112
Grault 1314
\end{multicols}

\end{document}

在此处输入图片描述

而 LaTeX 制表环境(在多列内)是更好的选择,利用它您可以用最少的额外标记实现类似表格的对齐。

\documentclass{article}
\usepackage{multicol}
\begin{document}
\noindent X\dotfill X\par
\begin{multicols}{2}
\begin{tabbing}
    XXXXXXXX\=\kill
    Foo    \>12   \\
    Bar    \>34   \\
    Baz    \>56   \\
    Quux   \>78   \\
    Quuz   \>910  \\
    Corge  \>1112 \\
    Grault \>1314 
\end{tabbing}
\end{multicols}
\noindent X\dotfill X\par
\end{document}

有关制表符的更多信息,请查阅当地公共图书馆的 Lamport 的书,详情请参阅 C.10.1。最大的优点是与表格相反,它允许分页,因此可以在多列中使用。

在此处输入图片描述

相关内容