Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Zelle vertikal zentrieren in tabularx

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88

    Zelle vertikal zentrieren in tabularx

    Hallo zusammen,

    es handelt sich um ein oft diskutiertes Problem, bislang habe ich jedoch noch keine Lösung gefunden: Ich möchte in einer tabularx-Tabelle einen Zelleinhalt vertikal zentrieren. Laut Doku lässt sich dies nicht über \newcolumntype erreichen, was letztlich auch logisch ist: Grundsätzlich entspricht eine X-Spalte p{}, ich hätte sie aber gerne als m{}, also vertikal zentriert. Dies lässt sich nicht über einen auf X basierenden newcolumntype erreichen. Die Doku empfiehlt daher: \renewcommand{\tabularxcolumn}[1]{m{#1}}.

    Aber: Ich möchte meine X-Spalten nicht immer vertikal zentriert haben, sondern nur in speziellen Situationen. Wenn ich den renewcommand in der Präambel nutze, gilt die Umdefinition jedoch immer.

    Ich freue mich auf Vorschläge!

    Gruß
    Sebastian

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von trustee Beitrag anzeigen
    es handelt sich um ein oft diskutiertes Problem, bislang habe ich jedoch noch keine Lösung gefunden: Ich möchte in einer tabularx-Tabelle einen Zelleinhalt vertikal zentrieren. Laut Doku lässt sich dies nicht über \newcolumntype erreichen, was letztlich auch logisch ist: Grundsätzlich entspricht eine X-Spalte p{}, ich hätte sie aber gerne als m{}, also vertikal zentriert. Dies lässt sich nicht über einen auf X basierenden newcolumntype erreichen. Die Doku empfiehlt daher: \renewcommand{\tabularxcolumn}[1]{m{#1}}.

    Aber: Ich möchte meine X-Spalten nicht immer vertikal zentriert haben, sondern nur in speziellen Situationen. Wenn ich den renewcommand in der Präambel nutze, gilt die Umdefinition jedoch immer.
    dann definierst du es nach einer Tabelle wieder um ...

    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88
    Grundsätzlich eine gute Idee, aber ich müsste den Befehl dann innerhalb von Tabellen um- und wieder zurückdefinieren, da sich mein Wunsch nach vertikaler Zentrierung auch auf einzelne Zellen bezieht. Und ein renewcommand innerhalb einer Tabelle liefert "missplaced \omit"-Fehlermeldungen. Wie kann ich Code innerhalb einer Tabelle bringen?

    Sebastian

  4. #4
    Registrierter Benutzer Avatar von Stefan_K
    Registriert seit
    05.04.2007
    Ort
    Hamburg
    Beiträge
    3.534

    \multicolumn

    Hallo Sebastian,

    für spezielle Formatierung einzelner Zellen kannst Du \multicolumn verwenden. Über eine einzige Spalte, als letzten Parameter für den Inhalt kannst Du eine \parbox angeben, dessen Inhalt Du vertikal zentrieren lässt.

    Viele Grüße,

    Stefan

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88
    Hallo Stefan,

    vielen Dank für den Tipp, das hatte ich auch versucht. Das Problem ist jedoch, dass der Inhalt der parbox zwar vertikal zentriert werden kann, aber ja nicht die parbox in der Zelle selbst. Somit ist mein Problem damit nicht gelöst. Hier ein MB, wobei die Texte "ZZZ" vertikal zentriert werden sollen.

    Code:
    \documentclass{scrbook}
    \usepackage{tabularx}
    % Zeilenumbruch und linksbündig in tabularx:
    \newcolumntype{V}{>{\raggedright\arraybackslash}X}
    % Zeilenumbruch und zentriert in tabularx:
    \newcolumntype{Z}{>{\centering\arraybackslash}X}
    \usepackage{booktabs}
    \begin{document}
    \begin{table}
    \begin{tabularx}{\linewidth}{VZZ}
    \toprule
     & \textbf{Head 1}: Unsicherheit A & Head 2: Unsicherheit B\\
     \cmidrule(lr){1-3}
     \textbf{Head 3}: Aktives Verhalten, Beeinflussung von Wahrscheinlichkeitsurteilen & \multicolumn{2}{c}{\textbf{ZZZ}}\\
    \cmidrule(lr){1-3}
    Head 4: Passives Verhalten, fixe Wahrscheinlichkeitsurteile & \multicolumn{2}{c}{ZZZ}\\
    \bottomrule
    \end{tabularx}
    \end{table}
    \end{document}
    Die Parbox hilft dabei nicht, glaube ich. Oder irre ich mich? Mein Test führte nicht zu einer vertikalen Zentrierung.

    Gruß
    Sebastian

  6. #6
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von trustee Beitrag anzeigen
    Die Parbox hilft dabei nicht, glaube ich. Oder irre ich mich? Mein Test führte nicht zu einer vertikalen Zentrierung.
    Code:
    \documentclass{scrbook}
    \usepackage{array,ragged2e,calc}
    % Zeilenumbruch und linksbündig in tabularx:
    \newcolumntype{V}{>{\RaggedRight}X}
    % Zeilenumbruch und zentriert in tabularx:
    \newcolumntype{P}{>{\RaggedRight}p{0.33\linewidth-2\tabcolsep}}
    \newcolumntype{M}{>{\RaggedRight}m{0.33\linewidth-2\tabcolsep}}
    \newcolumntype{C}{@{}>{\Centering}m{0.66\linewidth-2\tabcolsep}@{}}
    \usepackage{booktabs}
    \begin{document}
    
    \begin{tabular}{@{}MPP@{}}\toprule
     & \textbf{Head 1}: Unsicherheit A & Head 2: Unsicherheit B\\ \midrule
     \textbf{Head 3}: Aktives Verhalten, Beeinflussung von Wahrscheinlichkeitsurteilen 
     	& \multicolumn{2}{C}{\textbf{ZZZ}}\\\midrule
    Head 4: Passives Verhalten, fixe Wahrscheinlichkeitsurteile 
    	& \multicolumn{2}{C}{ZZZ}\\\bottomrule
    \end{tabular}
    
    \end{document}
    Herbert

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88
    Wie von Herbert bekannt: eine wunderbare Lösung! So werde ich es machen - tabularx brauche ich bei gerade mal drei gleich großen Spalten tatsächlich nicht.

    Vielen Dank!
    Sebastian

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •