![如何纠正多个并排 parbox 后的垂直间距?](https://linux22.com/image/454465/%E5%A6%82%E4%BD%95%E7%BA%A0%E6%AD%A3%E5%A4%9A%E4%B8%AA%E5%B9%B6%E6%8E%92%20parbox%20%E5%90%8E%E7%9A%84%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D%EF%BC%9F.png)
我使用\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}}}
但我不确定你到底想让\fbox
es 对齐到什么程度。你至少应该插入\strut
s,以便为上升部和下降部留出空间。
答案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
插入的不一致的间距。