Mehrspaltige Tabelle mit unterschiedlichen Ausrichtungen

Mehrspaltige Tabelle mit unterschiedlichen Ausrichtungen

Ich möchte die folgende mehrspaltige Tabelle in Latex zeichnen. Die Überschriften sind zentriert und der übrige Text linksbündig. Wie geht das? Hier können alle Felder wie Eins, Zwei usw. beliebig viel Text enthalten.

Bildbeschreibung hier eingeben

Mein aktueller Versuch ist wie folgt. Ich möchte außerdem:

(a) Zwei und Drei werden in der Mitte hinsichtlich des Textes in Spalte eins geteilt.

(b) Der gesamte Text außer den Überschriften ist linksbündig auszurichten

(c) Eine gerade Linie zwischen Zwei und Drei

\documentclass{article}
\usepackage{blindtext}
\begin{document}
\begin{tabular}{|p{5cm}|c|c|c|}
\hline
\textbf{A} & \textbf{B} & \textbf{C} & \textbf{D}\\
\hline
\blindtext & \begin{tabular}{@{}c@{}}Two \\ Three\end{tabular} & Four & Six
\end{tabular}
\end{document}

Antwort1

\documentclass{article}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{blindtext}
\begin{document}
\begin{tabular}{|p{5cm}|l|l|l|}
\hline
\multicolumn{1}{|c}{\textbf{A} }& \multicolumn{1}{|c|}{\textbf{B} }& \multicolumn{1}{c}{\textbf{C} }& \multicolumn{1}{|c|}{\textbf{D} }\\
\hline
\multirow{2}{*}{One} & Two  & Four & \multirow{2}{*}{Six}  \\ \cline{2-3}
 &  Three & Five & \\ \hline
Seven& Eight & Nine & Ten \\ \hline
\end{tabular}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Ich interpretiere Ihre Anforderungen wie folgt: (a) Spalte „A“ sollte halb so breit sein wie Spalte „B“ und zusammen sollten sie die erste Hälfte der verfügbaren Breite überspannen; (b) Spalten „C“ und „D“ sollten gleich breit sein und die zweite Hälfte überspannen; (c) der Inhalt aller Zellen sollte oben ausgerichtet sein; und (d) die Höhe der mittleren Zellenreihe wird durch die Zelle „Eins“ und „Sechs“ bestimmt, die höher ist.

Wenn diese Interpretation richtig ist, könnte das folgende Setup das sein, wonach Sie suchen. Der einzige Nachteil ist meiner Meinung nach, dass die horizontale Linie, die die Zellen Zwei/Vier von den Zellen Drei/Fünf trennt, nicht automatisch ausgeglichen wird. Je nach Inhalt der Zellen Zwei und Vier \phantomkann eine Anweisung erforderlich sein, wie im folgenden Code gezeigt wird.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{array,ragged2e}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}

\newlength\tablengtho
\newlength\tablengtha
\newlength\tablengthb
\newlength\tablengthcd

% Calculare widths of columns A, B, and C/D
\setlength\tablengtho{\dimexpr\textwidth-8\tabcolsep-5\arrayrulewidth\relax}
\setlength\tablengtha{\dimexpr0.6667\tablengtho/4\relax}
\setlength\tablengthb{\dimexpr1.3333\tablengtho/4\relax}
\setlength\tablengthcd{\dimexpr\tablengtho/4\relax}

\begin{document}

\noindent
\begin{tabular}{| P{\tablengtha} | P{\tablengthb} |
                  P{\tablengthcd} | P{\tablengthcd} |}
\hline
\multicolumn{1}{|c|}{\textbf{A}} & \multicolumn{1}{c|}{\textbf{B}} &
\multicolumn{1}{c|}{\textbf{C}} & \multicolumn{1}{c|}{\textbf{D}} \\
\hline
One One One One One One One One One  & 
\multicolumn{1}{@{}c@{}|}{%
   \begin{tabular}[t]{P{\tablengthb}}
         Two Two Two Two Two Two Two   \\ 
         \hline
         Three Three Three Three Three \\
   \end{tabular}} &
\multicolumn{1}{@{}c@{}|}{%
   \begin{tabular}[t]{P{\tablengthcd}}
         Four Four Four \phantom{Four} \\ % \phantom{Four} needed for balance
         \hline
         Five Five Five \\
   \end{tabular}} &
Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six \\
\hline
Seven & Eight & Nine & Ten \\
\hline
\end{tabular}

\end{document}

Antwort3

Ich habe versucht, dies zu tun mitStälle – Vereinfachte Plain TEX-TabellenDadurch wird der Text normalerweise zentriert in jeder Zelle platziert. Ich habe 4 Makros verwendet, eines für jede Zeile, um die horizontale Größe der Zeilen zu steuern und eine Möglichkeit bereitzustellen, die Platzierung des Textes in jeder Zelle sowohl horizontal als auch vertikal zu steuern.

\documentclass{article}

\input stables.tex

%the width of each column is controlled by the "\hsize=" in each of the four macros
%for each macro the first variable controls horizontal placement of the text, the second 
%takes the text itself and the third controls vertical placement of the text.
\def\AA#1#2#3{\hphantom{\hspace{#1}}% 
   \vtop{\hsize=1.2in\vskip#3 #2}\hphantom{\hspace{1pt}}}

\def\BB#1#2#3{\hphantom{\hspace{#1}}%
   \vtop{\hsize=2.2in\vskip#3 #2}\hphantom{\hspace{1pt}}}

\def\CC#1#2#3{\hphantom{\hspace{#1}}%
   \vtop{\hsize=1in\vskip#3 #2}\hphantom{\hspace{1pt}}}

\def\DD#1#2#3{\hphantom{\hspace{#1}}%
   \vtop{\hsize=1.4in\vskip#3 #2}\hphantom{\hspace{1pt}}}

\begin{document}

\begintable

A|B|C|D\elt
\multirow4{\AA{-.1cm}{One}{-.9cm}}|\BB{-.6cm}{Two}{-.2cm} |\CC{-.8cm}%
{Four}{-.2cm}|\multirow4{\DD{-.1cm}{Six}{-.9cm}}\elspec
|||\el
|||\el
|\trule|\trule| \el
|\BB{-.6cm}{Three}{-.4cm} |\CC{-.8cm}{Five}{-.4cm}|\el
|||\elt
\AA{-.9cm}{Seven}{-.2cm}|\BB{-.9cm}{Eight}{-.2cm}|\CC{-.8cm}{Nine}%  
{-.2cm}|\DD{-1cm}{Ten}{-.2cm}

\endtable

\end{document}

Das war mein Ergebnis:

Bildbeschreibung hier eingeben

Antwort4

Es ist besser, das Paket „Booktabs“ zu verwenden. Die Regeln sorgen für etwas Platz zwischen den Zeilen.

\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{tabular}{p{5cm}|l|l|l}
\toprule
\multicolumn{1}{c}{\textbf{A} }& \multicolumn{1}{|c}{\textbf{B} }& \multicolumn{1}{|c}{\textbf{C} }& \multicolumn{1}{|c}{\textbf{D} }\\
\midrule
\multirow{2}{*}{One} & Two  & Four & \multirow{2}{*}{Six}  \\ \cmidrule{2-3}
&  Three & Five & \\ \midrule
Seven& Eight & Nine & Ten \\ \bottomrule
\end{tabular}
\end{document}

Abonnieren

verwandte Informationen