如何在多列环境中使用表格以及段落 p{} 和 \multicolumn?

如何在多列环境中使用表格以及段落 p{} 和 \multicolumn?

更新的问题

我要从头开始。会让问题变得非常简单直接。下面将保留原始问题。

我只是想看一个\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}

Mathematica 图形

示例 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}

Mathematica 图形

(*) 参考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 无法实现它。(您也应该使用\linewidthnot \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单元格不会跨越一行。

例如,请参阅此答案以了解如何指定考虑单元格填充和规则宽度的列宽

https://tex.stackexchange.com/a/150987/1090

相关内容