Vertikale Ausrichtung in tabularx-Tabellen Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Robert Terwilliger

Vertikale Ausrichtung in tabularx-Tabellen

Beitrag 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.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}}

Robert Terwilliger

Unterschiedliche vertikale Ausrichtung in tabularx-Tabellen

Beitrag 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.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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.

Robert Terwilliger

Beitrag 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.

Robert Terwilliger

Umgebrochene Zeilen umrücken in tabularx-Tabelle

Beitrag 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.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}

Robert Terwilliger

Umgebrochene Zeilen umrücken in tabularx-Tabelle

Beitrag 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.

Robert Terwilliger

Umgebrochene Zeilen umrücken in LTXtable-Tabelle

Beitrag 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.

Robert Terwilliger

Probleme mit Ziffer in erster Spalte

Beitrag 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.

Antworten