怎样正确堆放两个棺材才能使其内容物之间的垂直间距与将它们放在一个棺材中一样?

怎样正确堆放两个棺材才能使其内容物之间的垂直间距与将它们放在一个棺材中一样?

考虑以下最小工作示例(MWE):

\documentclass{article}
\usepackage{xcoffins,kantlipsum}
\begin{document}
\NewCoffin \MyCoffin
\NewCoffin \YourCoffin
\SetVerticalCoffin \MyCoffin {.75\linewidth}
{%
  \kant[1]
}
\SetVerticalCoffin \YourCoffin {.75\linewidth}
{%
  \kant[2]
}
\JoinCoffins \MyCoffin [b,l] \YourCoffin [t,l]
\TypesetCoffin \MyCoffin
\end{document}

如果您更喜欢expl3语法,下面是使用底层函数而不是接口的相同示例xcoffins

\documentclass{article}
\usepackage{expl3,kantlipsum}
\begin{document}
\ExplSyntaxOn
\coffin_new:N \l_exp_my_coffin
\coffin_new:N \l_exp_your_coffin
\vcoffin_set:Nnn \l_exp_my_coffin {.75\linewidth}
{
  \kant[1]
}
\vcoffin_set:Nnn \l_exp_your_coffin  {.75\linewidth}
{
  \kant[2]
}
\coffin_join:NnnNnnnn \l_exp_my_coffin { b } { l } \l_exp_your_coffin { t } { l } { 0pt } { 0pt }
\coffin_typeset:Nnnnn \l_exp_my_coffin { b } { l } { 0pt } { 0pt }
\ExplSyntaxOff
\end{document}

无论如何,结果都是

压扁的棺材

这显然不是理想的情况。理想的结果应该类似于将两个棺材的内容排版在一个棺材中。

\SetVerticalCoffin \MyCoffin {.75\linewidth}
{%
  \kant[1-2]
}
\TypesetCoffin \MyCoffin

不被压扁的孤棺

显然,有办法解决这个问题。下面列出的这些方法仅供参考,并不详尽。

  1. 在 末尾包含明确的垂直间距作为内容\MyCoffin
  2. 在 的开头包含明确的垂直间距作为内容\YourCoffin
  3. 使用 的偏移选项来调整到 的连接\JoinCoffins点。\YourCoffin\MyCoffin

例如

\SetVerticalCoffin \MyCoffin {.75\linewidth}
{%
  \kant[1]
}
\SetVerticalCoffin \YourCoffin {.75\linewidth}
{%
  \kant[2]
}
\JoinCoffins\MyCoffin[b,l]\YourCoffin[t,l](0pt,-.2\baselineskip-\parskip)
\TypesetCoffin \MyCoffin

近似于正确的结果。

几乎正确?

然而,这不仅不太正确,而且不灵活且繁琐。此外,它似乎与棺材的整个概念及其方法格格不入。充其量,它是不优雅的:它重新复杂化了棺材的概念,我认为,它试图简化的东西。

也就是说,我确信这不可能是我应该做的事情。

怎样正确堆放两个棺材,以便其中内容物的垂直间距与将两个棺材的内容物简单地放在一个棺材中时的大小差不多?

请注意,解决方案不需要使用xcoffins接口。我对层非常感兴趣expl3,并且只转换为更高级别的宏来简化问题的呈现。

答案1

棺材的发明确实是为了解决这个问题,你需要在第一个棺材的底部基线和第二个棺材的顶部基线之间的杆子之间设置一个基线偏移量

在此处输入图片描述

\documentclass{article}
\usepackage{expl3,kantlipsum}
\begin{document}
\ExplSyntaxOn
\coffin_new:N \l_exp_my_coffin
\coffin_new:N \l_exp_your_coffin
\vcoffin_set:Nnn \l_exp_my_coffin {.75\linewidth}
{
  \kant[1]
}
\vcoffin_set:Nnn \l_exp_your_coffin  {.75\linewidth}
{
  \kant[2]
}
\coffin_join:NnnNnnnn \l_exp_my_coffin { B } { l } \l_exp_your_coffin { T } { l } { 0pt } { -\baselineskip }
\coffin_typeset:Nnnnn \l_exp_my_coffin { b } { l } { 0pt } { 0pt }
\ExplSyntaxOff
\end{document}

答案2

您可以添加支柱

\documentclass{article}
\usepackage{xcoffins,kantlipsum}
\begin{document}
\footnotesize\parindent=0pt

\NewCoffin \MyCoffin
\NewCoffin \YourCoffin
\SetVerticalCoffin \MyCoffin {.5\linewidth}
{%
  \strut\kant*[1]\strut
}
\SetVerticalCoffin \YourCoffin {.5\linewidth}
{%
  \strut\kant*[2]\strut
}
\hrule
\JoinCoffins \MyCoffin [b,l] \YourCoffin [t,l]
\TypesetCoffin \MyCoffin
\parbox{0.5\linewidth}{\kant[1-2]}
\hrule
\end{document}

在此处输入图片描述

相关内容