我需要表格方面的帮助。我需要(可能)混合行和列跨度(参见右下角和中间的 2 列),但我不知道该怎么做。另外,我需要在第 4 列中增加更多行(问题)——另一个表格是个好主意吗?
这就是我所拥有的:
我的目的是这样的:
我的代码:
\documentclass{article}
\usepackage{geometry}
\geometry{paper=a4paper,landscape,hmargin=28.5mm,vmargin=20mm}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{\dimexpr#1-\arrayrulewidth\relax}}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{\dimexpr#1-\arrayrulewidth\relax}}
\begin{tabular}{
| P{1.4cm}
| M{1.4cm}
| M{1.4cm}
| P{7.6cm}
| P{6.4cm}
| P{1.2cm}
| P{1.2cm}
| P{1.2cm}
| P{2.2cm}
|
}
\hline
a & b & c & & d & e & f & g \tabularnewline
\hline
\rule{0cm}{1cm} & & & & & & & & \tabularnewline
\hline
\rule{0cm}{1cm} & & & & & & & & \tabularnewline
\hline
\multicolumn{2}{P{2.8cm}}{\rule{0cm}{1cm}} & & & & \multicolumn{3}{P{2.8cm}}{\rule{0cm}{1cm}} \tabularnewline
\hline
\end{tabular}
我尝试了很多组合,但乳胶对我来说太难了,而且太复杂了......(漂亮的 HTML/CSS:))
答案1
您可以使用multirow
和\cline
。
\documentclass{article}
\usepackage{geometry,array}
\geometry{a4paper,landscape,hmargin=8.5mm,vmargin=20mm}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{\dimexpr#1-\arrayrulewidth\relax}}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{\dimexpr#1-\arrayrulewidth\relax}}
\usepackage{multirow}
\usepackage{amssymb}
\begin{document}
\begin{tabular}{
| P{1.4cm}
| M{1.4cm}
| M{1.4cm}
| P{7.6cm}
| P{6.4cm}
| P{1.2cm}
| P{1.2cm}
| P{1.2cm}
| P{2.2cm}
|
}
\hline
a & b & c & & d & e & f & g &\\
\hline
\rule[-0.8cm]{0cm}{1cm} & & &
\multirow{3}{7.6cm}{%
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No \newline
Question \hfill $\bigcirc$ \strut Yes $\bigcirc$ No% <--- % needed
}
& & & & & \\
\cline{1-3}\cline{5-8}
\rule[-0.8cm]{0cm}{1cm} & & & & & & & & \\\cline{1-3}\cline{5-8}
\multicolumn{2}{|P{2.8cm}}{\rule{0cm}{1cm}} & & & & \multicolumn{3}{P{2.8cm}}{\rule{0cm}{1cm}} &\\
\hline
\end{tabular}
\end{document}
答案2
因为所有单元格宽度都是已知的,所以您不需要使用 tabular(也不需要\halign
),因为就\hbox to<given width>
足够了。我从各个部分组成了您的表格,我使用了经典的\hbox
、\vbox
和。这是一个关于 TeX 如何使用这些元素的基本练习。\hrule
\vrule
\def\tabstrut{\lower6pt\vbox to20pt{}}
\def\tline#1#2#3#4{\hbox{\tabstrut
\hbox to#1cm{\hss#2\hss}\vrule
\hbox to#1cm{\hss#3\hss}\vrule
\hbox to#1cm{\hss#4\hss}}\hrule}
\def\oline#1#2{\hbox to#1cm{\tabstrut\hss#2\hss}\hrule}
\def\ques{\hbox{\quad question\quad $\bigcirc$ yes\quad $\bigcirc$ no}}
\vbox{\hrule
\hbox{\vrule
\vtop{\tline{1.4}{a}{b}{c}\tline{1.4}{d}{e}{f}\tline{1.4}{g}{h}{i}}\vrule
\vtop{\oline{4.6}{j}\medskip\ques\ques\ques\ques\ques\ques\ques\medskip}\vrule
\vtop{\oline{3.4}{k}}\vrule
\vtop{\hbox{\vtop{\tline{1.2}{l}{m}{n}
\tline{1.2}{o}{p}{q}\tline{1.2}{r}{s}{t}}\vrule}}%
\kern1.2cm
\vrule
}\hrule
}
结果:
我确实改变了一些部分宽度(j 列和 k 列),因为表格的整体宽度大于 A4 纸宽度。