Einfluss der Einrückung im Code auf die Zentrierung in der Ausgabe Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


mattazie
Forum-Anfänger
Forum-Anfänger
Beiträge: 26
Registriert: Fr 19. Mai 2023, 14:50

Einfluss der Einrückung im Code auf die Zentrierung in der Ausgabe

Beitrag von mattazie »

Bei der Erstellung meiner Spielkarten verwende ich das Packet datatool, um je nach Eintrag in einer Datentabelle über teilweise verschachtelte ifthen-Schleifen die Ausgestaltung der einzelnen Karten zu steuern.
Um den Code übersichtlicher zu gestalten, breche ich den Code um und rücke ihn ein. Dabei ist mir aufgefallen, dass das Einrücken Einfluss hat auf die Zentrierung des Textes auf den Karten.

Im folgenden Beispiel sieht man, was ich meine. Ich habe zweimal den selben Code, aber unterschiedlich umgebrochen und eingerückt:
Baum,Farbe,Groesse
Buche,,gross
Tanne,grün,
Linde,,
\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[cmyk,table]{xcolor}
\usepackage[verbose]{datatool}
\usepackage{ifthen}
\usepackage{tabularx}
\usepackage{array}
\pagestyle{empty}

\begin{document}

\DTLloaddb[keys={Baum,Farbe,Groesse}]{Tabelle}{Tabelle.csv}

	\begin{DTLenvforeach}{Tabelle}{\Baum=Baum,\Farbe=Farbe,\Groesse=Groesse}
		\begin{tabular}{|c|}
			\hline
			\Baum \ifthenelse{\not \equal{\Farbe}{}}{\\[-0.6 mm] \scriptsize \mdseries\textit{(\Farbe)}}{\ifthenelse{\not \equal{\Groesse}{}}{\\[-0.6 mm] \scriptsize \mdseries\textit{(\Groesse)}}{}}\\
			\hline
		\end{tabular}
	\end{DTLenvforeach}

\vspace{5 mm}

	\begin{DTLenvforeach}{Tabelle}{\Baum=Baum,\Farbe=Farbe,\Groesse=Groesse}
		\begin{tabular}{|c|}
			\hline
			\Baum
			\ifthenelse{\not \equal{\Farbe}{}}{
				\\[-0.6 mm]
				\scriptsize \mdseries\textit{(\Farbe)}
			}{
				\ifthenelse{\not \equal{\Groesse}{}}{
					\\[-0.6 mm] \scriptsize \mdseries\textit{(\Groesse)}
				}{
				}
			}\\
			\hline
		\end{tabular}
	\end{DTLenvforeach}

\end{document}
Wenn ich nun compiliere (TeXstudio 4.8.5 (git 4.8.5) auf Windows, angezeigt in Sumatra, sieht man, dass es unterschiedliche Resultate gibt. Alle Wörter sollten in den Boxen zentriert sein.
Das untere Buche-Feld hat jedoch rechts mehr Platz bis zum Rand als das obere.
Noch deutlicher ist es bei der Linde. In beiden Boxen ist das Wort vertikal nicht zentriert und bei der unteren hat es rechts wieder einen grossen Zwischenraum bis zum Rand.

Woran liegt das? Rücke ich falsch ein?

Wäre sehr dankbar für jede Hilfe.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Einfluss der Einrückung im Code auf die Zentrierung in der Ausgabe

Beitrag von Stefan Kottwitz »

Ein Zeilenende wirkt wie ein Leerzeichen. Das soll ja auch so sein, in normalem Fließtest, das nächste Wort soll ja nicht ohne Leerzeichen dem letzten Wort der vorangehenden Zeile folgen. Zwischen Makros wie den \ifthenelse-Befehlen fängt man sich hier unerwünschte Leerzeichen (damit Abstände) ein.

Vermeiden kannst Du das, wenn Du Zeilenenden (zwischen Makros) auskommentierst. Daher siehst Du auch oft Prozentzeichen am Ende von Zeilen in Makrodefinitionen anderer Leute. Also etwa so:
\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[cmyk,table]{xcolor}
\usepackage[verbose]{datatool}
\usepackage{ifthen}
\usepackage{tabularx}
\usepackage{array}
\pagestyle{empty}
\begin{document}

\DTLloaddb[keys={Baum,Farbe,Groesse}]{Tabelle}{Tabelle.csv}

	\begin{DTLenvforeach}{Tabelle}{\Baum=Baum,\Farbe=Farbe,\Groesse=Groesse}
		\begin{tabular}{|c|}
			\hline
			\Baum%
			\ifthenelse{\not \equal{\Farbe}{}}{%
				\\[-0.6 mm]
				\scriptsize \mdseries\textit{(\Farbe)}%
			}{%
				\ifthenelse{\not \equal{\Groesse}{}}{%
					\\[-0.6 mm] \scriptsize \mdseries\textit{(\Groesse)}%
				}{%
				}%
			}\\
			\hline
		\end{tabular}
	\end{DTLenvforeach}

\end{document}
Stefan

mattazie
Forum-Anfänger
Forum-Anfänger
Beiträge: 26
Registriert: Fr 19. Mai 2023, 14:50

Re: Einfluss der Einrückung im Code auf die Zentrierung in der Ausgabe

Beitrag von mattazie »

Das ist das Geniale an diesem Forum:

Ich stelle eine Frage und bekomme die Antwort auf zwei Fragen. :D

Ich habe mich wirklich schon gefragt, wieso einige Leute ihre Zeilen mit Kommentarzeichen abschliessen, aber dahinter nichts schreiben. Ist eigentlich sehr einleuchtend.

Vielen Dank für die schnelle Antwort. Ich habe wiedereinmal etwas Wichtiges gelernt.

Antworten