更新的问题
我要从头开始。会让问题变得非常简单直接。下面将保留原始问题。
我只是想看一个\multicolumn
在表格中使用的例子(任何表格环境都可以),其中整个环境都排版在 中multicols
。
这是 MWE
\documentclass[english]{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage{multirow}
\usepackage{array}
\usepackage{multicol}
\usepackage{babel}
\usepackage[pangram]{blindtext}
\usepackage{tabularx}
%see similar question asked before
%https://groups.google.com/forum/#!topic/comp.text.tex/66SUHWPeqZY
\begin{document}
\begin{multicols}{2}
\Blindtext[2][3]
\begin{tabularx}{.9\linewidth}{@{}|X|X|@{}}\hline
%\multicolumn{2}{c} \Blindtext[1][3]\\ %% PROBLEM AREA HERE ******
\Blindtext[1][3]&\Blindtext[1][3]\\\hline
\end{tabularx}
\Blindtext[2][3]
\end{multicols}
\end{document}
如果我取消注释\multicolumn
上述内容,则表格排版不正确。我需要使用\multicolumn
上述内容。我需要做什么?
老问题
我想使用\multicols{3}
,其中3
可以更改另一个值,而不必更改下面代码中用于设置表格的 Latex 代码。
我想使用表格(tabular 或 tabular* 或 tabularx,无论哪种都可以)。但是表格的列要使用段落(或 X,如果可以的话),因为我想放置自动换行的文本,或者使用枚举列表等,所以它必须是段落,而且我还想\multicolumn
在表格内部使用,因为我想让一行跨越多列。
我发现(*) tabularx 与 配合使用效果不佳\multicolumn
。我还发现如果我使用\multicolumn{2}
某些东西则不起作用,请参见下面的第二个示例。因此存在一些冲突,我无法找到要使用的正确组合。
如果我使用tabular
,我必须使用p{2in}
或类似方法明确指定列的大小。但我不想对列的宽度进行硬编码。
我尝试过的都不起作用。以下是我的尝试
示例 1
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage{multirow}
\usepackage{array}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{tabularx}
\begin{document}
\begin{multicols}{2}
\noindent
\lipsum[1]
%\begin{tabularx}{.8\textwidth}{@{}|X|X|@{}}
%\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
%\begin{tabularx}{\hsize}{|X|X|}
%\begin{tabular*}{\hsize}{|l|p{.8\hsize}}}
%\begin{tabular*}{.8\textwidth}{|l|p{2in}}}
%\begin{tabular}{|p{1in}|p{2in}}
%\begin{tabular*}{.8\linewidth}{|p{.2\linewidth|p{.8\linewidth}}
\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
\multicolumn{2}{c} The “lipsum” package is a more basic package.
It generates a certain “lorem ipsum” text\\
The “lipsum” package is a more basic package. Itlorem ipsum” text&
The “lipsum” package is a more basic package. It generates a
certain number of the standard “lorem ipsum” text
\end{tabularx}
\lipsum[1]
\end{multicols}
\end{document}
示例 2
删除\multicolumn{2}{c}
似乎有帮助。
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage{multirow}
\usepackage{array}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{tabularx}
\begin{document}
\begin{multicols}{2}
\noindent
\lipsum[1]
%\begin{tabularx}{.8\textwidth}{@{}|X|X|@{}}
%\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
%\begin{tabularx}{\hsize}{|X|X|}
%\begin{tabular*}{\hsize}{|l|p{.8\hsize}}}
%\begin{tabular*}{.8\textwidth}{|l|p{2in}}}
%\begin{tabular}{|p{1in}|p{2in}}
%\begin{tabular*}{.8\linewidth}{|p{.2\linewidth|p{.8\linewidth}}
%\begin{tabularx}{\columnwidth}{@{}|X|X|@{}}
\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
%\multicolumn{2}{c} The “lipsum” package is a more basic package&
It generates a certain “lorem ipsum” text\\
The “lipsum” package is a more basic package. Itlorem ipsum” text&
The “lipsum” package is a more basic package. It generates a
certain number of the standard “lorem ipsum” text
\end{tabularx}
\lipsum[1]
\end{multicols}
\end{document}
(*) 参考https://groups.google.com/forum/#!topic/comp.text.tex/WjdABHwT7-g
答案1
multicol
除了改变线宽这一事实之外,您的问题与其他问题实际上没有关系。
\noindent
...
\noindent
后面跟着的\par
只是创建一个由空白行\parfillskip
粘合而没有文本组成的段落,因此它看起来有点像虚假的垂直空间,除了作为一个行框之外,它不会在分页符时被丢弃,也不会阻止下面文本的缩进。
%\begin{tabularx}{.8\textwidth}{@{}|X|X|@{}}
这将使表格的 \textwidth 宽度为 .8,比列宽得多(考虑到列分隔后,宽度小于 .5\textwidth)
%\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
这将使表格的列宽为 .8。它将缩进,\parindent
并且可能会或可能不会到达列的右边缘,具体取决于是否\parindent
大于或小于 .2\linewidth
%\begin{tabularx}{\hsize}{|X|X|}
这会使表格的列宽相同(有点低效,因为您事先知道希望两列宽度相同,但 TeX 不知道这一点)由于段落缩进,行会过满。
%\begin{tabular*}{\hsize}{|l|p{.8\hsize}}}
如果您使用,tabular*
则需要使用\extracolumsep
来添加一些拉伸,否则您将指定目标宽度,而 Tex 无法实现它。(您也应该使用\linewidth
not \hsize
。)
%\begin{tabular*}{.8\textwidth}{|l|p{2in}}}
如上所述,.8\textwidth
表格太宽,而且您没有提供任何方法来拉伸表格。
%\begin{tabular}{|p{1in}|p{2in}}
这将创建一个具有指定宽度的表格,并以 parindent 为缩进
%\begin{tabular*}{.8\linewidth}{|p{.2\linewidth|p{.8\linewidth}}
如上所述,您不能像那样使用 tabular*。
\begin{tabularx}{.8\linewidth}{@{}|X|X|@{}}
如上所述,这将使表格 .8\linewidth 缩进\parindent
。
%\multicolumn{2}{c} The “lipsum” package is a more basic package&
文本应该在论点中\multicol
%\multicolumn{2}{c}{The “lipsum” package is a more basic package}&
并且正如您所指定的,c
单元格不会跨越一行。
例如,请参阅此答案以了解如何指定考虑单元格填充和规则宽度的列宽