PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verschiedene vertikale Ausrichtungen in Tabelle kombinieren



richi-rich
26-07-2013, 10:17
Hallo liebe LateX-Community,

mich plagt folgendes Problem:

Ich möchte eine Tabelle erstellen, in der bestimmte Spalten vertikal zentriert sind, aber eben nicht alle. In der ganz linken Spalte soll der Text oben ausgerichtet sein.

Ich habe das einmal mit einer "tabu"-Umgebung versucht, da wird der p{}-Befehl ignoriert. In der tabularx-Umgebung hingegen wird das m{} konsequent nicht beachtet :)

Hier das Beispiel:



\documentclass[a4paper,14pt,BCOR10mm,oneside]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage[absolute,overlay]{textpos}
\usepackage{wallpaper}
\usepackage{tabu}
\areaset{17cm}{26cm}
\setlength{\topmargin}{-1.5cm}
\setlength{\marginparwidth}{0.5cm}

\renewcommand{\familydefault}{\sfdefault}
\usepackage{helvet}



\begin{document}

\tabulinesep=0.5ex
\begin{table}[H]
\begin{tabu} spread \linewidth {|p{0.1cm}X[m]|m{2.5cm}|m{2.5cm}|m{2.5cm}|}
\hline
& \textbf{Fragen} & \centering{Antwort A} & \centering{Antwort B - braucht auch etwas mehr Platz} &
\centering{Antwort C} \tabularnewline
\hline
c.& langer Text langer Text langer Text langer Text langer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
d. & kurzer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
e. & kurzer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
f. & langer Text langer Text langer Text langer Text langer Text langer Text langer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
\end{tabu}
\end{table}

\begin{table}[H]
\begin{tabularx}{\textwidth}{|p{0.1cm}X|m{2.5cm}|m {2.5cm}|m{2.5cm}|}
\hline
& \textbf{Fragen} & \centering{Antwort A} & \centering{Antwort B - braucht auch etwas mehr Platz} &
\centering{Antwort C} \tabularnewline
\hline
c. & langer Text langer Text langer Text langer Text langer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
d. & kurzer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
e. & kurzer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
f. & langer Text langer Text langer Text langer Text langer Text langer Text langer Text & \centering{1} & \centering{2} & \centering{3} \tabularnewline
\hline
\end{tabularx}
\end{table}

\end{document}


Eine Such im Internet hat mir bisher nicht weitergeholfen. Scheinbar kollidieren unterschiedliche vertikale Ausrichtungen in einer Tabelle miteinander und einer der zwei wird priorisiert für die gesamte Tabelle herangezogen.

Wer weiß Hilfe?

Danke und lg
Richie

richi-rich
26-07-2013, 10:20
Hier noch die PDF, die bei mir bei oben gepostetem Minimalbeispiel erzeugt wird.

Stefan_K
26-07-2013, 10:34
Hallo Richie,

schau Dir mal die Erklärung hier an: Wie kann ich innerhalb einer Tabellenzelle vertikal zentrieren? (http://texwelt.de/wissen/fragen/840/wie-kann-ich-innerhalb-einer-tabellenzelle-vertikal-zentrieren)

Dass m wird schon beachtet. Nur stört das in X implizit enthaltene p. \renewcommand{\tabularxcolumn}[1]{m{#1}} könnte helfen.

Stefan

richi-rich
26-07-2013, 10:51
Hy Stefan,

danke für die schnelle Antwort.

der Befehl \renewcommand{\tabularxcolumn}[1]{m{#1}} führt dazu, dass die tabularx-Tabelle gleich aussieht, wie die tabu-Tabelle.

So wie ich das "nach kurzem Überfliegen" verstanden habe, wir der Inhalt immer an der "Grundlinie" ausgerichtet, die wohl durch den Inhalt in der X-Spalte definiert wird, richtig? Die Frage ist, warum m{} und p{} zum selben Ergebnis führen!?!?

Stefan_K
26-07-2013, 10:57
Das oft wiederholte \centering (was kein Argument nimmt) kannst Du vereinfachen. Siehe hier: Wie kann ich in Tabellen linksbündig statt im Blocksatz ausrichten? (http://texwelt.de/wissen/fragen/922/wie-kann-ich-in-tabellen-linksbundig-statt-im-blocksatz-ausrichten)

Dort einfach \centering statt \raggedright nehmen, also etwa


\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

Für die 1. Spalte nimm auch m (oder M). Und mach halt den Inhalt größer, damit er an der Oberkante landet, wie c.\newline als einfachstes (oder eine Box).

Stefan

richi-rich
26-07-2013, 11:04
Die manuelle Lösung hilft mir leider nicht, da ich das ganze Spektakel für ungefähr 30 Tabellen á 10-20 Zeilen machen muss. Daher bin ich auf der Suche nach einer globaleren Lösung.

Lässt sich das mit einer parbox oder ähnlichem lösen?

Danke übrigens für den Tipp mit dem \centering :)

richi-rich
30-07-2013, 08:44
Problem wurde hier gelöst: http://latex-community.org/forum/viewtopic.php?f=45&t=23626

esdd
30-07-2013, 14:23
Hallo,

alternativer Vorschlag:


\documentclass[parskip=full-]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

\usepackage[T1]{fontenc}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\centering}m{#1}}
\newcolumntype{N}[1]{>{\begin{tenum}[resume*=#1]\item}X<{\end{tenum}}}
\newcolumntype{S}[2]{>{\begin{tenum}[series=#1,start=#2]\item}X<{\end{tenum}}}


\usepackage{enumitem}
\newlist{tenum}{enumerate}{1}
\setlist[tenum]{nosep,before=\begin{minipage}[t]{\linewidth},after=\end{minipage},
,leftmargin=*,label=\alph*.~,labelsep*=0pt}

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


\begin{document}

\begin{tabularx}{\textwidth}{|N{aufg}|C{2.5cm}|C{2 .5cm}|C{2.5cm}|}
\hline
\multicolumn{1}{|X|}{\textbf{Fragen}} & Antwort A & Antwort B - braucht auch etwas mehr Platz &
\centering{Antwort C} \tabularnewline
\hline
\multicolumn{1}{|S{aufg}{5}|}{langer Text langer Text langer Text langer Text langer Text} & 1 & 2 & 3 \tabularnewline
\hline
kurzer Text & 1 & 2 & 3 \tabularnewline
\hline
kurzer Text & 1 & 2 & 3 \tabularnewline
\hline
langer Text langer Text langer Text langer Text langer Text langer Text langer Text & 1 & 2 & 3 \tabularnewline
\hline
\end{tabularx}

\begin{tabularx}{\textwidth}{|N{aufg}|C{2.5cm}|C{2 .5cm}|C{2.5cm}|}
\hline
\multicolumn{1}{|X|}{\textbf{Fragen}} & Antwort A & Antwort B - braucht auch etwas mehr Platz &
\centering{Antwort C} \tabularnewline
\hline
\multicolumn{1}{|S{aufg}{9}|}{langer Text langer Text langer Text langer Text langer Text} & 1 & 2 & 3 \tabularnewline
\hline
kurzer Text & 1 & 2 & 3 \tabularnewline
\hline
kurzer Text & 1 & 2 & 3 \tabularnewline
\hline
langer Text langer Text langer Text langer Text langer Text langer Text langer Text & 1 & 2 & 3 \tabularnewline
\hline
\end{tabularx}

\end{document}

Gruß
Elke

PS: Wenn in obigem Code in der Definition der Spalte C das m zu einem p geändert wird, kann man die unterschiedliche Ausrichtungswirkung am Tabellenkopf sehen.