Was ich verwenden würde

Was ich verwenden würde

Wie kann ich in einer Tabelle zwei Zellen zu einer Zelle zusammenführen?

Beispielsweise möchte ich die Zelle für „456“ wie folgt zusammenführen.

erwartete Tabelle

\documentclass[journal]{IEEEtran}
\begin{document}

\begin{table}[h]
\captionof{table}{Test Table}
\label{tab:table_x} 
\noindent\begin{tabularx}{\columnwidth} { |
  c |
  c |
  >{\raggedright\arraybackslash}X |
}
  \hline
  \textbf{A} & \textbf{B} & \textbf{C}  \\
  \hline
  abc  & def & ghi \\
  \hline
  123  & 456 & mno \\
  \hline
   jkl  & 456 & 789 \\
  \hline
  xxx  & yyy & zzz \\
  \hline
\end{tabularx}
\end{table}

\end{document}

Aktuelle Tabelle:

aktuelle Tabelle

Antwort1

Wenn Sie dies in und mit all diesen Regeln tun möchten tabularx(ich mag sie nicht, sie lassen eine Tabelle überladen, unordentlich oder leserlich aussehen), würde ich die Verwendung der Pakete hhline(bietet besseren Abstand als \cline) und vorschlagen multirow. Ich habe auch arrayund verwendet \extrarowheight, um einen besseren Abstand zu den horizontalen Regeln zu erhalten (im Standard-LaTeX sind sie zu eng).

\documentclass[journal]{IEEEtran}

\usepackage{tabularx}
\usepackage{hhline}
\usepackage{multirow}
\usepackage{array}
\setlength\extrarowheight{1pt}

\begin{document}
\begin{table}[h]
\caption{Test Table\label{tab:table_x}}
\noindent\begin{tabularx}{\columnwidth} { |
  c |
  c |
  >{\raggedright\arraybackslash}X |
}
  \hline
  \textbf{A} & \textbf{B} & \textbf{C}  \\
  \hline
  abc  & def & ghi \\
  \hline
  123  &     & mno \\
  \hhline{|-|~|-|}
  jkl  & \multirow{-2}{*}[-.5\arrayrulewidth]{456} & 789 \\
  \hline
  xxx  & yyy & zzz \\
  \hline
\end{tabularx}
\end{table}
\end{document}

Bildbeschreibung hier eingeben

Um genau die Tabelle zu erhalten, die Sie in Ihrem Bild zeigen (mehr oder weniger, das ist nicht genau der gleiche Abstand), verwenden Sie nicht, tabularxsondern ein normales tabular:

\documentclass[journal]{IEEEtran}

\usepackage{hhline}
\usepackage{multirow}
\usepackage{array}
\setlength\extrarowheight{1pt}

\begin{document}
\begin{table}[h]
\centering
\caption{Test Table\label{tab:table_x}}
\begin{tabular}{ | c | c | c | }
  \hline
  \textbf{A} & \textbf{B} & \textbf{C}  \\
  \hline
  abc  & def & ghi \\
  \hline
  123  &     & mno \\
  \hhline{|-|~|-|}
  jkl  & \multirow{-2}{*}[-.5\arrayrulewidth]{456} & 789 \\
  \hline
  xxx  & yyy & zzz \\
  \hline
\end{tabular}
\end{table}
\end{document}

Bildbeschreibung hier eingeben


Was ich verwenden würde

Anstelle von vertikalen Linien (und Linien nach jeder Zeile) würde ich die booktabsRegeln verwenden. Wenn ich Zellen „zusammenführen“ muss, würde ich sie in die erste Spalte setzen (falls zutreffend) und einfach \addlinespacenach jedem Block hinzufügen. Bedeutungsvolle Daten (wie numerische Daten) würde ich nicht auslassen und Zellen zusammenführen, sondern wiederholen:

\documentclass[journal]{IEEEtran}

\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}
\begin{table}[h]
\centering
\caption{Test Table\label{tab:table_x}}
\begin{tabularx}{\columnwidth} { c c >{\raggedright\arraybackslash}X }
  \toprule
  \textbf{A} & \textbf{B} & \textbf{C}  \\
  \midrule
  abc  & def & ghi \\
       & 456 & mno \\
  \addlinespace
  jkl  & 456 & 789 \\
  \addlinespace
  xxx  & yyy & zzz \\
  \bottomrule
\end{tabularx}
\end{table}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Ihr Code ist nicht wirklich reproduzierbar, da er einige Fehler enthält (ein Paket fehlt). Sehen Sie sich meine Näherung an:

\documentclass[journal]{IEEEtran}
\usepackage{multirow} % <-- added package
\usepackage{tabularx}
\begin{document}

\begin{table}[h]
\caption{Test Table}
\label{tab:table_x} 
\noindent\begin{tabularx}{\columnwidth} { |
  c |
  c |
  >{\raggedright\arraybackslash}X |
}
  \hline
  \textbf{A} & \textbf{B} & \textbf{C}  \\
  \hline
  abc  & def & ghi \\
  \hline
  123  & \multirow{2}{*}{456} & mno \\ % <-- merged cell
  \cline{1-1}\cline{3-3} % <-- added rule
  jkl  & & 789 \\ % <-- merged cell
  \hline
  xxx  & yyy & zzz \\
  \hline
\end{tabularx}
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Antwort3

Mit dem neuen Paket tabularray ist dies ganz einfach möglich.

\documentclass[journal]{IEEEtran}
\usepackage{tabularray}

\begin{document}

\begin{table}[h]
  \caption{Test Table}
  \label{tab:table_x}
  \centering
  \begin{tblr}{
      colspec = {QQQ},
      hlines,
      vlines,
      columns={c},
      rows={m},
      cell{3}{2} = {r=2,c=1}{c},
      row{1}={font=\bfseries},
    }
    A   & B   & C   \\
    abc & def & ghi \\
    123 & 456 & mno \\
    jkl & 456 & 789 \\
    xxx & yyy & zzz \\
  \end{tblr}

\end{table}


\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen