如何打造一个可调节的棺材?

如何打造一个可调节的棺材?

我想将几行文本垂直堆叠在棺材内,并让棺材成为包含这些文本的最紧密的矩形。获得包含这些行的棺材的一种方法是使用\SetVerticalCoffin明确的宽度参数,但这并不能使棺材变得紧密。

\documentclass{article}
\usepackage{xcoffins}
\begin{document}
\NewCoffin\Text
\SetVerticalCoffin\Text{12em}{\noindent%
  [email protected]\\%
  My postal address,\\%
  99999, BC, Canada%
}
\TypesetCoffin\Text
\end{document}

另一种方法是构建单独的水平棺材并将它们以正确的对齐方式连接起来,但这并不能解决正确的线跳跃问题(即使插入\strut)。

\documentclass{article}
\usepackage{xcoffins}
\begin{document}
\NewCoffin\Tmp
\NewCoffin\Text
\SetHorizontalCoffin\Tmp{\strut [email protected]}
\JoinCoffins\Text[b,l]\Tmp[t,l]
\SetHorizontalCoffin\Tmp{\strut My postal address,}
\JoinCoffins\Text[b,l]\Tmp[t,l]
\SetHorizontalCoffin\Tmp{\strut 99999, BC, Canada}
\JoinCoffins\Text[b,l]\Tmp[t,l]
\TypesetCoffin\Text
\end{document}

这两种方法都不太好。我怎样才能得到我想要的棺材?

答案1

借鉴我最初失败尝试的一些想法,我建议使用包\Longstack中的stackengine。在这里,我只是把它放在水平棺材里。[l]可选参数左对齐堆栈中的文本。行间间距可以用 更改\setstackgap{L}{length}。这\fbox表明它是最紧密的棺材(但如果您希望堆栈被支撑,\strutlongstacks{T}序言中会看到这一点)。

\documentclass{article}
\usepackage{xcoffins}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\NewCoffin\Text
\SetHorizontalCoffin\Text{%
\Longstack[l]{[email protected]\\My postal address\\99999, BC, Canada}%
}
\fboxsep=0pt
\fbox{\TypesetCoffin\Text}
\end{document}

在此处输入图片描述

在对 OP 的评论中,egreg 建议使用tabular作为实现目标的手段,而 OP 要求对这两个想法进行比较/对比。事实上,人们可以采取宏观路线

\Longstack[l]{[email protected]\\My postal address\\99999, BC, Canada}%

并将其替换为环境

\begin{tabular}{l}
[email protected]\\My postal address\\99999, BC, Canada
\end{tabular}%

来实现类似的结果,但需要额外按几个键。这两种方法都可以使用可设置的参数控制行间距。但是,这两个结果存在差异。结果tabular是在左/右以及顶部/底部都有填充。可以通过设置 的额外步骤来删除左/右填充。除了设置为\tabcolsep=0pt之外,我不太清楚如何从表格中删除顶部/底部填充,但这当然也会破坏行间距。也许有人可以评论一下这部分是如何完成的。\arraystretch0

这些就是我注意到的区别。我不知道塞进棺材里的物体的基线是否会影响棺材的行为。但是,和都tabular可以stackengine控制各自的基线,所以这本身不应该是个问题。如果我对棺材有更多的了解,可能会想到其他的事情。

当然,tabular是内置于 LaTeX 中的,而stackengine是一个额外的包。

相关内容