Tabelle formatieren

Tabellen und Grafiken erstellen und anordnen


ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Tabelle formatieren

Beitrag von ocir »

Hallo :)

habe zwei kleine Probleme bei Tabellen.

Nummer 1:
Die Tabelle soll so breit sein wie die Textbreite. Spalte 1 soll 4 cm breit sein, Spalte 2 soll 5 cm breit sein und die dritte Spalte soll sich entsprechend dem Text ergeben.
In einigen Zellen wird der Text länge als eine Zeile sein und daher brauche ich 2 Zeilen?! Habe es deshalb mit multirow versucht. Ist das notwendig oder geht es auch anders?
Der Kopf der Tabelle soll zentriert sein, außerdem auch die Wörter "Drehen", "Schleifen" und "Messen". Und nicht nur mittig im Sinne von links, mitte, rechts, sondern komplett mittig, also auch in vertikaler Richtung.
Wie kann ich das machen?

\documentclass[
BCOR=5mm,           % Binderkorrektur von 5mm vorsehen
DIV=10,              % Seite in X Kästchen einteilen (Siehe Koma-Script Guide)
fontsize=12pt,      % Schriftgröße 12 Punkte
oneside,            % Einseitig
parskip,            % Paragraphen nicht einrücken
headsepline,        % Kopfzeile nach unten durch Linie abgrenzen (scrheadings)
plainheadsepline,   % Kopfzeile nach unten durch Linie abgrenzen (scrplain)
plainfootbotline,   % Fußzeile nach unten durch Linie abgrenzen (scrplain)
footsepline,        % Fußzeile nach oben durch Linie abgrenzen (scrheadings)
plainheadtopline,   % Kopfzeile nach oben durch Linie abgrenzen (scrplain)
plainfootsepline,   % Fußzeile nach oben durch Linie abgrenzen (scrplain)
bibliography=totoc, % Literaturverzeichnis ins Inhaltsverzeichnis aufnehmen
listof=totoc,         % Sonstige Verzeichnise ins Inhaltsverzeichnis aufnehmen
fleqn				%gibt Formeln linksbündig aus	
]{scrbook}          % Koma-Script Klasse zum setzen eines Buchs

\usepackage{blindtext}
\usepackage[demo]{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{translator}
\usepackage[labelfont=bf, 
			format=plain, 
			font=small, 
			justification=RaggedRight, 
			singlelinecheck=false]{caption}
\usepackage{scrlayer-scrpage}

\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}
\ohead[\sffamily\scshape\bfseries\large\headmark]
{\sffamily\scshape\bfseries\large\headmark}
\cfoot[\sffamily\thepage]{\sffamily\thepage}

\usepackage{listings}

\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{subcaption}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[inner=3cm,outer=2.0cm,top=2cm,bottom=2.0cm,includeheadfoot]{geometry}

\begin{document}

\mainmatter


\begin{table}
	\centering
	\begin{tabularx}{\textwidth}{p{4cm}|p{5cm}|X}
	\textbf{Bearbeitungsart} & \textbf{Ausführung} & \textbf{Vorteile} \\
	\hline
	Drehen & Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
	\hline
	\multirow{2}{*}{Schleifen}
	& Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
	\cline{2-3}
	& Verstellung des Reitstocks in radialer Richtung & Zylindrizitätskorrektur am Werkstück\\
	\hline
	Messen & Zwischen Spitzen & wenige Messfehler auch nach mehrmaligem Umspannen\\
	\end{tabularx}
	\caption{Anwendungsgebiete ...}
	\label{tab_anwendung_...}
\end{table}

\end{document}


Nummer 2:
Die Tabelle soll so breit sein wie die Textbreite. Spalte 2 soll so breit sein, wie die Wörter "Produkt mit" sind. Das Wort "Patentschutz" soll unterhalb von "Produkt mit" stehen.
Die zwei Spalten "Ja" und "Nein" sollen gleich groß sein, also eben die Hälfte von Spalte 2.
Und Spalte 1 soll halt so groß sein, wie das was halt noch übrig bleibt.
Die Wörter "Suchbegriff", "Produkte mit Patentschutz" sowie "Ja" und "Nein" sollen mittig sein. Außerdem soll alles in den Spalten "Ja" und "Nein" mittig sein.

