Проблемы с межстрочным интервалом в ячейке таблицы

Проблемы с межстрочным интервалом в ячейке таблицы

У меня проблемы с межстрочным интервалом внутри longtableсреды при принудительном переносе строки. Следующий код должен проиллюстрировать проблему.

\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}

Также доступно наhttps://www.overleaf.com/2029617ptbycv#/5121602/

Надеюсь, это достаточно наглядно демонстрирует проблему.

Если вы посмотрите на расстояние междуЗаголовок 1иПунктместо 1, это тот межстрочный интервал, который мне бы хотелось иметь.

Интервал между Itemhead 2 и Itemplace 2, а также Itemhead 3 и Itemplace 3, по моему мнению, слишком велик для одной новой строки. Он должен быть одинарным.

Прямо сейчас я понятия не имею, что заставляет latex использовать более широкую линию между строками Itemhead и Itemplace в строках 2 и 3. Должно быть, это как-то связано с текстом после строки Itemplace. Потому что если я вызываю \iteminfoпосле \itemplaceкоманды, она показывает это странное поведение.

Я использую MacTex 2014 на OSX 10.10.1.

Вот как это выглядит в OSX 10.10.1 Preview-App Вот как это выглядит в OSX 10.10.1 Preview-App

решение1

Всегда следует включать конец абзаца (нет \newline) если у вас есть изменения размера. Весь абзац установлен с базовым интервалом, действующим в конце абзаца, поэтому вы получали непоследовательные настройки.

\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}

решение2

Причина, по которой вы получаете разные результаты по интервалам, заключается в том, что (а) вы используете \newlineвместо для вставки переносов строк и (б) для элементов типа Itemhead ( ), Itemplace ( ) и Iteminfo ( ) \parиспользуются разные размеры шрифта .\normalsize\footnotesize\scriptsize

Межстрочный интервал, используемый в (логическом) абзаце, зависит от размера шрифта, действующего в данный момент.конецтекущего абзаца. Важно, \newlineвставляет разрыв строки, но это ненетначать новый абзац. Таким образом, в группе Itemhead1/Itemplace1/Iteminfo1 интервал между Itemhead1 и Itemplace1 соответствует \scriptsizeматериалу (и, следовательно, довольно плотный), как \scriptsizeи в конце "абзаца". Этот эффект скрыт, поскольку у вас есть \vspace{3pt}инструкции перед каждым элементом Iteminfo.

Наоборот, в случае Itemhead2/Itemplace2 и Itemhead3/Itemplace 3 окончательный размер шрифта абзаца равен \footnotesize, и, таким образом, вы получаете (немного) более широкий интервал, чем для первой группы.

Если вам абсолютно, безусловно необходимо получить очень узкий интервал, подходящий для \scriptsizeматериала, вы можете получить этот результат, вставив инструкцию \scriptsizeсразу после \itemplace{Itemplace 2}. Однако, я думаю, вам лучше заменить все \newlineинструкции на \parи избавиться от \vspace{3ptинструкций.

Связанный контент