我正在创建一个文档,其中包含在 TikZ 中创建的标题图像。我遇到了一种不寻常的行为,这使我控制定位的尝试受挫。
如果省略页眉(例如,通过在下面的代码中注释掉\header
,则第一部分将从页面顶部开始(在此示例中)。但是,如果包含页眉图像(使用宏调用),则\header
第一部分将从较低的位置开始。它下拉的量大于各部分之间的间隔。
这个间距是多少?它从何而来?是否有定义的长度来控制它?
理想情况下,我想在\header
关联的类文件的定义中对其进行补偿,并精确控制文本在标题下方的开始位置。
\documentclass{article}
\usepackage[top=0mm, bottom=30mm, left=20mm, right=20mm, nohead, nofoot]{geometry}
\usepackage{tikz}
\newcommand{\header}{
\begin{tikzpicture}[remember picture,overlay]
\node [rectangle, fill=black!40, anchor=north, minimum width=\paperwidth, minimum height=4cm] (box) at (current page.north){};
\end{tikzpicture}}
\begin{document}
\header
\section{The First}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\section{The Second}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\end{document}
非常感谢
答案1
问题是,通过直接使用\header
,第一个\section
命令不再处于垂直模式,特别是,在部分之前的默认间距(3.5ex plus 1ex minus .2ex
); 可以通过简单地\leavevmode
在之前添加一个明确的来观察到这种效果\section
:
\documentclass{article}
\usepackage[top=0mm, bottom=30mm, left=20mm, right=20mm, nohead, nofoot]{geometry}
\usepackage{tikz}
\usepackage{atbegshi}
\begin{document}
\leavevmode\section{The First}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\section{The Second}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\end{document}
防止这种影响的一种方法是使用atbegshi
并在页面输出之前添加页眉材料:
\documentclass{article}
\usepackage[top=0mm, bottom=30mm, left=20mm, right=20mm, nohead, nofoot]{geometry}
\usepackage{tikz}
\usepackage{atbegshi}
\newcommand{\header}{%
\begin{tikzpicture}[remember picture,overlay]
\node[
rectangle,
fill=black!40,
anchor=north,
minimum width=\paperwidth,
minimum height=4cm
] (box) at (current page.north){};
\end{tikzpicture}}
\begin{document}
\AtBeginShipoutFirst{\header}
\section{The First}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\section{The Second}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ipsum ipsum, porta eget rutrum et, scelerisque at tortor. Donec adipiscing est sed odio congue, quis pulvinar leo semper. Sed euismod ut augue a imperdiet. Ut et enim quam. Nam id hendrerit mi, sed pretium tortor.
\end{document}