Hier mein Beispiel, weiter komme ich leider nicht :(
\documentclass[
BCOR=5mm,           % Binderkorrektur von 5mm vorsehen
DIV=10,              % Seite in X Kästchen einteilen (Siehe Koma-Script Guide)
fontsize=12pt,      % Schriftgröße 12 Punkte
oneside,            % Einseitig
parskip,            % Paragraphen nicht einrücken
headsepline,        % Kopfzeile nach unten durch Linie abgrenzen (scrheadings)
plainheadsepline,   % Kopfzeile nach unten durch Linie abgrenzen (scrplain)
plainfootbotline,   % Fußzeile nach unten durch Linie abgrenzen (scrplain)
footsepline,        % Fußzeile nach oben durch Linie abgrenzen (scrheadings)
plainheadtopline,   % Kopfzeile nach oben durch Linie abgrenzen (scrplain)
plainfootsepline,   % Fußzeile nach oben durch Linie abgrenzen (scrplain)
bibliography=totoc, % Literaturverzeichnis ins Inhaltsverzeichnis aufnehmen
listof=totoc,         % Sonstige Verzeichnise ins Inhaltsverzeichnis aufnehmen
fleqn				%gibt Formeln linksbündig aus	
]{scrbook}          % Koma-Script Klasse zum setzen eines Buchs

\usepackage{blindtext}
\usepackage[demo]{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{translator}
\usepackage[labelfont=bf, 
			format=plain, 
			font=small, 
			justification=RaggedRight, 
			singlelinecheck=false]{caption}
\usepackage{scrlayer-scrpage}

\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}
\ohead[\sffamily\scshape\bfseries\large\headmark]
{\sffamily\scshape\bfseries\large\headmark}
\cfoot[\sffamily\thepage]{\sffamily\thepage}

\usepackage{listings}

\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{subcaption}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[inner=3cm,outer=2.0cm,top=2cm,bottom=2.0cm,includeheadfoot]{geometry}

\begin{document}

\mainmatter


\begin{table}
\centering
	\begin{tabularx}{\textwidth}{X|c|c}
	Suchbegriff & \multicolumn{2}{c}{Produkt mit Patentschutz} \\
	\cline{2-3}
				& Ja & Nein\\
	\hline
	\blindtext	&	 & x\\ 
	\end{tabularx}
\end{table}

\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ein Hinweis für eine andere Möglichkeit der Liniengestaltung in Deinen Tabellen: tabsatz.
\documentclass[
BCOR=5mm,           % Binderkorrektur von 5mm vorsehen
DIV=10,             % Seite in X Kästchen einteilen (Siehe Koma-Script Guide)
fontsize=12pt,      % Schriftgröße 12 Punkte
oneside,            % Einseitig
parskip,            % Paragraphen nicht einrücken
headsepline,        % Kopfzeile nach unten durch Linie abgrenzen (scrheadings)
plainheadsepline,   % Kopfzeile nach unten durch Linie abgrenzen (scrplain)
plainfootbotline,   % Fußzeile nach unten durch Linie abgrenzen (scrplain)
footsepline         % Fußzeile nach oben durch Linie abgrenzen (scrheadings)
]{scrbook}          % Koma-Script Klasse zum setzen eines Buchs

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[
	labelfont=bf, 
	format=plain, 
	font=small, 
	justification=RaggedRight, 
	singlelinecheck=false
]{caption}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[inner=3cm,outer=2.0cm,top=2cm,bottom=2.0cm,includeheadfoot]{geometry}
\usepackage{pifont}% für \ding
\usepackage{blindtext}

\newcommand{\cross}{\ding{55}}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}
\begin{table}
	\centering
	\begin{tabularx}{\textwidth}{C{4cm}|p{5cm}|X}
	\textbf{Bearbeitungsart} 
	& \multicolumn{1}{c|}{\textbf{Ausführung}} 
	& \multicolumn{1}{c}{\textbf{Vorteile}} \\
	\hline
	\multirow{2}{*}{Drehen} & Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
	\hline
	\multirow{4}{*}{Schleifen}
	& Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
	\cline{2-3}
	& Verstellung des Reitstocks in radialer Richtung & Zylindrizitätskorrektur am Werkstück\\
	\hline
	\multirow{2}{*}{Messen} & Zwischen Spitzen & wenige Messfehler auch nach mehrmaligem Umspannen\\
	\end{tabularx}
	\caption{Anwendungsgebiete~\dots}
	\label{tab:anwendung}
\end{table}

\begin{table}
	\centering
	\begin{tabularx}{\textwidth}{X|C{1cm}|C{1cm}}
	\multicolumn{1}{c}{Suchbegriff} 
	& \multicolumn{2}{|C{2.5cm}}{Produkt mit Patentschutz} \\
	\cline{2-3}
	           & Ja & Nein\\
	\hline
	\blindtext &    & \cross\\
	\end{tabularx}
