![为什么如果我在组范围内更改字体大小就必须使用 \par?](https://linux22.com/image/380238/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%A6%82%E6%9E%9C%E6%88%91%E5%9C%A8%E7%BB%84%E8%8C%83%E5%9B%B4%E5%86%85%E6%9B%B4%E6%94%B9%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F%E5%B0%B1%E5%BF%85%E9%A1%BB%E4%BD%BF%E7%94%A8%20%5Cpar%EF%BC%9F.png)
我正在制作 Beamer 演示文稿,并注意到,如果我打开一个组范围并使用\tiny
,字体大小将不会设置,但行与行之间会有很大的间距。但是,如果我\par
在段落末尾发出 ,它会按预期工作:
\documentclass[t]{beamer}
\newcommand{\shortlipsum} {Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing
vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy
eget, consectetuer id, vulputate a, magna. Donec vehicula augue euneque.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames
ac turpis egestas. Mauris ut leo. Cras viverra}
\begin{document}
\begin{frame}
\shortlipsum
{\tiny
\shortlipsum\par % <--- removing this \par will break line spacing
}
\end{frame}
\end{document}
以下是不使用和使用之间的比较\par
:
我这样做对吗?为什么这是\par
正确的做法?
答案1
Johannes_B 已经(非常简洁地)给出了答案——“\par
修复行距”。然而,也许一点解释会很有用。
由于 tex 按段落分行,因此在段落结束之前有很多信息是未知的,此时换行符和其他字体相关属性(如\baselineskip
)均被“冻结”。因此,遇到 时有效的内容\par
将用于整个段落。
如果你在“巨型”类型的段落中跟随着 中的一个片段\tiny
,那么可能会看就像巨大部分的行距不受影响,但实际上——行与行之间通常的额外“前导”将不复存在。如果您使用小写字母并且一行没有任何降部,这一点将非常明显。
在您的示例中,您已将\tiny
组件隔离在一个封闭的组中,因此在换行之后,将使用较大字体的行距。如果您没有将其隔离开来,您会看到较大字体的行距更近,并在段落末尾强制\baselineskip
使用。tiny
\par
当类型大小发生变化时,latex 通过在环境结束之前包含来“保护”许多环境免受潜在问题的影响,因此用户可能没有意识到这种细节。
在数学文档中,有时需要减小显示方程的字体大小。在这种情况下,始终需要检查前一段的基线间距是否受到影响,如果受到影响,则必须进行额外的手动调整。
下面是一个使用数学文档中描述的场景的示例。这比问题中描述的纯文本情况更加阴险,但原理完全相同——\par
需要防止在尺寸转换时出现不必要的结果。
这里是输入,它不使用任何包,只使用“基本”文档类。
\documentclass{article}
\begin{document}
The purpose of this example is to show the effect of changing
the font size without issuing a paragraph break in appropriate
places. First, a normal size display.
\[ a + b + c = d + e + f \]
Follow this by a couple of lines of text. Note that there is
an implicit paragraph break at the end of the display, even
though the text following the display isn't indented. Now
change the font size in the display; best to do it in a group.
\begingroup \footnotesize
\[ a + b + c = d + e + f \]
\endgroup
Follow this by more text and examine the baselines of the
two preceding blocks of text. Now, try this again, but this
time include an explicit \verb+\par+ before the display. This
can mess up the vertical space before the display, and will
allow the page to break at that point, but the
baselines of this text block remain intact.\par
\begingroup \footnotesize
\[ a + b + c = d + e + f \]
\endgroup
End with some more text just to make sure that the treatment
of the transition is equivalent.
\end{document}