Erstellen einer speziellen Tabelle mit unterschiedlichen Zeilenlängen in Latex

Erstellen einer speziellen Tabelle mit unterschiedlichen Zeilenlängen in Latex

Wie kann ich in Latex eine Tabelle wie das folgende Bild erhalten? Bildbeschreibung hier eingeben

Antwort1

Eine mögliche Lösung. Ich schlage vorkeine Verwendung der vertikalen Linien, sondern vielmehr diebooktabsPaket. Für die horizontale Ausrichtung 20können Sie dasmultirowPaket, während Sie für die vertikale Ausrichtung die Breite des größten Eintrags der ersten Spalten über dascalcPaket.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{booktabs,calc,multirow}

\newlength\wdx% for vertical alignment
\setlength{\wdx}{\widthof{66}}

\begin{document}

\begin{table}
\centering
\addtolength{\tabcolsep}{10pt}% increase distance between cells 
\begin{tabular}{cccccc}
\toprule
\textsf{x} & \multicolumn{5}{c}{\textsf{y}}\\
\cmidrule(l{\wdx}r{\wdx}){1-1}\cmidrule(l){2-6}
10 & 22 & 33 \\
\multirow{2}[2]{\wdx}{20} & 45 & 34 & 88 & 77 & 80 \\
 & 34 & 67\\
66 & 12 & 10 & 45 & 66\\ 
\bottomrule
\end{tabular}
\end{table}

\end{document}

Antwort2

Wenn Sie in Ihrer Tabelle eine vertikale Linie verwenden müssen, würde ich vorschlagen, dass Sie auch "Streben" einfügen, um einen besseren vertikalen Abstand über und unter den von gezeichneten horizontalen Linien zu erhalten \hline. Im Allgemeinen finde ich es jedoch vorzuziehen, Tabellen zu konstruierenohnevertikale Regeln und um das booktabsPaket zu verwenden, um horizontale Linien mit gleichmäßigem Abstand zu erhalten, die mit \toprule, \midrule, usw. gezeichnet werden.

Um den zweiten Eintrag in der ersten Spalte vertikal zu zentrieren, verwenden Sie eine \multirowAnweisung.

Sie können die Aufgabe, die erste Spalte immer fett darzustellen, auch automatisieren.

Wenn Sie das Paket schließlich verwenden möchten tabularx, etwa weil Sie eine vordefinierte Breite der Tabelle erreichen möchten und wenn Sie möchten, dass der Inhalt zentriert ist (was in dem von Ihnen geposteten Screenshot der Fall zu sein scheint), müssen Sie auch eine spezielle, „zentrierte“ Version des Xvom Paket bereitgestellten Spaltentyps definieren tabularx.

Die erste Tabelle unten verwendet eine tabularUmgebung, und die zweite verwendet eine tabularxUmgebung mit der Gesamtbreite von 0.7\textwidth. Die zweite Tabelle ist ebenfalls in serifenloser Schrift gesetzt.

Bildbeschreibung hier eingeben

\documentclass[10pt,a4paper]{article}
\usepackage{multirow,array}
% define "struts" as suggested by Claudio Beccari in
%    a piece in TeX and TUG News, Vol. 2, 1993.
\newcommand\T{\rule{0pt}{2.6ex}}       % = `top' strut
\newcommand\B{\rule[-0.9ex]{0pt}{0pt}} % = `bottom' strut
\newcommand\TB{\T\B} % top-and-bottom strut 

\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}

\begin{tabular}{>{\bfseries}c|ccccc}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabular}

\bigskip

\textsf{ % switch to sans-serif for the second table
\begin{tabularx}{0.7\textwidth}{>{\bfseries}C|CCCCC}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabularx}}
\end{document}

Antwort3

Eine Lösung, die zusätzlich zu arraynur das makecellPaket verwendet. Ein Vorteil ist, dass man mit dem Befehl viel weniger enge Reihen haben kann \makecell*(es fügt hinzu\jot symmetrischam oberen und unteren Rand einer Zelle, im Gegensatz zu \renewcommand{\arraystretch}{…}. Eine weitere Möglichkeit ist die Möglichkeit, die Dicke der vertikalen Linien zu ändern (wie booktabs, aber mit der Möglichkeit, vertikale Linien zu verwenden).

    \documentclass{article}

    \usepackage[utf8]{inputenc}
    \usepackage{array, makecell}

    \begin{document}

    \begin{table}
    \centering\sffamily
    \addtolength{\tabcolsep}{10pt}% increase distance between cells
    \begin{tabular}{c!{\vline width1pt}*{5}{c}}
    \makecell*{x} & \multicolumn{5}{c}{y}\\
    \Xhline{1pt}
    \makecell*{10} & 22 & 33 \\
    \hline
    \makecell{20\\[-2.5ex]}& \makecell*[tc]{45\\34} & \makecell[tc]{34\\67} & 88 & 77 & 80 \\
    \hline
    \makecell*{66} & 12 & 10 & 45 & 66
    \end{tabular}
    \end{table}

    \end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen