![\unvbox 与后续文本之间的间距不一致](https://linux22.com/image/377930/%5Cunvbox%20%E4%B8%8E%E5%90%8E%E7%BB%AD%E6%96%87%E6%9C%AC%E4%B9%8B%E9%97%B4%E7%9A%84%E9%97%B4%E8%B7%9D%E4%B8%8D%E4%B8%80%E8%87%B4.png)
下面的 MWE(来自一本食谱文档)分为三部分:(1)居中并使用 24pt 脚本字体的食谱名称,(2)左右缩进 17pt 并使用 12pt 罗马字体的食谱故事,以及(3)在 2 列多列环境中使用 11pt 字体的实际食谱。
对我来说有趣(且令人困惑)的是,第 (1) 节中使用的特定字符会影响第 (2) 节和第 (3) 节之间的垂直距离。
MWE 使用我实际的脚本字体 Italianno(根据 SIL 开放字体许可免费提供)。我意识到这会在重现结果时产生问题。我注释掉了替代的法语脚本字体(随我的 Word 安装提供)——它也显示了问题。我想任何带有大降序的“g”的脚本字体都可以使用。
以下是 MWE:
\documentclass[11pt]{book}
\raggedbottom
\usepackage{fontspec, lipsum, multicol}
\newfontfamily\MyScriptFont{Italianno}[ % Available under SIL Open Font License
Extension=.otf,
UprightFont=*-Regular-OTF,
]
%\newfontfamily\MyScriptFont{FRSCRIPT}[ % included with my Microsoft Word installation
%Extension=.ttf,
%UprightFont=*,
%]
\begin{document}
\begin{center}%
{\MyScriptFont\fontsize{24}{29}\selectfont %
Chicken Sausage and Black Bean Chili\par %
}%
\end{center}%
%
\newbox\StoryBox
\setbox\StoryBox\vbox
{ \rmfamily\fontsize{12}{14.4}\selectfont
\newdimen\Width \Width = 17 pt \leftskip=\Width \rightskip=\leftskip
\lipsum[66]
}
\unvbox\StoryBox
%
\begin{multicols}{2}
\lipsum[66]
\end{multicols}
\end{document}
要查看此问题,请从 Sausage 中删除“g”并重新编译。下图显示了第 (2) 和 (3) 节之间的不同垂直距离,具体取决于“g”是否在 Sausage 中:
我的问题:在“带 g”和“不带 g”的情况下,为什么缩进文本(我称之为第 2 节)和多列文本(我称之为第 3 节)之间的垂直距离不同。
至于为什么我使用 \unvbox,请参阅将一个文本块包裹(跳过)到另一个文本块
答案1
盒子交付后,命令\unvbox
不会更新参数(TeXbook,第 282 页)。\prevdepth
您可以移除最后一个框并重新插入,这样\prevdepth
就会更新。
\documentclass[11pt]{book}
\usepackage{fontspec, lipsum, multicol}
\newfontface\MyScriptFont{Italianno}[ % Available under SIL Open Font License
Extension=.ttf,
Path=./,
UprightFont=*-Regular,
]
\newdimen\Width
\newbox\StoryBox
\begin{document}
\setbox\StoryBox\vbox{
\rmfamily\fontsize{12}{14.4}\selectfont
\Width = 17 pt \leftskip=\Width \rightskip=\leftskip
\lipsum[66]\par
}
\begin{center}
\MyScriptFont\fontsize{24}{29}\selectfont
Chicken Sausage and Black Bean Chili\par
\end{center}
\unvcopy\StoryBox
\setbox0=\lastbox
\nointerlineskip
\box0
\begin{multicols}{2}
\lipsum[66]
\end{multicols}
\begin{center}
\MyScriptFont\fontsize{24}{29}\selectfont
Chicken and Black Bean Chili\par
\end{center}
\unvcopy\StoryBox
\setbox0=\lastbox
\nointerlineskip
\copy0
\begin{multicols}{2}
\lipsum[66]
\end{multicols}
\end{document}
在这里我使用它\unvcopy
是为了重复使用同一个盒子而不破坏它。
请注意,\newdimen
不应在框中说明,而应在序言中说明。