考虑注释掉的代码\label{L}
(位于第二个 tikzpicture 正上方):
\documentclass[12pt]{book}
\usepackage[paperwidth=5.5in,paperheight=8.25in]{geometry}
\textwidth=4in \textheight=6.40in \voffset -7pt \evensidemargin=-10pt
\usepackage{cleveref,lipsum}
\crefname{page}{p.}{pp.}
\usepackage[tracking=true]{microtype}
\usepackage{tikz}
\usepackage{color}
\definecolor{someblue}{RGB}{197,213,255}
\usepackage{idxlayout}
\usepackage{mathptmx}
\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tikzpicture}[pencildraw/.style={ %
decorate,
decoration={random steps,segment length=4pt,amplitude=2.5pt}
} %
]
\node[preaction={fill=black,opacity=.7,transform canvas={xshift=1mm,yshift=-1mm}},
%pencildraw,
draw,fill=someblue,text width=0.85\textwidth,inner sep=4mm]
{\begin{minipage}{3.42in} \footnotesize
\selectfont \textbf{\lipsum[1]} \vskip -6pt \hfill \textbf{\emph{Lorem Ipsum}}
\end{minipage}};
\end{tikzpicture}
\end{center}
%\label{L}
\begin{center}
\begin{tikzpicture}[pencildraw/.style={ %
decorate,
decoration={random steps,segment length=4pt,amplitude=2.5pt}
} %
]
\node[preaction={fill=black,opacity=.7,transform canvas={xshift=1mm,yshift=-1mm}},
%pencildraw,
draw,fill=someblue,text width=0.85\textwidth,inner sep=4mm]
{\begin{minipage}{3.42in} \footnotesize
\selectfont \textbf{\lipsum[2]} \vskip -6pt \hfill \textbf{\emph{Lorem Ipsum}}
\end{minipage}};
\end{tikzpicture}
\end{center}
%\newpage
%\noindent Why does the label command add additional vertical space on \cpageref{L}?
\end{document}
产生
现在,如果我再次运行代码(这次没有\label{L}
注释掉),两个 tikzpicture 之间的垂直空间就会增加:
问题:为什么该\label
命令会影响两个 tikzpictures 之间的垂直间距;如果可能的话,我该如何防止这种情况发生?
谢谢。
答案1
\label
如果在垂直模式下使用,会影响间距。如果您有一个 center 环境,效果会较小,或者如果它紧跟在第一个 之后,效果会完全消失\end{tikzpicture}
,因此:\end{tikzpicture}\label{L}
center
随着在中心块前后添加垂直空间,空间也会增加,但与大多数乳胶显示结构一样,它会检查任何紧接在前面的空间,并将使用的垂直空间安排为现有空间和即将添加的空间中的最大值。标签会生成一个\write
节点,以防止第二个节点center
查找并看到第一个节点添加的空间,因此您会得到一个双倍空间,第一个节点末尾的空间,center
然后是\label
节点,然后是第二个节点开头的空间center
。
除了影响空间之外,由于其他原因,这是一个糟糕的标签位置。由于没有可引用的计数器,这可能是因为,\pageref
但标签前后都有分页符位置,因此您可以获得对任一页面的引用。\end{tikzpicture}\label{L}
如果您想标记第一个 tikzpicture 的结尾,则应使用;\leavevmode\label{L}\begin{tikzpicture}
如果您想标记第二个 tikzpicture 的开头,则应使用。