Die X-Spalte scheint nach Blocksatz auszurichten, das führt zu großen Abständen zwischen den Wörtern.

alt text

Ich habe einen Code für die Zentrierung von X-Spalten gefunden, indem ein neues Spaltenformat erstellt wird. Leider wird eine zusätzlich Zeile eingefügt, wenn \centering gegen \flushleft austausche.

alt text

Code

\documentclass[oneside]{scrbook}
\usepackage[utf8]{inputenc}

\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Z}{>{\flushleft\let\newline\\\arraybackslash\hspace{0pt}}X}

\begin{document}

\begin{table}
  \caption{Eine Tabelle}
   \begin{tabularx}{\textwidth}{p{0.05\textwidth}Zp{0.13\textwidth}p{0.13\textwidth}} \toprule
    AA      & Succinat-Dehydrogenase, Flavoprotein-Untereinheit      & CC      & DD            \\
    AA      & BB      & CC      & DD
    \\ \bottomrule
  \end{tabularx}
\end{table}
\end{document}

gefragt 16 Sep '13, 18:45

Bettina's gravatar image

Bettina
665181923
Akzeptiert-Rate: 25%

bearbeitet 23 Sep '13, 13:06

esdd's gravatar image

esdd
17.8k284257


Nimm \raggedright anstatt \flushleft. Letzteren Befehl gibt es nur indirekt: er wird aufgerufen, wenn man die Umgebung \begin{flushleft} aufruft. Du siehst denselben vertikalen Weißraum, den die Umgebung auch einfügt.

Mit \raggedright erfolgt übrigens keine Worttrennung mehr. Wenn man die im Flattersatz dennoch möchte, kann man das Paket ragged2e laden und statt dessen \RaggedRight verwenden (Dank an @Mico für die Erinnerung). Es hätte außerdem den Vorteil, dass man sich \arraybackslash sparen könnte (Danke an @Herbert für den Hinweis), dazu gleich mehr.

Eine Bemerkung zur Definition des Spaltentyps Z (und Dank an @saputello für die Erinnerung):

\newcolumntype{Z}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}X}

Da die Anweisungen \raggedright, \raggedleft und \centering den Befehl \\ umdefinieren, funktioniert er nicht mehr als Ende einer Tabellenzeile, wenn man z.B.

\newcolumntype{Z}{>{\raggedright}X}

verwenden würde und man müsste dann eine Tabellenzeile mit \tabularnewline einleiten. Da das unbequem ist, verwendet man oft

\newcolumntype{Z}{>{\raggedright\arraybackslash}X}

\arraybackslash stellt die Tabellenfunktion von \\ wieder bereit. In der vorliegenden Definition wird außerdem die von \raggedright, \raggedleft bzw. \centering vorgenommene Definition in \newline gespeichert, bevor es durch \arraybackslash wieder die Tabellenbedeutung erhält, damit man in der entsprechenden Tabellenzelle immer noch eine neue Zeile beginnen kann:

\newcolumntype{Z}{>{\raggedright\let\newline\\\arraybackslash}X}

Das \hspace{0pt} soll wohl Trennung des ersten Worts in der Tabelle ermöglichen, siehe Warum passiert in dieser Tabellen-Zelle keine Silbentrennung?

Permanenter link

beantwortet 16 Sep '13, 18:49

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 24 Sep '13, 10:26

3

Kleine Zusatzbemerkung: Falls Wortumbruch in der linksbündigen Spaltenumgebung erwünscht/erlaubt sein soll, ist es am besten wenn man das ragged2e Paket lädt und dann \RaggedRight anstatt \raggedright verwendet.

(17 Sep '13, 07:07) Mico

@Mico @saputello Danke für die Anregungen. Ich hab sie in die Antwort übernommen.

(18 Sep '13, 11:38) cgnieder
2

außerdem kann man sich bei \RAggedRight das \arraybackslash sparen.

(24 Sep '13, 09:21) Herbert

Und mit \usepackage[raggedrightboxes] werden automagisch alle p-Spalte, \parboxen, minipages und \marginpars mit \RaggedRight gesetzt.

(24 Okt '13, 22:28) Martin Schröder
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×256
×32

gestellte Frage: 16 Sep '13, 18:45

Frage wurde gesehen: 21,201 Mal

zuletzt geändert: 24 Okt '13, 22:28