如何在不使用多行和多列的情况下合并表格单元格的内容?

如何在不使用多行和多列的情况下合并表格单元格的内容?
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{1.2}
\centering
\setlength\tabcolsep{0.5em}
\scalebox{0.84}
{
\begin{tabular}{|l|l|l|}
\hline
Items & Type & Description\\
\hline
Output & Integrated Application & ABC\\
\hline
& Process \& Element Definition & AVB\\
\hline
& Tasks & PWS\\
\hline
& S & X Queries\\
\hline
& Scripting Languages & Java Script or VB Script\\
\hline
& Message Start Events & Receive or reply events\\
\hline 
Software & GUI tools & IBP\\
\hline
People & Designers & IDP\\
\hline
& Developers & PER\\
\hline
Technique & AAD\\
\hline
& Integration & ERCFT\\
\hline
& Task & ETY\\
\hline
\end{tabular}
}
\caption{TYURGY}
\label{t1}
\end{table}
\end{document}

我尝试使用多行合并表格单元格的内容,但输出结果并不理想。我希望将第 1 列(项目)的所有单元格(行)合并为一行(换行),作为值输出。MWE 如下。如能得到任何帮助,我将不胜感激。

答案1

这里我使用左对齐 s 来实现\Longunderstack

\documentclass{article}
\usepackage{graphicx,stackengine}
\setstackEOL{/}
\setstackgap{L}{\normalbaselineskip}
\strutlongstacks{T}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{1.2}
\centering
\setlength\tabcolsep{0.5em}
\scalebox{0.84}
{
\begin{tabular}{|l|l|l|}
\hline
Items & Type & Description\\
\hline
Output & \Longunderstack[l]{Integrated Application/ Process \& Element Definition/
  Tasks/ S/ Scripting Languages / Message Start Events}
& \Longunderstack[l]{ABC/ AVB/ PWS/ X Queries/ Java Script or VB Script/ 
  Receive or reply events}\\
\hline
Software & GUI tools & IBP\\
\hline
People & \Longunderstack[l]{Designers/ Developers} 
& \Longunderstack[l]{IDP/PER}\\
\hline
Technique & \Longunderstack[l]{AAD /Integration/ Task}
& \Longunderstack[l]{/ERCFT/ ETY} \\
\hline
\end{tabular}
}
\caption{TYURGY}
\label{t1}
\end{table}
\end{document}

在此处输入图片描述

附录(如何不在\cline堆栈内部进行模拟)

OP 询问了这个问题,我说有更好的方法,因为插入到环境内部的堆栈tabular实际上无法知道列的宽度,也无法知道其内容相对于tabular单元格边框的位置。

但只是为了展示如何完成,%%%...代码中标记的行替换了条目“S”,以便\cline可以在其下方放置适当大小的内容。

\documentclass{article}
\usepackage{graphicx,stackengine}
\setstackEOL{/}
\setstackgap{L}{\normalbaselineskip}
\strutlongstacks{T}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{1.2}
\centering
\setlength\tabcolsep{0.5em}
\scalebox{0.84}
{
\begin{tabular}{|l|l|l|}
\hline
Items & Type & Description\\
\hline
Output & \Longunderstack[l]{Integrated Application/ Process \& Element Definition/
  Tasks/ 
  \def\stackalignment{l}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \setbox0=\hbox{Process \& Element Definition}%%%%%%%%%
  \stackunder[2pt]{S}{\llap{\rule{\tabcolsep}{.3pt}}%%%%
  \rlap{\rule{\dimexpr\wd0+\tabcolsep}{.3pt}}}/ %%%%%%%%
  Scripting Languages / Message Start Events}
& \Longunderstack[l]{ABC/ AVB/ PWS/ X Queries/ Java Script or VB Script/ 
  Receive or reply events}\\
\hline
Software & GUI tools & IBP\\
\hline
People & \Longunderstack[l]{Designers/ Developers} 
& \Longunderstack[l]{IDP/PER}\\
\hline
Technique & \Longunderstack[l]{AAD /Integration/ Task}
& \Longunderstack[l]{/ERCFT/ ETY} \\
\hline
\end{tabular}
}
\caption{TYURGY}
\label{t1}
\end{table}
\end{document}

在此处输入图片描述

答案2

我在这里添加了一个没有多行的解决方案,并使用 LaTeX 中的一些更常见的做法编辑了代码,通常被认为看起来更专业,并且更容易阅读。

此解决方案使用booktabs,并根据该文档中包含的建议绝不使用垂直线,以及一些不同宽度的水平线。scalebox应很少使用它们来缩放整个表格,因为这会导致字体大小非常不一致。您可以像在代码中一样使用不同的表格列分隔长度,但我删除了它以及 -command arraystrech,因为我真的认为此代码中不需要它。如果您真的想要,请随意添加它们,但正如我所说,我认为它不会真正增加它的外观或感觉。

编辑:按照 Mico 的建议,我在子组之间增加了一些距离,使用 来进一步区分它们\addlinespace。谢谢 Mico。

\documentclass{article}
\usepackage{graphicx}
\usepackage{booktabs}
\begin{document}
\begin{table}
\centering
{
\begin{tabular}{lll}
\toprule
Items & Type & Description\\
\midrule
Output & Integrated Application & ABC\\
& Process \& Element Definition & AVB\\
& Tasks & PWS\\
& S & X Queries\\
& Scripting Languages & Java Script or VB Script\\
& Message Start Events & Receive or reply events\\
\addlinespace Software & GUI tools & IBP\\
People & Designers & IDP\\
& Developers & PER\\
\addlinespace Technique & AAD&\\
& Integration & ERCFT\\
& Task & ETY\\
\bottomrule
\end{tabular}
}
\caption{TYURGY}
\label{t1}
\end{table}
\end{document}

书页标签

下面是另一种解决方案,我对其进行了较少的修改,并且更符合您的原始代码和外观。

您要求提供不带多行代码的解决方案,但没有说明输出错误的原因。如果代码有问题,这里尝试使用多行代码。

\documentclass{article}
\usepackage{graphicx}
\usepackage{multirow}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{1.2}
\centering
\setlength\tabcolsep{0.5em}
\scalebox{0.84}
{
\begin{tabular}{|l|l|l|}
\hline
Items & Type & Description\\
\hline
\multirow{6}{*}{Output} & Integrated Application & ABC\\
\cline{2-3}
& Process \& Element Definition & AVB\\
\cline{2-3}
& Tasks & PWS\\
\cline{2-3}
& S & X Queries\\
\cline{2-3}
& Scripting Languages & Java Script or VB Script\\
\cline{2-3}
& Message Start Events & Receive or reply events\\
\hline 
Software & GUI tools & IBP\\
\hline
\multirow{2}{*}{People} & Designers & IDP\\
\cline{2-3}
& Developers & PER\\
\hline
\multirow{3}{*}{Technique} & AAD&\\
\cline{2-3}
& Integration & ERCFT\\
\cline{2-3}
& Task & ETY\\
\hline
\end{tabular}
}
\caption{TYURGY}
\label{t1}
\end{table}
\end{document}

在此处输入图片描述

相关内容