我正在尝试复制一本包含许多表格的书,这些表格打印在两列上以节省一些垂直空间。表格前后的文本不受此多列样式的影响。
我可以以“两个小表格并排放在一个大表格中”的方式排版表格,但这并不能真正分开内容和设计。
这个答案解决问题的第一部分,将(长)表显示在两列上。
桌子不是用来漂浮的就像在这种情况下这似乎又带来了同样的分页问题:表格后的文本不会中断,如果表格太长,表格也不会中断。
以下是一个例子:
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\setlength{\columnseprule}{.4pt}
\usepackage{longtable}
\usepackage{lipsum}
%\usepackage{showframe}
\begin{document}
\lipsum[1-4]
\begin{multicols}{2}
\newsavebox\ltmcbox
\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne\makeatother
\begin{longtable}{lll}
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3
\end{longtable}
\unskip
\unpenalty
\unpenalty}
\unvbox\ltmcbox
\end{multicols}
\lipsum[1]
\end{document}
感谢您的帮助。
答案1
如果在 multicols 环境之外设置 longtable,效果似乎更好
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\setlength{\columnseprule}{.4pt}
\usepackage{longtable}
\usepackage{lipsum}
%\usepackage{showframe}
\begin{document}
\lipsum[1-4]
\newsavebox\ltmcbox
\setbox\ltmcbox\vbox{\hsize=\dimexpr0.5\textwidth-0.5\columnsep
\makeatletter\col@number\@ne\makeatother
\begin{longtable}{lll}
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3 \\
col 1 & col 2 & col 3
\end{longtable}
\unskip
\unpenalty
\unpenalty}
\begin{multicols}{2}
\unvbox\ltmcbox
\end{multicols}
\lipsum[1]
\end{document}
(David 的回答在 LaTeX 中平衡多列内的长表如果在多列之前添加足够的文本,也会出现同样的问题。