Probleme mit dem Zeilenabstand innerhalb einer Tabellenzelle

Probleme mit dem Zeilenabstand innerhalb einer Tabellenzelle

Ich habe Probleme mit dem Zeilenabstand innerhalb einer longtableUmgebung, 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 \iteminfonach dem \itemplaceBefehl 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 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 \newlineanstelle 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: \newlinefü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 \scriptsizedas Material angemessen ist (und daher ziemlich eng), wie \scriptsizees 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 \scriptsizedas Material angemessen ist, können Sie dieses Ergebnis erzielen, indem Sie die Anweisung \scriptsizeunmittelbar nach einfügen \itemplace{Itemplace 2}. Ich denke jedoch, dass es besser ist, alle \newlineAnweisungen durch zu ersetzen \parund die Anweisungen zu entfernen \vspace{3pt.

verwandte Informationen