\end{table}
\end{document}

Gast

Beitrag von Gast »

\multirow würde ich bei der ersten Tabelle weglassen. Es sieht nicht gut aus, wenn die erste Spalte vertikal zentriert ist, die anderen Spalten aber nicht. Außerdem ist es für das Lesen der Tabelle eher von Nachteil, weil das Auge mehr damit beschäftigt ist, sich vertikal zu orientieren als die Zeilen zu erfassen.

Ebenfalls nachteilig für das Lesen sind die ganzen vertikalen Linien. Und die horizontalen Linien machen das in meinen Augen sehr mächtig. Ich persönlich ziehe es vor, Linien insgesamt auf ein Minimum zu reduzieren und ggf. mit Abständen zu arbeiten. Außerdem kann man natürlich auch gleich \RaggedRight in der Tabelle verwenden, wenn das Paket ohnehin bereits geladen und verwendet wird. \arraybackslash braucht man übrigens auch nur in der letzten Spalte einer Tabelle. Bei Verwendung von \RaggedRight statt \raggedright braucht man es gar nicht. Daher mein Vorschlag für die erste Tabelle:
\documentclass[
BCOR=5mm,           % Binderkorrektur von 5mm vorsehen
DIV=10,             % Seite in X Kästchen einteilen (Siehe Koma-Script Guide)
fontsize=12pt,      % Schriftgröße 12 Punkte
oneside,            % Einseitig
parskip,            % Paragraphen nicht einrücken
headsepline,        % Kopfzeile nach unten durch Linie abgrenzen (scrheadings)
plainheadsepline,   % Kopfzeile nach unten durch Linie abgrenzen (scrplain)
plainfootbotline,   % Fußzeile nach unten durch Linie abgrenzen (scrplain)
footsepline         % Fußzeile nach oben durch Linie abgrenzen (scrheadings)
]{scrbook}          % Koma-Script Klasse zum setzen eines Buchs

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[
   labelfont=bf, 
   format=plain, 
   font=small, 
   justification=RaggedRight, 
   singlelinecheck=false
]{caption}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[inner=3cm,outer=2.0cm,top=2cm,bottom=2.0cm,includeheadfoot]{geometry}
\usepackage{blindtext}

%\usepackage{ragged2e}% wird bereits von caption geladen
\usepackage{booktabs}

\newcommand{\cross}{\ding{55}}

\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}

\begin{document}
\begin{table}
   \centering
   \begin{tabularx}{\textwidth}{@{}L{4cm}p{5cm}X@{}}
   \toprule
   \textbf{Bearbeitungsart} 
   & \textbf{Ausführung}
   & \textbf{Vorteile} \\
   \midrule
   Drehen & Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
   \addlinespace
   Schleifen
   & Zwischen Spitzen & gute Einhaltung von Form- und Lagetoleranzen\\
   & Verstellung des Reitstocks in radialer Richtung & Zylindrizitätskorrektur am Werkstück\\
   \addlinespace
   Messen & Zwischen Spitzen & wenige Messfehler auch nach mehrmaligem Umspannen\\
   \bottomrule
   \end{tabularx}
   \caption{Anwendungsgebiete~\dots}
   \label{tab:anwendung}
\end{table}

\end{document}

ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Beitrag von ocir »

Hallo

Das Beispiel läuft leider nicht. Kannst du bitte noch mal nachschauen? :)

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

Beitrag von markusv »

Das auskommentierte Paket ragged2e muss aktiviert werden.
Wenn es von caption geladen werden sollte, wie Gasts Kommentar nahe legt, weiß ich aber nicht, warum dies so ist.
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:
Help-LaTeX@web.de

Gast

Beitrag von Gast »

caption lädt ragged2e nicht generell. Wird das Paket nicht explizit geladen, verwendet justification=RaggedRight beim ersten LaTeX-Lauf statt \RaggedRight automatisch \raggedright. Es merkt sich aber die Notwendigkeit der Verwendung von ragged2e. Ignoriert man den beim ersten LaTeX-Lauf gemeldeten Fehler, so wird das Paket ab dem zweiten Lauf dann tatsächlich automatisch geladen. Warum es bei Verwendung von justification=RaggedRight in der Dokumentpräambel ragged2e nicht direkt lädt? Keine Ahnung. Müsste man den Paketautor fragen.

ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Beitrag von ocir »

