Textposition in Tabelle (insbesondere vertikal)

Tabellen und Grafiken erstellen und anordnen


ChrisW
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 25. Mai 2016, 12:44
Wohnort: Passau Land

Textposition in Tabelle (insbesondere vertikal)

Beitrag von ChrisW »

Hallo zusammen,

ich hab mich schon durch diverse Threads gekämpft, aber nicht wirklich eine Lösung gefunden.
Ich habe (i.A. mehrzeilige) Zelleinträge, die ich hinsichtlich der Ausrichtung beeinflussen möchte. Ich verwende tabularx und kenne die Möglichkeit der Definition von Spaltentypen. Was mir fehlt ist ein Spaltentyp analog zu "X", der vertikal zentriert ist, aber variabel in der Breite. Wenn man m{...} verwendet oder einen Typ davon ableitet, ist ja eine Breite anzugeben.
Gibt es analog zu \raggedleft, \centering, \raggedright denn keine Befehle für die 3 vertikalen Ausrichtungsmöglichkeiten, um damit dann alle 9 Positionen innerhalb einer Zelle ansteuern zu können?

Besten Dank im Voraus
Christian

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Hallo.

Wenn du schon viele Threads durchgearbeitet hast, hast du sicherlich auch bemerkt, dass immer ein Minimalbeispiel (Link beachten!) gefordert wird...

