![为什么一个空的 \textwidth 棺材与另一个棺材连接时会失去宽度?](https://linux22.com/image/333713/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%80%E4%B8%AA%E7%A9%BA%E7%9A%84%20%5Ctextwidth%20%E6%A3%BA%E6%9D%90%E4%B8%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%A3%BA%E6%9D%90%E8%BF%9E%E6%8E%A5%E6%97%B6%E4%BC%9A%E5%A4%B1%E5%8E%BB%E5%AE%BD%E5%BA%A6%EF%BC%9F.png)
我试图理解棺材。事实上,我试去使用它们。尝试去理解它们纯粹是一个工具性的目标。
我想制作一个宽度为 的棺材\textwidth
和一个略小于 的棺材。然后我想使用和.5\textwidth
给出的锚点将棺材连接起来。T
r
T
然后我想使用和处的锚点排版连接结果l
,这样文本就会被推到页面的右侧。(就像我填充了半宽 左侧的空间一样minipage
,大致如此。)
然而,\textwidth
当我加入第二个棺材时,第一个棺材的似乎被遗忘了,所以文本排版在页面的左侧而不是右侧。
相反,如果第一个棺材包含x
,那么棺材的宽度将被保留,并且文本被推到右侧。
现在,显然,还有许多其他方法可以实现这种效果。我不是在要求另一种方法。我想知道这是否是预期的,如果是,为什么,因为考虑到我短暂进入棺材领域,我并没有想到这一点。
\documentclass{article}
\usepackage{expl3,showframe}
\begin{document}
\ExplSyntaxOn
\vcoffin_set:Nnn \l_tmpa_coffin { \textwidth }
{
}
\vcoffin_set:Nnn \l_tmpb_coffin { .5\textwidth - .5\columnsep }
{
Some~long~stuff~here~of~some~description~typeset~somehow~or~other~but~maybe~not~so~tediously.
}
\coffin_join:NnnNnnnn \l_tmpa_coffin { T } { r } \l_tmpb_coffin { T } { r } { 0pt } { 0pt }
\noindent
\coffin_typeset:Nnnnn \l_tmpa_coffin { T } { l } { 0pt } { 0pt }
\bigskip
\par
\vcoffin_set:Nnn \l_tmpa_coffin { \textwidth }
{
x
}
\vcoffin_set:Nnn \l_tmpb_coffin { .5\textwidth - .5\columnsep }
{
Some~long~stuff~here~of~some~description~typeset~somehow~or~other~but~maybe~not~so~tediously.
}
\coffin_join:NnnNnnnn \l_tmpa_coffin { T } { r } \l_tmpb_coffin { T } { r } { 0pt } { 0pt }
\noindent
\coffin_typeset:Nnnnn \l_tmpa_coffin { T } { l } { 0pt } { 0pt }
\ExplSyntaxOff
\end{document}
还请注意,我知道xcoffins
为文档中的棺材提供了更合适的界面。我从类文件中获取它并将其移植到 MWE 中,只是为了创建 MWE。由于这是我一直在研究的语法领域,因此这似乎是提出问题最有用的方法(对我来说!)。
答案1
我认为这是意料之中的。它的工作原理类似于经典\vbox
:设置\hsize
不会创建一个大框。您需要一些材料,例如\leavevmode
:
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\fbox{\vbox {\hsize=5cm }}\par
\fbox{\vbox {\hsize=5cm x }}\par
\vcoffin_set:Nnn \l_tmpa_coffin { 5cm }
{
}
\vcoffin_set:Nnn \l_tmpb_coffin { 5cm }
{
x
}
\fbox{\coffin_typeset:Nnnnn \l_tmpa_coffin { T } { l } { 0pt } { 0pt }}
\par
\fbox{\coffin_typeset:Nnnnn \l_tmpb_coffin { T } { l } { 0pt } { 0pt }}
\ExplSyntaxOff
\end{document}