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 在第 2 行和第 3 行的 Itemhead 和 Itemplace 行之间使用更宽的行距。这一定与 Itemplace 行后面的文本有关。因为如果我在命令\iteminfo
之后调用\itemplace
,它会显示这种奇怪的行为。
我在 OSX 10.10.1 上使用 MacTex 2014。
这是它在 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
您获得不同间距结果的原因是因为(a)您使用\newline
而不是\par
插入换行符,并且(b)对 Itemhead(\normalsize
)、Itemplace(\footnotesize
)和 Iteminfo(\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