Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Tabelle mit zentriertem Text und manuellen Zeilenumbrüchen innerhalb Zellen

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.06.2009
    Beiträge
    38

    Unhappy Tabelle mit zentriertem Text und manuellen Zeilenumbrüchen innerhalb Zellen

    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.

    Code:
    \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:


  2. #2
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    Nimm statt \newline entweder \\ oder \par, dann klappts.
    (Frag mich grad nicht nach dem Grund, ich kanns leider nicht erklären.)

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.02.2010
    Beiträge
    685
    Hmm. Mit \\ funktioniert es (bei mir) erwartungsgemäß nicht, mit \par interessanterweise schon.

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    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.

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.02.2010
    Beiträge
    685
    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(!).

  6. #6
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.043
    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:

    Code:
    \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:

    Code:
    \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}

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.06.2009
    Beiträge
    38
    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!

  8. #8
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.488
    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
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •