我正在测试发票的新布局。我试图在发票标题前放置一些小的垂直间距。在测试垂直间距时,我发现了一个奇怪的行为,并将其减小到 0 只是为了看看会发生什么:
\begin{document}
\vspace*{0 mm}
{\LARGE\center <<title>>\\}
\vspace{10 mm}
...
这会产生与以下布局不同的布局:
\begin{document}
{\LARGE\center <<title>>\\}
\vspace{10 mm}
...
在第一种情况下,存在相当大的垂直空间(即使我将 i 设置为 0 毫米),而在第二种情况下则没有。为什么?
答案1
以下示例使用\centering
而不是环境center
,请参阅问题“我们什么时候应该使用 \begin{center} 而不是 \centering?”了解详情。
\showlists
可以用来分析间距:
% configuring, how much is shown by `\showlists` or `\showbox`
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\documentclass{article}
\begin{document}
\vspace*{0mm}
{\LARGE\centering Title}
\showlists
\end{document}
结果:
### vertical mode entered at line 0 ### current page: \write-{} \glue(\topskip) 10.0 \rule(0.0+0.0)x* \penalty 10000 \glue 0.0 \glue 0.0 \glue(\parskip) 0.0 plus 1.0 \glue(\baselineskip) 0.0 \hbox(12.0+0.0)x345.0, glue set 311.69482fil .\hbox(0.0+0.0)x0.0 .\OT1/cmr/m/n/17.28 T .\OT1/cmr/m/n/17.28 i .\OT1/cmr/m/n/17.28 t .\OT1/cmr/m/n/17.28 l .\OT1/cmr/m/n/17.28 e .\penalty 10000 .\glue(\parfillskip) 0.0 plus 1.0fil .\glue(\rightskip) 0.0 total height 22.0 plus 1.0 goal height 550.0 prevdepth 0.0, prevgraf 1 line
因此,页面在标题前包含额外的空白元素:
\topskip
,这是一个帮助对齐页面首行的参数。它只会自动添加到页面顶部。但是,在此页面上,没有要对齐的“首行”。因此可以将其设置为零。\parskip
,0pt plus 1pt
但可能会有所不同。\baselineskip
,这里0pt
,因为下一行超过了大(\LARGE
)。
以下示例避免了这些空格:
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\documentclass{article}
\begin{document}
\begingroup
\setlength{\topskip}{0mm}% \topskip is set to zero
\vspace*{0mm}%
\setlength{\parskip}{0pt}% \parskip is set to zero
\nointerlineskip % avoids addition of \baselineskip before next line
\centering
\LARGE
Title
\par
\endgroup
\showlists
\end{document}
结果:
### vertical mode entered at line 0 ### current page: \write-{} \glue(\topskip) 0.0 \rule(0.0+0.0)x* \penalty 10000 \glue 0.0 \glue 0.0 \glue(\parskip) 0.0 \hbox(12.0+0.0)x345.0, glue set 155.84741fil .\glue(\leftskip) 0.0 plus 1.0fil .\hbox(0.0+0.0)x0.0 .\OT1/cmr/m/n/17.28 T .\OT1/cmr/m/n/17.28 i .\OT1/cmr/m/n/17.28 t .\OT1/cmr/m/n/17.28 l .\OT1/cmr/m/n/17.28 e .\penalty 10000 .\glue(\parfillskip) 0.0 .\glue(\rightskip) 0.0 plus 1.0fil total height 12.0 goal height 550.0 prevdepth 0.0, prevgraf 1 line
这样标题就出现在了文本区域的顶部。可以通过showframe
封装几何选项来可视化:
\documentclass[a5paper]{article}
\usepackage[
showframe,
% smaller image for answer in TeX.SX
paperwidth=5cm,
paperheight=5cm,
margin=5mm,
includeheadfoot,
]{geometry}
\begin{document}
\begingroup
\setlength{\topskip}{0mm}%
\vspace*{0mm}%
\nointerlineskip
\setlength{\parskip}{0pt}%
\centering
\LARGE
Title
\par
\endgroup
\end{document}