表格儲存格內的換行行距問題

表格儲存格內的換行行距問題

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 之間的間距對於單一換行來說太寬了。它應該是單倍行距。

現在我不知道是什麼迫使乳膠在第 2 行和第 3 行的 Itemhead 和 Itemplace 行之間使用更寬的線寬。因為如果我在命令\iteminfo之後調用\itemplace,它會顯示出奇怪的行為。

我在 OSX 10.10.1 上使用 MacTex 2014。

這是它在 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

您獲得不同間距結果的原因是 (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

相關內容