PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit zentriertem Text und manuellen Zeilenumbrüchen innerhalb Zellen



romanrt
24-02-2010, 09:09
Hallo zusammen,

ich versuche eine Tabelle zu erstellen, in der manuellen Zeilenumbrüche innerhalb von Zellen vorkommen. Dabei soll der Inhalt der Zellen jedoch zentriert bleiben. Ich habe inzwischen eine Möglichkeit gefunden, wie ich das ohne |c| im Tabellenheader hinbekomme, da diese Option ja keine Zeilenumbruch innerhalb der Zelle erlaubt. Also habe ich jetzt \centering und |X| verwendet (s. Minimalbsp.).

Das Problem ist allerdings, dass in den Zellen in denen tatsächlich ein Zeilenumbruch stattfindet, die Zentrierung irgendwie nicht mehr zu den anderen passt. Unglücklicherweise sticht das bei meiner Tabelle eben sofort ins Auge.

Vielleicht hat jemand eine Idee.



\begin{table}[htb]
\centering
\begin{tabularx}{\textwidth}{|l|>{\centering}X|>{\centering}X|>{\centering}X|>{\centering}X|>{\centering\arraybackslash}X|}
\hline
& 1. CW \emph{r} & 2. CW \emph{a} & 3. CW \emph{s} & 4. CW \emph{t} & \textcolor{blue}{Paritätswort} \\
\hline \hline
LSB & 0 & 1 & 1 & 0 & \textcolor{blue}{1} \\
& 1 & 0 & 1 & 0 & \textcolor{blue}{1} \\
& 0 \newline gerade! & 0 & \textbf{\textcolor{red}{1}} \newline Fehlerstelle\newline wird geortet & 1 & \textcolor{blue}{0} \\
& 0 & 0 & 0 & 0 & \textcolor{blue}{1} \\
& 1 & 0 & 1 & 1 & \textcolor{blue}{0 }\\
& 1 & 1 & 1 & 1 & \textcolor{blue}{1} \\
MSB & 1 & 1 & 1 & 1 & \textcolor{blue}{1} \\
\hline
\textcolor{red}{Paritätsbit} & \textcolor{red}{0} & \textcolor{red}{1} & \textcolor{red}{1} \newline ungerade! & \textcolor{red}{0} & - \\ \hline
\end{tabularx}
\caption{Fehlererkennung}
\label{tab:Fehlererkennung}
\end{table}


Sieht dann bei mir leider so aus:

http://img202.imageshack.us/img202/530/tabellebsp.jpg

Xenara
24-02-2010, 09:39
Nimm statt \newline entweder \\ oder \par, dann klappts.
(Frag mich grad nicht nach dem Grund, ich kanns leider nicht erklären.)

LuPi
24-02-2010, 09:45
Hmm. Mit \\ funktioniert es (bei mir) erwartungsgemäß nicht, mit \par interessanterweise schon.

Xenara
24-02-2010, 09:59
Grad nochmal ausprobiert, also \\ funktioniert nur, wenn es nicht in der letzten Spalte verwendet wird. Das hatte ich vorhin nicht getestet.
Gut, dass du bestätigst, dass es mit \par geht.

LuPi
24-02-2010, 10:12
Noch ein Hinweis an den OP: Derartige "Kästchengräber" als Tabellen werden typografisch als zweite Wahl betrachtet. Vielleicht wirfst Du mal einen Blick in die booktabs-Doku und verzichtest dann auf die senkrechten Linien. Nur so als Anregung, obwohl gerade in diesem Bereich (aus dem ich selbst komme) derartige Tabellengestaltungen durchaus sinnvoll sein können(!).

u_fischer
24-02-2010, 10:29
Es gibt drei unterschiedliche (also intern anders definiert) "Beende die Zeile"-Befehle:

- A Beende eine Tabellenzeile
- B Beende eine Zeile innerhalb eine centering/center-Umgebung
- C Beende eine Zeile in einem normalen Absatz.

Normalerweise haben \\ und \newline die Bedeutung "C".

Nach einem \centering-Befehl hat \\ die Bedeutung B und \newline weiterhin die Bedeutung C. Daher funktioniert \newline nicht bei \centering:


\documentclass[12pt]{article}
\begin{document}

{\centering a\\b\newline c \\ d\par}

\end{document}


In einer Tabelle hat \\ erstmal die Bedeutung "A". In Spalten mit \centering wechselt die Bedeutung zu B, in Spalten mit einem anschließenden \arraybackslash wieder zu A. \newline ist von alle dem nicht betroffen und hat weiterhin die Bedeutung C und kann daher mit \centering nicht benutzt werden.

Im wesentlichen gibt es zwei Lösungen um die Befehlsnamenkollision in Tabellen aufzulösen: Du überlässt dem \centering den \\-Befehl und benutzt für das Ende von Tabellenzeilen \tabularnewline. Oder du überträgst zu mindest in der letzten Spalte auf \newline die Bedeutung B, damit der Befehl mit \centering das gewünschte bringt:


\documentclass[12pt]{article}
\usepackage{array}
\begin{document}

\begin{tabular}{>{\centering}p{5cm}>{\centering}p{5cm}}
a\\b\\c & e\\f\tabularnewline\hline
d\\x & v
\end{tabular}

\begin{tabular}{>{\centering}p{5cm}>{\centering\let\newline\\\arraybackslash}p{5cm}}
a\\b\\c & e\newline f\\\hline
d\\x & v
\end{tabular}

\end{document}

romanrt
01-03-2010, 08:06
Vielen Dank für eure Ausführungen. Ich habe mich jetzt für die Variante mit \par entschieden - da ich damit nur die \newlines ersetzen musste.

Die Lösung von Ulrike hat sicherlich Stil und ist korrekt, aber mir erschien \par als Abkürzung zum selben Ergebnis.

¡muchas gracias municipio!

lockstep
05-01-2011, 22:20
Bin nach etlichen Monaten wieder über die Frage "Wie erzeuge ich rechtsbündige Tabellenspalten bestimmter Breite (und mit manueller Umbruchmöglichkeit)?" gestolpert - Ulrikes Antwort ist extrem hilfreich!

lockstep