将文本放入表格中,并将表格放入页面中

将文本放入表格中,并将表格放入页面中

我在@Zarko 的帮助下创建了下表。现在我对布局有一些疑问。

代码:

\documentclass[11pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{xcolor,colortbl}

\begin{document}
\begin{table}[h]
        \begin{tabular}{|p{.1cm}|p{.1cm}|p{.1cm}|p{.1cm}|p{.1cm}|p{3.5cm}|p{2cm}|p{2cm}|}
\hline
\multicolumn{6}{|c|}{ \textbf{ I have to put here very long definitions.  QUESTION1}}&
\textbf{I have to put here very long definitions}
&\textbf{I have to put here very long definitions}\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{\textbf{I have to put here very long definitions}
}&&\\
\hline
1&2&3 QUESTION2&4&5&too many substances QUESTION3&&\\
\hline
1&2&3&4&5&too many substances QUESTION4&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{I have to put here very long definitions 
(some subdefinitions)
}&&\\
\hline
\multicolumn{3}{|c|}{12345678}&\multicolumn{3}{|c|}{too many substance}&&\\
\hline
\multicolumn{3}{|c|}{12345678}&\multicolumn{3}{|c|}{too many substance}&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{again long definitions}&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla QUESTION5&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{again long definitions) 
(again long definitions)
}&&\\
\hline
\multicolumn{3}{|c|}{\multirow{4}{*}{12345678} }&

\multicolumn{3}{|c|}{too many substances,bla,bla,bla QUESTION6}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\hline
\multicolumn{3}{|c|}{\multirow{4}{*}{12345678} }&
\multicolumn{3}{|c|}{too many substances,bla,bla,bla}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\hline
\multicolumn{3}{|c|}{\multirow{4}{*}{12345678} }&
\multicolumn{3}{|c|}{too many substances,bla,bla,bla}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{|c|}{}&&\\\cline{4-8}
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{Conclusions}&&\\
\hline
\end{tabular}
\end{table}
\end{document}

布局:在此处输入图片描述

问题 1:为什么我无法将此文本像此行的第 3 列和第 4 列那样居中?(我尝试使用 \centering)

问题2:我安排了表格的单元格宽度,但是为什么数字 3 的单元格比其他数字(1,2,4,5)大?

问题 3:我尝试过在这里减小单元格宽度,但这并没有帮助我避免为少量文本留下太多空间。我该如何处理?例如,为什么我无法在文本后写问题 4,而 .tex 为何将其放在下一行?

问题 5 更好地解释了我上面的问题。为什么 .tex 将每个新单词都放到下一行?

问题 6:我在这里裁剪了表格以适合页面?如果我的表格更大,该怎么办?

我希望这样的问卷适合堆栈格式。

答案1

我希望这样的问卷适合堆栈格式。

不是,最好每发布一个问题就问一个问题,但无论如何。此外,问题标记为 tabularx,但您似乎没有使用它。

问题 1:为什么我无法将此文本像此行的第 3 列和第 4 列那样居中?(我尝试使用 \centering)

不确定你在这里的意思。

问题2:我安排了表格的单元格宽度,但是为什么数字 3 的单元格比其他数字(1,2,4,5)大?

第 3 列被迫变宽,因为你有

\multicolumn{3}{|c|}{12345678}

并且该文本的宽度超过了指定宽度,因此最后一个跨越列(此处为 3)变得更宽,您可以通过查看规则的|排列方式来看到这一点。

问题 3:我尝试过在这里减小单元格宽度,但这并没有帮助我避免为少量文本留下太多空间。我该如何处理?例如,为什么我无法在文本后写问题 4,而 .tex 为何将其放在下一行?

该文本位于指定宽度为 3.5 厘米的列中并且Question 4不适合,以下列在所有情况下都是空的(&&),因此您可能不应该有以下列,然后将该列加宽。

