Seite 1 von 2

Vertikale Ausrichtung in tabularx-Tabellen

Verfasst: Mo 1. Dez 2014, 11:24
von Robert Terwilliger
Hallo zusammen,

ich würde gerne die vertikale Ausrichtung in einer Tabelle ändern. Ich fürchte, das folgende Beispiel ist nicht mehr ganz so minimal, trotzdem.
\documentclass{scrartcl}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{multirow}
\usepackage{numprint}
\usepackage{polyglossia}
\usepackage{ragged2e}
\usepackage{tabularx}

\captionsetup{labelfont = {small, bf}}
\captionsetup{textfont  =  small     }

\setdefaultlanguage[latesthyphen=true, babelshorthands=true]{german}


\begin{document}

 \begin{table}
  \setlength{\extrarowheight}{0.75ex}
  \centering\sffamily\small
  \captionabove[Test"|tabelle]{Tabelle zum Testen von vertikalen Aus"|richtungen}\label{Tab:Test}
  \begin{tabularx}{0.4\linewidth}{>{\RaggedRight\arraybackslash}Xrr}
   \toprule
   \multicolumn{1}{c}{\multirow{2}{*}{\textbf{Merk"|mal}}} & \multicolumn{2}{c}{\textbf{Kategorie}}        \tabularnewline 
                                                           & \multicolumn{1}{c}{A} & \multicolumn{1}{c}{B} \tabularnewline
   \midrule
   Lorem ipsum\dotfill                                     & \numprint{123456}     & \numprint{123456}     \tabularnewline
   Lorem ipsum dolor sit amet\dotfill                      & \numprint{654321}     & \numprint{654321}     \tabularnewline
   \bottomrule
  \end{tabularx}
 \end{table}

\end{document}
führt innerhalb der Tabelle zu:

[table]
[tr][td]Lorem ipsum... [/td][td]123 456[/td][td]123 456[/td][/tr]
[tr][td]Lorem ipsum [/td][td]654 321[/td][td]654 321[/td][/tr]
[tr][td]dolor sit amet..[/td][td] [/td][td] [/td][/tr]
[/table]

Ich hätte aber gerne:

[table]
[tr][td]Lorem ipsum... [/td][td]123 456[/td][td]123 456[/td][/tr]
[tr][td]Lorem ipsum [/td][td] [/td][td] [/td][/tr]
[tr][td]dolor sit amet..[/td][td]654 321[/td][td]654 321[/td][/tr]
[/table]

Kurz: eine tabularx-Tabelle, die in der X-Spalte oben ausgerichtet ist und in den r-Spalten unten.

Ich habe es mit
b{3cm}
stat
r
probiert, aber das führte nicht zum gewünschten Ergebnis.

Alles was ich dazu finden konnte, beschäftigt sich mit der Frage, wie man die Ausrichtung der X-Spalte ändert. (Aber das ist nicht mein Ziel.)

Irgendjemand eine kreative Idee?

Danke

Robert T.

Verfasst: Mo 1. Dez 2014, 11:48
von u_fischer
Alles was ich dazu finden konnte, beschäftigt sich mit der Frage, wie man die Ausrichtung der X-Spalte ändert. (Aber das ist nicht mein Ziel.)
Doch das ist es. Die Grundlinie der Zeilen geht entlang der r-Spalten, und du möchtest, dass die untere Zeile der X-Spalten auf dieser Grundlinie sitzt.
\renewcommand{\tabularxcolumn}[1]{b{#1}}

Unterschiedliche vertikale Ausrichtung in tabularx-Tabellen

Verfasst: Mo 1. Dez 2014, 14:05
von Robert Terwilliger
Ah, okay. Da hatte ich die Funktion von
b{width}
grundlegend missverstanden. Danke!

In meinem eigentlichen Text wird das Ganze jetzt dadurch verkompliziert, dass ich noch weitere Spalten habe, die aber oben ausgerichtet werden sollen (und deren Breite vom Text abhängt). Also in etwa so etwas wie
\documentclass{scrartcl}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{multirow}
\usepackage{numprint}
\usepackage{polyglossia}
\usepackage{ragged2e}
\usepackage{tabularx}

\captionsetup{labelfont = {small, bf}}
\captionsetup{textfont  =  small     }

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

\setdefaultlanguage[latesthyphen=true, babelshorthands=true]{german}


\begin{document}

 \begin{table}
  \setlength{\extrarowheight}{0.75ex}
  \centering\sffamily\small
  \captionabove[Test"|tabelle]{Tabelle zum Testen von vertikalen Ausrichtungen}\label{Tab:Test}
  \begin{tabularx}{0.5\linewidth}{l>{\RaggedRight\arraybackslash}Xrr}
   \toprule
   \multicolumn{1}{c}{\multirow{2}{*}{\textbf{Vor"|spann}}} & \multicolumn{1}{c}{\multirow{2}{*}{\textbf{Merk"|mal}}} & \multicolumn{2}{c}{\textbf{Kategorie}}        \tabularnewline 
                                                            &                                                         & \multicolumn{1}{c}{A} & \multicolumn{1}{c}{B} \tabularnewline
   \midrule
   Lorem                                                    & ipsum\dotfill                                           & \numprint{123456}     & \numprint{123456}     \tabularnewline
   Lorem                                                    & ipsum dolor sit amet\dotfill                            & \numprint{654321}     & \numprint{654321}     \tabularnewline
   \bottomrule
  \end{tabularx}
 \end{table}

\end{document}
Lorem soll aber dabei jeweils oben ausgerichtet sein. Tabellen und Auszeichnunssprachen – a never ending story.

Robert T.

Verfasst: Mo 1. Dez 2014, 15:48
von u_fischer
Wenn du Zeilen an mehr als einer "Grundlinie" entlang ausrichten willst, wird es immer kompliziert und die Lösungen hängen stark vom Einzelfall ab. Wenn du z.B. weißt, dass dein lorem zwei Zeilen hoch soll, kannst du z.B. einfach
\raisebox{\dimexpr2\ht\strutbox+2\dp\strutbox}{Lorem} 


benutzen. In anderen Fällen kann man die vertikale Position mit tikzmark abspeichern und nutzen. Manchmal funktionieren auch innere Tabellen.

Verfasst: Di 2. Dez 2014, 11:49
von Robert Terwilliger
Da ich mit tabularx arbeite, weiß ich vorher nicht wie hoch die Zeile ist. (Zumal ich Fein- und Grobheiten des Layouts wie etwa die Schrift noch gar nicht festgelegt habe. Die Tabelle wird automatisch erzeugt und ist ziemlich lang; ich habe auch keine Lust das im Nachhinein per Hand nachzukucken.)

Im konkreten Fall habe ich mich entschlossen, den Vorspann einfach wegzulassen. Das geht und erscheint mir derzeit als die deutlich einfachste Lösung.

Danke für die Hilfe!

Robert T.

Umgebrochene Zeilen umrücken in tabularx-Tabelle

Verfasst: Do 4. Dez 2014, 16:35
von Robert Terwilliger
Noch mal dasselbe Beispiel, eine vollkommen andere Frage.

Gibt es die Möglichkeit, umgebrochene X-Spalten automatisch einzurücken? Im Ergebnis also so etwas wie

---
Tabellenüberschrift
---
xxx [nicht umgebrochene Zeile]
---
xxx [umgebrochene Zeile]
_xx
---
xxx [mehrfach umgebrochene Zeile]
_xx
_xx
---

---

(wobei der Unterstrich die Einrückung symbolisieren soll).

Ich habe bis jetzt etwas aufgeschnappt mit einem negativen
parindent
, aber das bezog sich wohl auf die Tabelle als Ganzes.

Robert T.

Verfasst: Do 4. Dez 2014, 16:50
von u_fischer
\documentclass[12pt]{article}
\usepackage{lipsum,array}
\begin{document}
\begin{tabular}{>{\everypar{\hangindent=1cm\hangafter=1}}p{10cm}}
\lipsum[1-2]
\end{tabular}


\end{document}

Umgebrochene Zeilen umrücken in tabularx-Tabelle

Verfasst: Di 9. Dez 2014, 14:25
von Robert Terwilliger
An sich sehr schön und klappt auch mit tabularx.

Allerdings führt
\documentclass[12pt]{article}

\usepackage{lipsum,array,numprint,tabularx}


\begin{document}

 \begin{tabularx}{\linewidth}{>{\everypar{\hangindent=1cm\hangafter=1}}Xr}
  \lipsum[1] & \numprint{123456} \tabularnewline
  \lipsum[2] & \numprint{654321} \tabularnewline
 \end{tabularx}

 \lipsum[1]

\end{document}
dazu, dass die Tabelle rechts übersteht. \textwidth statt \linewidth liefert hier dasselbe Resultat. Es liegt auch nicht an der zweiten Spalte, die habe ich nur hinzugefügt, weil es für mich praxisnäher erschien.

Robert T.

Umgebrochene Zeilen umrücken in LTXtable-Tabelle

Verfasst: Di 9. Dez 2014, 14:32
von Robert Terwilliger
Nachtrag: Mit LTXtable klappt es gerade nicht.
\documentclass[12pt]{article}

\usepackage{lipsum,array,numprint,ltxtable}

\begin{filecontents}{Test-Tabelle.tex}
 \begin{longtable}{>{\everypar{\hangindent=1cm\hangafter=1}}Xr}
  \lipsum[1] & \numprint{123456} \tabularnewline
  \lipsum[2] & \numprint{654321} \tabularnewline 
 \end{longtable}
\end{filecontents}


\begin{document}

 \LTXtable{\linewidth}{Test-Tabelle.tex}

 \lipsum[1]

\end{document}
Robert T.

Probleme mit Ziffer in erster Spalte

Verfasst: Mo 19. Okt 2015, 09:53
von Robert Terwilliger
So schön die Lösung an sich ist, hier noch ein Problem und zwar, wenn die erste Spalte mit einer Ziffer beginnt. Folgendes Minimalbeispiel:
\documentclass{article}

\usepackage{ragged2e}
\usepackage{tabularx}

\begin{document}
 
 \begin{tabularx}{\linewidth}{>{\RaggedRight\everypar{\hangindent=0.2em\hangafter=1}}Xr}
  1    & Test \tabularnewline
  Test & 1    \tabularnewline
 \end{tabularx}

\end{document}
führt bei mir zu
| Test
Test | 1

R.