Wenn du mit der m-Spaltendefinition zufrieden bist, aber nur die Länge nicht einstellen kannst oder möchtest, kannst du die X-Spalten so einstellen, dass sie auf m aufbauen. Das funktioniert an geeigneter Stelle mittels (siehe auch [d]tabularx[/d])
\renewcommand{\tabularxcolumn}[1]{m{#1}}
Für alles weiterführende: Minimalbeispiel
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen.

ChrisW
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 25. Mai 2016, 12:44
Wohnort: Passau Land

Beitrag von ChrisW »

Hallo Markus,

danke für die schnelle (funktionierende) Antwort.
durch die Umdefinition von "X" ist natürlich die ursprüngliche Definition "verloren". Kann man diese irgendwie zwischenspeichern oder kopieren?

Besten Dank nochmal
Christian

Gast

Beitrag von Gast »

Wenn Du die Änderung lokal durchführst, ist sie nach dem Ende der jeweiligen Gruppe wieder aufgehoben. Ansonsten steht die ursprüngliche Definition auch in der [d]tabularx[/d]-Anleitung, so dass sie problemlos wiederhergestellt werden kann. Wenn Dir das als Antwort nicht reicht, musst Du erklären, warum und solltest das an einem Minimalbeispiel, auf das Du nicht ohne Grund hingewiesen wurdest, auch zeigen.

ChrisW
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 25. Mai 2016, 12:44
Wohnort: Passau Land

Beitrag von ChrisW »

Also gut, Ihr seid aber hartnäckig :D
Hier also ein Minimalbeispiel, das hoffentlich auch läuft. Bei mir funktioniert aktuell das Overleaf-Dingens nicht, weshalb ich es nicht online probieren kann.
\NeedsTeXFormat{LaTeX2e}
\documentclass[a4paper, oneside,numbers=noenddot]{scrartcl}
  	
	\usepackage[latin1]{inputenc}
	\usepackage[T1]{fontenc}
		
	\usepackage{tabularx}
	\usepackage{booktabs}

\renewcommand{\tabularxcolumn}[1]{m{#1}}                  % 'X'-Spalte vertikal zentriert
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}        % 'X' mit linksbündigem Flattersatz

\begin{document}

\begin{tabularx}{\textwidth}{M{70mm}Y}
	Hier ist etwas mehr Text als in eine Zeile passt & Hier kann schon mal was Längeres stehen, genau weiß man es aber nicht immer\\
	Noch einmal etwas längerer Text & bla blumpfl\\
\end{tabularx}


\end{document}
Der Plan wäre, diverse Spaltentypen global zu definieren:
1. Eine Variante von 'X', die vertikal zentriert ist und Flattersatz hat (im Beispiel oben wäre das 'Y')
2. 'X' wie es standardmäßig definiert ist (oben ausgerichtet)

Problem dabei scheint zu sein, dass dafür \tabularxcolumn gleichzeitig als p{} und m{} definiert sein müsste, da bei abgeleiteten Spaltentypen auch der Ursprungstyp vorhanden sein muss.
Gibt es hierfür eine (einfache) Lösung?

Besten Dank im Voraus
Christian :D :D :D

Gast

Beitrag von Gast »

Dir ist hoffentlich klar, wie eine m- und ein p-Spalte nebeneinander ausgerichtet werden? Es ist nämlich keineswegs so, dass dann der Inhalt der m-Spalte mittig zum Inhalt der p-Spalte ausgerichtet wäre. LaTeX richtet immer Grundlinien aneinander aus. Bei einer Zelle in einer p-Spalte ist die Grundlinie der Zelle auf Höhe der Grundlinie der obersten Textzeile des Zelleninhalts. Bei einer m-Spalte in der Mitte des Zelleninhalts und bei einer b-Spalte auf Höhe der Grundlinie der untersten Textzeile des Inhalts. Hier einmal ein paar Beispiel:
\documentclass{article}

\usepackage{array}

\begin{document}
\begin{tabular}{p{4cm}m{4cm}b{4cm}}
  p-Spalte & m-Spalte & b-Spalte \\
  \hline
  p-Spalte mit ein ganz klein wenig mehr Text
           & m-Spalte mit ein ganz klein wenig mehr Text
                      & b-Spalte mit ein ganz klein wenig mehr Text \\
  \hline
  p-Spalte mit ein ganz klein wenig mehr Text
           & m-Spalte & b-Spalte \\
  \hline
  p-Spalte 
            & m-Spalte mit ein ganz klein wenig mehr Text
                      & b-Spalte \\
  \hline
  p-Spalte & m-Spalte
                      & b-Spalte mit ein ganz klein wenig mehr Text \\
\end{tabular}
\end{document}
Je, nachdem, was Du willst, wirst Du also mjt unterschiedlichen Spaltentypen nebeneinander eher schlecht zum Ziel kommen. Meist ist es besser, nur m-Spalten oder nur p-Spalten zu verwenden. Also beispielsweise:
\documentclass{article}

\usepackage{array}

\begin{document}
\begin{tabular}{m{4cm}m{4cm}m{4cm}}
  m-Spalte & m-Spalte & m-Spalte \\
  \hline
  m-Spalte mit ein ganz klein wenig mehr Text
           & m-Spalte mit ein ganz klein wenig mehr Text
                      & m-Spalte mit ein ganz klein wenig mehr Text \\
  \hline
  m-Spalte mit ein ganz klein wenig mehr Text
           & m-Spalte & m-Spalte \\
  \hline
  m-Spalte 
            & m-Spalte mit ein ganz klein wenig mehr Text
                      & m-Spalte \\
  \hline
  m-Spalte & m-Spalte
                      & m-Spalte mit ein ganz klein wenig mehr Text \\
\end{tabular}
\end{document}

ChrisW
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 25. Mai 2016, 12:44
Wohnort: Passau Land

Beitrag von ChrisW »

Hallo Gast,

danke für die Erläuterung . Das mit der gleichzeitigen Verwendung vom m- und p-Spalten habe ich auch schon herausgefunden (nach etlichem Herumprobieren und googeln). Ich habe auch nicht vor, diese Typen innerhalb einer Tabelle zu mischen. Innerhalb eines Dokumentes können (je nach Einsatzzweck) jedoch mal p- und mal m-Tabellen nützlich sein.
Nachdem es ja die Möglichkeit gibt, eigene Spaltentypen zu definieren, wollte ich das auch global machen und mir damit die Tabellen-Definition vereinfachen ... ohne immer irgendwelche X-Spalten auf 'm' umzudefinieren und dann wieder auf 'p' zurück.
Aber dies ist anscheinend nicht möglich.
Insgesamt müsste da mal jemand ein neues Tabellenpaket schreiben, mit dem die Markmale
  • - horizontale Ausrichtung (Blocksatz, linksbündig, rechts, zentriert, an Einheit/Dezimaltrenner, ...)
    - vertikale Ausrichtung
    - Spaltenbreite (fester Wert, variabel)
    - Zeilenhöhe (fester Wert, automatisch)
getrennt voneinander eingestellt werden können. Warum gibt es kein \top, \bottom, \vcentering oder dergleichen?

Für den unbedarften Office-User, der gewohnt ist, die Zellausrichtung mit einen Klick einstellen zu können, ist das etwas ungewohnt und unverständlich.

Naja, trotzdem Danke für die Hilfe und die Erläuterung dazu.

Beste Grüße
Christian

Gast

Beitrag von Gast »

Es ist sinnvoll, ein einheitliches Design innerhalb eines Dokuments durchzuziehen. Und wenn man es doch anders haben will, hindert Dich niemanden daran, Befehle zum Umschalten zwischen unterschiedlichen Ausrichtungen oder auch Tabellenumgebungen, die diese Umschaltungen automatisch vornehmen oder auch Tabellenumgebungen, die über key=value-Optionen konfigurierbar sind zu definieren. LaTeX ist ja kein Office-Programm, bei dem man durch wildes Herumklicken mitten im Dokument Einstellungen beliebig mischt, sondern eine erweiterbare Markup-Sprache. Gerade zum Thema Tabellen existieren bereits eine große Vielfalt an Paketen.

Wobei man eigentlich auch bei Office-Programmen solches Herumgeklicke besser bleiben lässt und stattdessen mit Absatz- und Zeichenvorlagen arbeitet, die man sich vor Beginn der Arbeit wohlüberlegt hat.

Antworten