多个小页面之间的垂直空间长度不一样?

多个小页面之间的垂直空间长度不一样?

我创建了一个命令\dateentry,将两个小页面并排放置。由于某种原因,条目之间的垂直间距不一致。当它围绕右侧小页面仅包含一行的条目时,间距似乎更大。这是为什么?我该如何修复此行为,以使条目之间的垂直间距始终相同?

MWE 作为图像

梅威瑟:

\documentclass[
    12pt,
    parskip=half,
]{scrartcl}

    \usepackage[
        a4paper,
        left=25mm,
        right=20mm,
        top=25mm,
        bottom=30mm,
        showframe,
    ]{geometry}
    \usepackage{blindtext}

% Font
    \usepackage{inconsolata}
    \usepackage[T1]{fontenc}
    \renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif

% Date-Entry-Command
\newcommand{\dateentry}[2]{

    \begin{minipage}[c]{.15\linewidth}
        \hfill#1
    \end{minipage}
        \hfill\vline\hfill
    \begin{minipage}{.80\linewidth}
        #2
    \end{minipage}
    \\
}

\begin{document}
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize{small text}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize{small text}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize{small text}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize{small text}
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize{small text} \blindtext
    }
\end{document}

答案1

这里提出了一种替代方法。

无需处理繁琐的垂直间距(见标准答案) 的 minipages,建议使用tikz包进行精确定位和对齐。

tikz宏由三行组成:

(1)节点名称dates已排版;

(2)将命名的节点title排版在 的右侧某处dates,其内容左对齐并位于框内0.75\linewidth;并且

(3)在 的左侧(“西”)画一条垂直线title

最后段落结束,并可以添加可选的垂直空格。

可以看出,所有连续垂直线端点之间的距离都是相等的。

页

笔记: \footnotesize不是一个环境或者命令,而是一个声明,就像一个开关:将把以下文本放在这个大小中。

\documentclass[
12pt,
parskip=half,
]{scrartcl}

\usepackage[
a4paper,
left=25mm,
right=20mm,
top=25mm,
bottom=30mm,
showframe,
]{geometry}
\usepackage{blindtext}

% Font
\usepackage{inconsolata}
\usepackage[T1]{fontenc}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif

% ***************************************  changed
\usepackage{tikz}
\usetikzlibrary{positioning}

\newcommand\dateentry[2]{%
\begin{tikzpicture}
    \node(dates) {#1};
    \node(title)[right=0.2cm of dates, align=left, text width=0.75\linewidth]{#2};
    \draw[thick] (title.south west)--(title.north west);
\end{tikzpicture}
\par% end of previous paragraph
%\vspace*{1ex}% optional vertical  space in between 
}
%*********************************************************

\begin{document}

    \dateentry{20XX -- 20YY}{
    \textbf{Title} \\
    \textit{italic text},  \footnotesize small text
}
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize small tex
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title}\\
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title}\\
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize small text
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize small text
    }
    \dateentry{20XX -- 20YY}{
        \textbf{Title} \\
        \textit{italic text},  \footnotesize small text \blindtext
    }

\end{document}

更新后续问题之后

Atabularx将处理单元格大小不同的情况,即左列和右列。该行将采用最高单元格的高度。

\documentclass[
12pt,
parskip=half,
]{scrartcl}

\usepackage[
a4paper,
left=25mm,
right=20mm,
top=25mm,
bottom=30mm,
showframe,
]{geometry}
\usepackage{blindtext}

% Font
\usepackage{inconsolata}
\usepackage[T1]{fontenc}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif

%**************************************** added <<<<<<<<<<<<<<<<<<<<<
\usepackage{ragged2e} 
\usepackage{tabularx}
\newcolumntype{P}[1]{>{\RaggedRight}m{#1}}
\renewcommand{\tabularxcolumn}[1]{m{#1} }
\setlength{\extrarowheight}{6pt} % add extra space between rows
\setlength{\tabcolsep}{8pt} % twice the space before and after the column

\newcommand\dateentry[2]{% *********  changed <<<<<<<<<<<<
\begin{tabularx}{\textwidth}{P{0.2\textwidth}|X}                        
#1& #2 \\
\end{tabularx}
\par% end of previous paragraph
%   \vspace*{1ex}% optional vertical  space in between 
}
%*********************************************************

\begin{document}

    \dateentry{20XX -- 20YY}{\textbf{Title} \newline \textit{italic text},  \footnotesize small text}
    \dateentry{\textbf{Title} \newline \textit{italic text},  \footnotesize small tex}{20XX -- 20YY}
    \dateentry{20XX -- 20YY}{\textbf{Title}}
    \dateentry{\textbf{Title} \newline  \textit{italic text},  \footnotesize small text }{  20XX -- 20YY}       
    \dateentry{20XX -- 20YY}{   \textbf{Title} \newline \textit{italic text},  \footnotesize small text }
    \dateentry{20XX -- 20YY}{   \textbf{Title} \newline \textit{italic text},  \footnotesize    \blindtext  }
    \dateentry{\textbf{Title} \newline  As any dedicated reader can clearly see, the Ideal of
        practical reason is a representation of, as far as I know, the things
        in themselves; as I have shown elsewhere}{\textbf{Title} \newline \itshape  Let us suppose that the noumena have nothing to do
        with necessity, since knowledge of the Categories is a
        posteriori.
    }

\end{document}

Z Z

答案2

这里有几件事。第一,你的定义\dateentry有一些(可能)意想不到的瑕疵,即虚假空间以及额外的换行符(因为\\除了\par(空行);您可能只想要\par)。让我们清理一下。

\newcommand\dateentry[2]{%
  \par
  \begin{minipage}[c]{.15\linewidth}%
    \hfill#1%
  \end{minipage}%
    \hfill\vline\hfill
  \begin{minipage}{.80\linewidth}%
    #2%
  \end{minipage}%
  \par
}

(它可以进一步改进,但这与这个问题无关。)

现在,为了清楚起见,我们还删除parskip(并设置\parindent为零以避免盒子过满)并查看结果。

\documentclass[
    12pt,
%    parskip=half,
  ]{scrartcl}

\usepackage[
  a4paper,
  left=25mm,
  right=20mm,
  top=25mm,
  bottom=30mm,
  showframe,
  ]{geometry}
\usepackage{blindtext}

% Font
\usepackage{inconsolata}
\usepackage[T1]{fontenc}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif

% Date-Entry-Command
\newcommand\dateentry[2]{%
  \par
  \begin{minipage}[c]{.15\linewidth}%
    \hfill#1%
  \end{minipage}%
    \hfill\vline\hfill
  \begin{minipage}{.80\linewidth}%
    #2%
  \end{minipage}%
  \par
}

\setlength\parindent{0pt}

\begin{document}

\dateentry{20XX -- 20YY}{
  \textbf{Title} \\
  \textit{italic text},  \footnotesize{small text}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title} \\
  \textit{italic text},  \footnotesize{small text}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title} \\
  \textit{italic text},  \footnotesize{small text}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title} \\
  \textit{italic text},  \footnotesize{small text}
}
\dateentry{20XX -- 20YY}{
  \textbf{Title} \\
  \textit{italic text},  \footnotesize{small text} \blindtext
}

\rule{1em}{9pt} \textbf{Title}

\rule{1em}{9pt}

\rule{1em}{9pt}

\rule{1em}{20pt}

\rule{1em}{20pt}

\rule{1em}{20pt}

\rule{1em}{9pt}

\rule{1em}{9pt}

\rule{1em}{9pt}

\end{document}

MWE 输出

如您所见,仍然存在差异。 这是因为单行框小于\baselineskip(因此它们的基线之间的距离为\baselineskip),而多行框较高(因此框之间的距离为\lineskip)。 总体而言,这是正确的,正如我添加到 MWE 的框所示。

为了解决这个问题,你可以给盒子一个最小的高度和深度(例如包括一个\rule[-.2\baselineskip]{0pt}{\baselineskip}),但我建议使用类似的包tcolorbox为您的盒子提供更多复杂的选择。

相关内容