Danke, funktioniert jetzt :)

Sieht echt besser aus, muss man schon sagen. Werde dieses Layout jetzt für alle Tabellen so übernehmen.

Wie sieht denn die Kopfzeile für mein anderes Beispiel aus?

Leider verstehe ich nicht, was das alles in der letzten Klammer bedeutet.. kann mir das jemand erklären? Dann versuche ich es mal selbst..

\begin{tabularx}{\textwidth}{@{}L{4cm}p{5cm}X@{}}

Also was soll das @Zeichen, was bedeutet die leere Klammer dahinter. Das große L bedeutet sicher Left.. aber warum kein kleines l?

Gast

Beitrag von Gast »

Du solltest mal eine ausführliche LaTeX-Einführung lesen. Darin sollte dann beispielsweise erklärt werden, dass vor und nach jeder Spalte automatisch ein Abstand eingefügt wird. Statt dieses Default-Abstands kann man mit @{…} beliebigen Code einfügen. @{} bedeutet also schlicht, dass statt des Spaltenabstands nichts eingefügt werden soll. Lass es einfach einmal weg und vergleiche das Ergebnis.

Die L-Spalte wird \newcolumntype definiert. Näheres dazu findet man in der [d]array[/d]-Anleitung und tatsächlich ebenfalls in vielen LaTeX-Einführungen, die auch wichtige Pakete behandeln. Die L-Spalte ist also eine p-Spalte an deren Anfang automatisch \RaggedRight ausgeführt wird. Damit hat diese Spalte zum einen eine feste Breite, zum anderen ist es eine Absatzspalte. Es sind also Zeilenumbrüche innerhalb einer Tabellenzelle möglich. l ist dagegen eine Spalte variabler Breite, in der es keinen Umbruch gibt (außer man packt explizit eine \parbox oder eine tabular o. ä. hinein).

ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Beitrag von ocir »

Okay, danke.
Den Unterschied ob mit oder ohne @{} habe ich gesehen.

Ich hab es jetzt mal versucht, aber ist leider eine Vollkatastrophe.
\documentclass[
BCOR=5mm,           % Binderkorrektur von 5mm vorsehen
DIV=10,             % Seite in X Kästchen einteilen (Siehe Koma-Script Guide)
fontsize=12pt,      % Schriftgröße 12 Punkte
oneside,            % Einseitig
parskip,            % Paragraphen nicht einrücken
headsepline,        % Kopfzeile nach unten durch Linie abgrenzen (scrheadings)
plainheadsepline,   % Kopfzeile nach unten durch Linie abgrenzen (scrplain)
plainfootbotline,   % Fußzeile nach unten durch Linie abgrenzen (scrplain)
footsepline         % Fußzeile nach oben durch Linie abgrenzen (scrheadings)
]{scrbook}          % Koma-Script Klasse zum setzen eines Buchs

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[
   labelfont=bf,
   format=plain,
   font=small,
   justification=RaggedRight,
   singlelinecheck=false
]{caption}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[inner=3cm,outer=2.0cm,top=2cm,bottom=2.0cm,includeheadfoot]{geometry}
\usepackage{blindtext}

%\usepackage{ragged2e}% wird bereits von caption geladen
\usepackage{booktabs}

\newcommand{\cross}{\ding{55}}

\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}

\begin{document}
\begin{table}
\centering
	\begin{tabularx}{\textwidth}{@{}L{5cm}p{1cm}p{1cm}@{}}
	\toprule
	Suchbegriff & \multicolumn{2}{c}{Produkt mit Patentschutz} \\
	\cline{2-3}
				& Ja & Nein\\
	\midrule
	\blindtext	&	 & x\\ 
	\bottomrule	
	\end{tabularx}
\end{table}
\end{document}

Ich habe mich bei dieser Tabelle etwas umentschieden. Ich hatte ja ursprünglich gesagt, dass nach "Produkte mit" ein Zeilenumbruch sein soll.
Muss jetzt doch nicht so sein. Es ist okay so wie in diesem Minimalbeispiel. Zwischen "Produkte mit Patentschutz" und "Ja" bzw. "Nein" soll ein horizontaler Strich sein.
Die linke Spalte "Suchbegriff" soll so breit sein wie das was eben noch übrig bleibt.
Liege ich damit richtig, dass die definierte Tabelle \newcolumntype{L}[1]{>{\RaggedRight}p{#1}} hier jetzt nicht mehr verwendet werden kann?

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ersetze in dieser Tabelle das L{5cm} durch X

Antworten