Ich würde gern im folgenden Beispiel das Element A (\multirow) sowie die Kategorien von Akteur bis Bereich vertikal zentrieren.

Open in Online-Editor
\documentclass[]{scrreprt}      
\usepackage[T1]{fontenc}                                    
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel} 
\selectlanguage{ngerman}
 \usepackage{multirow} 
\usepackage{booktabs} 
\usepackage{array} 
 \newcolumntype{R}{>{\raggedright\arraybackslash}X} 
\usepackage{tabularx} 
\begin{document}

\begin{table}[htbp]
\centering
\begin{tabularx}{\textwidth}{RRX}

\textbf{Element} & \textbf{Kategorien} & \textbf{Ausprägungen}\\
\toprule
\multirow{4}{*}{Element A} & Akteur & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\
                           & Thema & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\ \addlinespace
                           & Auswirkung & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\ \addlinespace
                           & Bereich & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\ \addlinespace

\end{tabularx}
\end{table}
\end{document}

gefragt 09 Aug '16, 22:06

neuhier's gravatar image

neuhier
1913813
Akzeptiert-Rate: 0%

bearbeitet 10 Aug '16, 21:46

saputello's gravatar image

saputello
11.1k174365


Um den Inhalt einer Zelle vertikal zu zentrieren verwendet man die m{<Breite>}-Spalte aus dem Paket array. Die tabularx-Umgebung kann die Breite selbst bestimmen, benutzt aber als Grundlage für die X-Spalte standardmäßig p{<Breite>}. Um das zu ändern verwendet man

