如何使表格单元格跨越多列或多行?

如何使表格单元格跨越多列或多行?

书页的图片上印有一张表格以及一些文字。

我尝试了此代码,但边框线没有被删除:

\begin{tabular}{|p{0.6in}|p{0.3in}|p{0.9in}|p{0.9in}|p{0.8in}|} \hline 
 &                                                   &  & $P_{mot}$ &  \\ \hline 
$P_{batt}$ &  & S & M & H \\ \hline 
 & S & S & Z & VS \\ \hline 
SOC & M & M & Z & H \\ \hline 
 & H & M & Z & H \\ \hline 
\end{tabular}

如何删除单元格的边框?

答案1

欢迎使用 TeX.SE!为了合并行或列,您需要分别使用\multirow(需要multirow包)或\multicolumn。如果您嵌套它们,则需要这样做按正确的顺序

\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|p{0.6in}|p{0.3in}|p{0.9in}|p{0.9in}|p{0.8in}|} \hline 
\multicolumn{2}{|c|}{\multirow{2}{*}{$P_\mathrm{batt}$}} &                                                   
  \multicolumn{3}{|c|}{$P_\mathrm{mot}$ }  \\ \cline{3-5} 
\multicolumn{2}{|c|}{}   & S & M & H \\ \cline{1-5} 
\multirow{3}{*}{SOC} & S & S & Z & VS \\ \cline{2-5} 
 & M & M & Z & H \\ \cline{2-5} 
 & H & M & Z & H \\ \hline 
\end{tabular}
\end{document}

在此处输入图片描述

答案2

有了它\multirow\multicolumn您就可以达到您的需要。

我还创建了一种新的列类型,用于使单元格内容居中,并重新定义\arraystretch为在行之间留出更多垂直空间。

不过,我建议您摆脱垂直规则并使用booktabs

\documentclass{article}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\renewcommand{\arraystretch}{1.3}
\usepackage{multirow}

\usepackage{booktabs}
\begin{document}
Your table:\vspace{10pt}

\begin{tabular}{|p{0.6in}|C{0.3in}|C{0.4in}|C{0.4in}|C{0.4in}|} \hline 
 \multicolumn{2}{|c|}{\multirow{2}{*}{$P_{batt}$}}& \multicolumn{3}{c|}{$P_{mot}$}   \\ \cline{3-5} 
 \multicolumn{2}{|c|}{}  & S & M & H \\ \hline 
  & S & S & Z & VS \\ \cline{2-5} 
 SOC & M & M & Z & H \\ \cline{2-5} 
 & H & M & Z & H \\ \hline 
\end{tabular}

\vspace{10pt}My suggestion:\vspace{10pt}

\begin{tabular}{lc*{3}{C{1.5em}}}
\toprule 
 \multicolumn{2}{c}{\multirow{2}{*}{$P_{batt}$}}& \multicolumn{3}{c}{$P_{mot}$}   \\ \cmidrule{3-5} 
 \multicolumn{2}{c}{}  & S & M & H \\ \midrule 
 & S & S & Z & VS \\ \cmidrule(l){2-5} 
SOC & M & M & Z & H \\ \cmidrule(l){2-5} 
 & H & M & Z & H \\ 
 \bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

答案3

适用于列中每项的内容都应放在列标题中。以下是我的建议:

\documentclass[twocolumn]{article}
\usepackage{array,booktabs}

\usepackage{lipsum} % for context

\begin{document}

\lipsum[2]

\begin{table}[htp]
\centering

\begin{tabular}{ @{} *{4}{w{c}{3em}} @{} }
\toprule
$P_{\mathrm{batt}}$ & \multicolumn{3}{c}{$P_{\mathrm{mot}}$} \\
\cmidrule(r){1-1} \cmidrule(l){2-4}
SOC & S & M & H \\
\midrule 
S & S & Z & VS \\
M & M & Z & H \\
H & M & Z & H \\ 
\bottomrule
\end{tabular}

\caption{Rule based of fuzzy logic control}

\end{table}

\lipsum

\end{document}

在此处输入图片描述

相关内容