如何纠正多个并排 parbox 后的垂直间距?

如何纠正多个并排 parbox 后的垂直间距?

我使用\dated宏将日期放在行尾,并在其左侧放置一些文本,使用两个parbox

当文本仅使用一行时,此构造下方的间距看起来不错。但是当日期左侧的文本占用多行时,两个 parbox 后就没有足够的垂直空间。我认为这可能是因为间距是根据包含日期的 parbox 计算的,而该 parbox 不一定与文本的 parbox 一样高。

如何在左侧 parbox 和其下方的文本之间创建相同的垂直间距?

\documentclass{article}
\usepackage{calc}
\usepackage{lipsum}

\newcommand{\datesep}{0.5em}
\setlength{\parindent}{0em}
\setlength{\parskip}{1em}

\renewcommand{\fboxsep}{-\fboxrule}

\newcommand{\dated}[2]{%
  \fbox{\parbox[t]{\linewidth-\widthof{#1}-\datesep}{#2\raggedright}}%
  \fbox{\parbox[t]{\widthof{#1}+\datesep}{\normalfont#1\raggedleft}}}

\begin{document}

\dated{2022}{\textbf{\lipsum[1][1]}}
\lipsum[1][4-6]

\dated{2022}{\textbf{\lipsum[1][1-3]}}
\lipsum[1][4-6]

\end{document}

在此处输入图片描述

答案1

使用类似的想法https://tex.stackexchange.com/a/656142/255231

\newcommand{\dated}[2]{%
  \fbox{\vbox{\setbox0=\hbox{\kern\datesep\fbox{\strut #1}}
  \advance\hsize by-\wd0
  \noindent\rlap{\hskip\hsize\box0}\strut#2\strut\par}}}

但我不确定你到底想让\fboxes 对齐到什么程度。你至少应该插入\struts,以便为上升部和下降部留出空间。

答案2

Heiko 的答案基本有效,我只需要插入\hsize\linewidth它以尊重自定义线宽(与一起使用changepage)并交换\vbox\vtop我的情况下需要的对齐方式(与边注标题)。

\newcommand{\dated}[2]{%
  \vtop{\setbox0=\hbox{\kern\datesep\normalfont\strut#1}
  \hsize\linewidth\advance\hsize by-\wd0
  \noindent\rlap{\hskip\hsize\box0}{\strut#2\strut\par}}}

\parbox这避免了或\minipage插入的不一致的间距。

相关内容