我使用\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
插入的不一致的间距。