的文档棺材包裹状态:
此外,含有垂直模式材料的棺材也具有极点,这反映了这些系统的丰富性质:
B
沿着棺材底部材料基线延伸的杆子。
T
沿着棺材顶部材料基线延伸的杆子。
在这个例子中,我看不出t
和之间的区别T
:
\documentclass{article}
\usepackage{xcoffins}
\begin{document}
\NewCoffin \MyCoffin
\SetVerticalCoffin \MyCoffin {60pt} {\noindent This\\ is a\\ small\\ g.}
\DisplayCoffinHandles \MyCoffin {red}
\end{document}
答案1
此处的问题是由于我在 中犯的一个错误而引起的l3coffins
。您将在那里找到
\cs_new_protected:Npn \vcoffin_set:Nnn #1#2#3
{
\coffin_if_exist:NT #1
{
\vbox_set:Nn #1
{
\dim_set:Nn \tex_hsize:D {#2}
\color_group_begin:
\color_ensure_current:
#3
\color_group_end:
}
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
\vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
{ \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box } }
{ 1000 pt }
{ 0 pt }
}
\box_clear:N \l_coffin_internal_box
}
}
问题出在这\color_ensure_current:
行上,这是不正确的。在 SVN 中,这行被删除了。此修复将出现在下一个 CTAN 快照中,预计在 6 月的某个时间。在此期间,您可以使用以下方法在本地修复它
\usepackage{expl3}
\ExplSyntaxOn
\cs_set_protected:Npn \vcoffin_set:Nnn #1#2#3
{
\coffin_if_exist:NT #1
{
\vbox_set:Nn #1
{
\dim_set:Nn \tex_hsize:D {#2}
\color_group_begin:
#3
\color_group_end:
}
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
\vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
{ \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box } }
{ 1000 pt }
{ 0 pt }
}
\box_clear:N \l_coffin_internal_box
}
}
\ExplSyntaxOff
在你的序言中。
对于那些想知道为什么会发生这种情况的人来说,T
设置极点的方式最终是使用\vtop
原始的。只有当垂直框中的第一个项目本身就是一个框时,这才会给出正确的框高度。该\color_ensure_current:
函数创建了一个 whatsit,因此会破坏计算。所以目前这条线已被删除(镜像 LaTeX2e 框行为,其中只有 hboxes 确保当前颜色用于前景)。