Ich habe Probleme mit dem Zeilenabstand innerhalb einer longtable
Umgebung, wenn ein Zeilenumbruch erzwungen wird. Der folgende Code sollte das Problem veranschaulichen.
\documentclass[11pt,paper=a4,11pt,parskip=half,draft]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{xcolor}
\usepackage{blindtext}
\definecolor{darkblue}{HTML}{212650}
\definecolor{grey}{HTML}{666666}
\newcommand{\itemdate}[1]{{\sffamily #1}}
\newcommand{\itemhead}[1]{{\sffamily\textcolor{darkblue}{\bfseries #1}}}
\newcommand{\itemplace}[1]{{\sffamily\itshape\footnotesize #1}}
% don't know why this cannot be local scope only ???!!!!
\newcommand{\iteminfo}[1]{\scriptsize #1}
% http://tex.stackexchange.com/a/7348/46403
% ragged2e packages provides text hyphenation in columns
\newcolumntype{L}[1]{>{\raggedright\hspace{0pt}\arraybackslash}p{#1}} % left with dimension
\newcolumntype{J}[1]{>{\justifying\hspace{0pt}\arraybackslash}p{#1}} % justify with dimension
\newcommand{\colwidth}[1]{%
\dimexpr #1\textwidth-2\tabcolsep%
}%
\begin{document}
\begin{longtable}[!htbp]{|@{}L{\colwidth{0.2}}|L{\colwidth{0.8}}@{}|}
\hline
\itemdate{Itemdate 1} &
\itemhead{Itemhead 1} \newline
\itemplace{Itemplace 1} \vspace{3pt}\newline
\iteminfo{\textbf{Iteminfo 1.1}: \blindtext[1]}
\vspace{3pt}\newline%
\iteminfo{\textbf{Iteminfo 1.2}: \blindtext[1]} \\
\hline
\itemdate{Itemdate 2} &
\itemhead{Itemhead 2} \newline
\itemplace{Itemplace 2} \\
\hline
\itemdate{Itemdate 3} &
\itemhead{Itemhead 3} \newline
\itemplace{Itemplace 3} \\
\end{longtable}
\end{document}
Auch verfügbar beihttps://www.overleaf.com/2029617ptbycv#/5121602/
Ich hoffe, dies veranschaulicht das Problem ausreichend.
Betrachtet man den Abstand zwischenArtikelkopf 1UndArtikelplatz 1, das ist der Zeilenabstand, den ich gerne hätte.
Der Abstand zwischen Itemhead 2 und Itemplace 2 sowie Itemhead 3 und Itemplace 3 ist meiner Meinung nach zu groß für einen einzelnen Zeilenumbruch. Es sollte ein einfacher Zeilenabstand verwendet werden.
Im Moment habe ich keine Ahnung, was Latex dazu zwingt, einen größeren Zeilenabstand zwischen den Itemhead- und Itemplace-Zeilen in Zeile 2 und 3 zu verwenden. Es muss etwas mit dem Text zu tun haben, der der Itemplace-Zeile folgt. Denn wenn ich es \iteminfo
nach dem \itemplace
Befehl aufrufe, zeigt es dieses seltsame Verhalten.
Ich verwende MacTex 2014 auf OSX 10.10.1.
So sieht es auf der OSX 10.10.1 Preview-App aus
Antwort1
Sie sollten immer das Absatzende (nicht \newline
), wenn Sie Größenänderungen haben. Ein ganzer Absatz wird mit dem am Ende des Absatzes geltenden Grundlinienabstand festgelegt, sodass Sie inkonsistente Einstellungen erhalten haben.
\documentclass[11pt,paper=a4,11pt,parskip=half,draft]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{xcolor}
\usepackage{blindtext}
\definecolor{darkblue}{HTML}{212650}
\definecolor{grey}{HTML}{666666}
\newcommand{\itemdate}[1]{{\sffamily #1}}
\newcommand{\itemhead}[1]{{\sffamily\textcolor{darkblue}{\bfseries #1}}\par}
\newcommand{\itemplace}[1]{{\sffamily\itshape\footnotesize #1\par}}
% don't know why this cannot be local scope only ???!!!!
\newcommand{\iteminfo}[1]{{\scriptsize #1\par}}
% http://tex.stackexchange.com/a/7348/46403
% ragged2e packages provides text hyphenation in columns
\newcolumntype{L}[1]{>{\raggedright\hspace{0pt}\arraybackslash}p{#1}} % left with dimension
\newcolumntype{J}[1]{>{\justifying\hspace{0pt}\arraybackslash}p{#1}} % justify with dimension
\newcommand{\colwidth}[1]{%
\dimexpr #1\textwidth-2\tabcolsep%
}%
\begin{document}
\begin{longtable}[!htbp]{|@{}L{\colwidth{0.2}}|L{\colwidth{0.8}}@{}|}
\hline
\itemdate{Itemdate 1} &
\itemhead{Itemhead 1}
\itemplace{Itemplace 1}
\iteminfo{\textbf{Iteminfo 1.1}: \blindtext[1]}
\iteminfo{\textbf{Iteminfo 1.2}: \blindtext[1]} \\
\hline
\itemdate{Itemdate 2} &
\itemhead{Itemhead 2}
\itemplace{Itemplace 2} \\
\hline
\itemdate{Itemdate 3} &
\itemhead{Itemhead 3}
\itemplace{Itemplace 3} \\
\end{longtable}
\end{document}
Antwort2
Sie erhalten unterschiedliche Abstandsergebnisse, weil (a) Sie zum Einfügen von Zeilenumbrüchen \newline
anstelle von verwenden und (b) für Elemente vom Typ Itemhead ( ), Itemplace ( ) und Iteminfo ( ) unterschiedliche Schriftgrößen verwendet werden.\par
\normalsize
\footnotesize
\scriptsize
Der Zeilenabstand, der in einem (logischen) Absatz verwendet wird, hängt von der Schriftgröße ab, die zum jeweiligenEndedes aktuellen Absatzes. Wichtig: \newline
fügt einen Zeilenumbruch ein, aber esnichteinen neuen Absatz einleiten. In der Gruppe Itemhead1/Itemplace1/Iteminfo1 ist der Abstand zwischen Itemhead1 und Itemplace1 daher so, wie es für \scriptsize
das Material angemessen ist (und daher ziemlich eng), wie \scriptsize
es am Ende des „Absatzes“ der Fall ist. Dieser Effekt wird verdeckt, weil Sie \vspace{3pt}
vor jedem Iteminfo-Element Anweisungen haben.
Umgekehrt beträgt bei Itemhead2/Itemplace2 und Itemhead3/Itemplace 3 die endgültige Schriftgröße des Absatzes \footnotesize
, und Sie erhalten somit einen (etwas) größeren Abstand als bei der ersten Gruppe.
Wenn Sie unbedingt den sehr engen Abstand benötigen, der für \scriptsize
das Material angemessen ist, können Sie dieses Ergebnis erzielen, indem Sie die Anweisung \scriptsize
unmittelbar nach einfügen \itemplace{Itemplace 2}
. Ich denke jedoch, dass es besser ist, alle \newline
Anweisungen durch zu ersetzen \par
und die Anweisungen zu entfernen \vspace{3pt
.