\unvbox 与后续文本之间的间距不一致

\unvbox 与后续文本之间的间距不一致

下面的 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不应在框中说明,而应在序言中说明。

在此处输入图片描述

相关内容