Tabelle - Einrückung verhindern und Feld mittig ausrichten

Schriftbild, Absätze und Auflistungen einstellen


giztech
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Mo 26. Mai 2014, 21:32

Tabelle - Einrückung verhindern und Feld mittig ausrichten

Beitrag von giztech »

Wie im Minimalbeispiel schon beschrieben hätte ich gerne, dass nach dem Zeilenumbruch während der ganzen Tabelle nicht eingerückt wird.
Zusätzlich soll 'Text B' in der Vertikale mittig bezüglich des mehrzeiligen Texts in der linken Spalte ausgerichtete sein.
\documentclass{scrbook} 
\begin{document}
\begin{center}
\begin{tabular}{p{6cm}ccc}
\hline \rule[-2ex]{0pt}{5.5ex} \bf Bla  & \bf Bla  \\ 
\hline \rule[-2ex]{0pt}{5.5ex} Text über mehrere Zeilen, der ohne Einrückung umgebrochen werden soll  & Text B  \\ 
\hline
\end{tabular}
\end{center} 
\end{document}

Noch so einer

Beitrag von Noch so einer »

Deklariere die Umlaute. Verwende keine veraltete Befehle, für die Du ja auch Warnungen von scrartcl kassierst. Setze keine Leerzeichen, wo Du keine haben willst. Wenn Du vor der ersten und nach der letzten Spalte keinen Spaltenabstand haben willst, musst Du diesen explizit entfernen. Wenn Du vier Spalten deklarierst, solltest Du auch vier Spalten verwenden (ggf. leere Spalten). Wenn Du nur zwei Spalten benötigst, solltest Du auch nur zwei deklarieren. Der Rest geht dann mit Paketen wie booktabs, array und Anweisungen wie \arraystretch:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}

\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{1.75}
\begin{tabular}{@{}m{6cm}ccc@{}}
\toprule
\textbf{Bla}  & \textbf{Bla}  & & \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B & C & D \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
BTW: "umbrochen" ist richtig (siehe DUDEN).

Bitte unbedingt die Anleitungen der verwendeten Pakete lesen! In der booktabs-Anleitung sind beispielsweise alternative Einstellmöglichkeiten für die Abstände zwischen den Tabellenzeilen zu finden.

giztech
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Mo 26. Mai 2014, 21:32

Beitrag von giztech »

Ok, ich habe Deinen Vorschlag meinen Wünschen angepasst:
\documentclass{scrbook}
\usepackage{array}


\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{m{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center} 



\end{document}
Sieht auch schon besser aus, aber der Text 'Spalte 1' und 'Text ohne Zeilenumbruch' werden leider nicht mittig bezüglich der rechten Spalten angezeigt.


Ich habe hier noch eine Möglichkeit gefunden jede Zeile in der Zelle zu zentrieren:
\documentclass{scrbook}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % linksbündig mit Breitenangabe
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentriert mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe

\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{C{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center} 



\end{document}
Wenn man das noch damit kombinieren könnte, dass die Textblöcke horizontal ausgerichtet sind wäre perfekt.

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Mach aus den p halt m.

Wie soll ich das nennen? Phantasie? Intuition? Lust zum Ausprobieren?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Noch so einer

Beitrag von Noch so einer »

Man kann dabei sogar die Spaltenbreite automatisch bestimmen lassen:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage{ltablex}
\newcolumntype{C}{>{\raggedright\arraybackslash}X}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\begin{tabularx}{\linewidth}{p{6cm}CCC}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
Zum Vergleich ruhig auch mal ausprobieren, was passiert, wenn man in der Deklaration der ersten Spalte p{6cm} durch X ersetzt.

giztech
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Mo 26. Mai 2014, 21:32

Beitrag von giztech »

Johannes_B hat geschrieben:Mach aus den p halt m.

Wie soll ich das nennen? Phantasie? Intuition? Lust zum Ausprobieren?
Meinst Du so:
\documentclass{scrbook}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}} % linksbündig mit Breitenangabe
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % zentriert mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}} % rechtsbündig mit Breitenangabe

\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{C{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center}



\end{document}
?
Das funktioniert nicht, dann sind die erste und letzte Zeile der linken Spalte nicht auf der gleichen Höhe wie die rechten Spalten.

Noch so einer

Beitrag von Noch so einer »

Ich sehe gerade, dass ich in einem Beispiel vergessen hatte, die erste Spalte als m-Spalte zu definieren:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage{ltablex}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{C}{>{\raggedright\arraybackslash}X}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabularx}{\linewidth}{m{6cm}CCC}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
Leider funktioniert die Zentrierung in den automatisch angepassten Spalten von ltablex nicht. Man müsste dann nicht automatisch angepasste Spalten verwenden:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{m{6cm}*3{C{6em}}}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\\midrule
Es & geht & auch & kurz. \\
\bottomrule
\end{tabular}
\end{center}
\end{document}

Antworten