问题 5 更好地解释了我上面的问题。为什么 .tex 将每个新单词都放到下一行?

这与上一个问题相同,您将文本调整到较窄的宽度,而不是在垂直规则标记的区域中。文本设置为您在中指定的宽度,p但列及其规则被扩展,因为

I have to put here very long definitions

不适合指定的宽度。

问题 6:我在这里裁剪了表格以适合页面?如果我的表格更大,该怎么办?

使用该longtable包。


像这样,尽管它仍然太宽(因此负左跳过以窃取左边距)可能你应该使用较小的 fone 尺寸,然后\small再次调整列宽。

\documentclass[11pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{array,multirow,longtable}
\usepackage[table]{xcolor}
\usepackage{calc}

\begin{document}

\setlength{\LTleft}{-40pt}
\setlength{\LTright}{\fill}

\begin{longtable}{|p{.2cm}|p{.2cm}|p{.2cm}|p{.2cm}|p{.2cm}|>{\raggedright}p{6.5cm}|p{2cm}|p{2cm}|}
\hline
\multicolumn{6}{|p{7cm+10\tabcolsep+5\arrayrulewidth}|}{ \textbf{ I have to put here very long definitions.  QUESTION1}}&
\textbf{I have to put here very long definitions}
&\textbf{I have to put here very long definitions}\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|p{7cm+10\tabcolsep+5\arrayrulewidth}|}{\textbf{I have to put here very long definitions}
}&&\\
\hline
1&2&3&4&5&too many substances QUESTION3&&\\
\hline
1&2&3&4&5&too many substances QUESTION4&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
1&2&3&4&5&too many substances&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|p{7cm+10\tabcolsep+5\arrayrulewidth}|}{I have to put here very long definitions 
(some subdefinitions)
}&&\\
\hline
\multicolumn{3}{|c|}{12345678}&\multicolumn{3}{c|}{too many substance}&&\\
\hline
\multicolumn{3}{|c|}{12345678}&\multicolumn{3}{c|}{too many substance}&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|p{7cm+10\tabcolsep+5\arrayrulewidth}|}{again long definitions}&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla QUESTION5&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
1&2&3&4&&too many substances,bla,bla,bla&&\\
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|p{7cm+10\tabcolsep+5\arrayrulewidth}|}{again long definitions) 
(again long definitions)
}&&\\
\hline
\multicolumn{3}{c|}{\multirow{4}{*}{12345678} }&

\multicolumn{3}{c|}{too many substances,bla,bla,bla QUESTION6}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\hline
\multicolumn{3}{|c|}{\multirow{4}{*}{12345678} }&
\multicolumn{3}{|c|}{too many substances,bla,bla,bla}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\hline
\multicolumn{3}{|c|}{\multirow{4}{*}{12345678} }&
\multicolumn{3}{|c|}{too many substances,bla,bla,bla}&&\\
\cline{4-8}
\multicolumn{3}{|c|}{}&1&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&2&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\multicolumn{3}{|c|}{}&3&\multicolumn{2}{c|}{}&&\\\cline{4-8}
\hline
\rowcolor[gray]{.9}[0pt][0pt]
\multicolumn{6}{|c|}{Conclusions}&&\\
\hline
\end{longtable}
\end{document}

答案2

部分回答问题 1 和问题 2。如果您想要多行,则需要使用 a \parbox{...}{\centering ...},这意味着您需要指定宽度。需要注意的是,当 a\multicolumn比列的总宽更宽时,所有超出的部分将进入最后一列,而不是均匀分布。您可以使用\makebox强制这些列具有相同的宽度,如下所示:

\documentclass[border=.1in]{standalone}

\begin{document}
\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|p{1in}|}{\centering This is a very long line which will eventually wrap around.}\\
\hline
\makebox[\dimexpr .5in - \tabcolsep]{test} & test\\
\hline
\end{tabular}
\end{document}

表格

相关内容