\renewcommand\tabularxcolumn[1]{m{#1}}

\mutlirow nimmt an, dass jede Zeile der Tabelle auch nur eine Zeile hoch ist, weshalb es mit \mutlirow{4}{*}{...} viel zu weit oben erscheint. Da muss man von Hand nachhelfen. Das folgende sieht relativ zentriert aus.

\multirow{20}{*}{Element A}

Ich habe nach der zweiten Zeile noch \addlinespace eingefügt. Es schien mir als würde das fehlen.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\usepackage{array}
\usepackage{booktabs}
\usepackage{tabularx}
\newcolumntype{R}{>{\raggedright\arraybackslash}X}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}
\begin{tabularx}{\textwidth}{RRX}
  \textbf{Element}            & \textbf{Kategorien} & \textbf{Ausprägungen}                                                                                                              \\
  \toprule
  \multirow{20}{*}{Element A} & Akteur              & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam \\ \addlinespace
                              & Thema               & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam \\ \addlinespace
                              & Auswirkung          & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam \\ \addlinespace
                              & Bereich             & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam \\ \addlinespace
\end{tabularx}
\end{document}

alt text


In ConTeXt mit Natural Tables.

% !TEX context
\newdimen\tabcolsep \tabcolsep=6pt % LaTeX default
\startsetups table:multirow
  \setupTABLE [frame=off,align={lohi}]
  %\setupTABLE [column] [each] [distance=1cm] % NOT as expected
  \setupTABLE [column] [each]  [loffset=\tabcolsep,roffset=\tabcolsep]
  \setupTABLE [column] [first] [loffset=0pt]
  \setupTABLE [column] [last]  [roffset=0pt]
  \setupTABLE [row] [first] [bottomframe=on,style=bold]
\stopsetups
\starttext
\startTABLE[setups={table:multirow}]
  \NC Element         \NC Kategorien \NC Ausprägungen \NC\NR
  \NC[ny=4] Element A \NC Akteur     \NC Lorem ipsum dolor sit amet, consetetur
                                         sadipscing elitr, sed diam nonumy eirmod
                                         tempor invidunt ut labore et dolore
                                         magna aliquyam \NC\NR
                      \NC Thema      \NC Lorem ipsum dolor sit amet, consetetur
                                         sadipscing elitr, sed diam nonumy eirmod
                                         tempor invidunt ut labore et dolore
                                         magna aliquyam \NC\NR
                      \NC Auswirkung \NC Lorem ipsum dolor sit amet, consetetur
                                         sadipscing elitr, sed diam nonumy eirmod
                                         tempor invidunt ut labore et dolore
                                         magna aliquyam \NC\NR
                      \NC Bereich    \NC Lorem ipsum dolor sit amet, consetetur
                                         sadipscing elitr, sed diam nonumy eirmod
                                         tempor invidunt ut labore et dolore
                                         magna aliquyam \NC\NR
\stopTABLE
\stoptext

alt text

Permanenter link

beantwortet 10 Aug '16, 09:13

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 04 Apr '22, 19:08

stefan's gravatar image

stefan ♦♦
18.4k163148

@Henri, vielen Dank! Hast Du auch eine Lösung, den Inhalt ("Element A") der ersten Spalte vertikal zu zentrieren? Dabei handelt es sich ja um eine multirow.

(10 Aug '16, 09:21) neuhier

Mag daran liegen dass ich LaTeX kenne und gewohnt bin, und ConTeXt eigentlich gar nicht, aber ... irgendwie wirkt ConTeXt komplizierter.

(10 Aug '16, 09:49) Johannes

Ich hingegen finde ConTeXt von der Syntax her viel lesbarer und mir gefällt die Trennung zwischen Inhalt und Layout. Ist es zu empfehlen ConTeXt produktiv zu nutzen?

(17 Aug '16, 11:48) dzaic

Damit die Kategorien vertikal zentriert sind genügt es m-Spalten zu verwenden. Der Befehl \renewcommand{\tabularxcolumn}[1]{m{#1}} macht das für die X- und R-Spalten.

Das Element zu zentrieren ist schwieriger, da \multirow das selbst nicht wirklich kann. Eine Möglichkeit wäre, statt \multirow zu benutzen tabularx zu schachteln. Dabei muss der Inhalt einer Zelle in eine Gruppe eingefasst sein. Damit die Spaltenbreiten gleich bleiben habe ich die Spaltenoptionen >{\hsize=0.333\hsize} und >{\hsize=1.667\hsize} verwendet. Der inneren tabularx gebe ich als Tabellenbreite einfach die aktuelle Spaltenbreite \hsize mit.

Zum Schachteln der Tabellen muss man um die inneren tabularx eine Gruppe setzen.

Sollen Linien innerhalb der inneren tabularx verwendet werden, muss beachtet werden, dass diese nur die Breite der zweiten Spalte hat. Je nach dem, wie die Linie aussehen soll, müssten die @{} ggf. aus der inneren in die äußere tabularx verschoben werden.

Open in Online-Editor
\documentclass[]{scrreprt}      
\usepackage[T1]{fontenc}                                    
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel} 
\selectlanguage{ngerman}
 \usepackage{multirow} 
\usepackage{booktabs} 
\usepackage{array} 
\usepackage{tabularx} 
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{R}{>{\raggedright\arraybackslash}X} 
\begin{document}

\begin{table}[htbp]
\centering
\begin{tabularx}{\textwidth}{>{\hsize=0.667\hsize}R>{\hsize=1.333\hsize}X}
\textbf{Element} & {\begin{tabularx}{\hsize}{@{}RX@{}} \textbf{Kategorien} & \textbf{Ausprägungen}
\end{tabularx}} \\ \toprule
Elemnt A & {\begin{tabularx}{\hsize}{@{}RX@{}}
Akteur & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam \\ \midrule
Thema & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\ \addlinespace
Auswirkung & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam\\ \addlinespace
Bereich & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
\end{tabularx}}
\end{tabularx}
\end{table}
\end{document}

alt text

Permanenter link

beantwortet 10 Aug '16, 09:52

sudo's gravatar image

sudo
2.0k51521
Akzeptiert-Rate: 39%

bearbeitet 12 Aug '16, 13:52

2

Wenn man nur X-Spalten (bzw. davon abgeleitete Spalten) hat, bei denen man auch noch die Breite selbst wählt, kann man eigentlich auch gleich direkt m-Spalten verwenden (und braucht dann keine tabularx mehr. Das ist nur minimal aufwändiger. Interessant wird die tabularx-Schachtelung, wenn die beiden linken Spalten sich der Breite des Inhalts anpassen sollen.

BTW: Vielleicht könntest Du noch betonen, dass die Gruppenklammern bei der tabularx-Schachtelung wichtig ist.

(10 Aug '16, 21:51) saputello
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×32

gestellte Frage: 09 Aug '16, 22:06

Frage wurde gesehen: 10,558 Mal

zuletzt geändert: 17 Aug '16, 11:48