我在使用 geometry 包时遇到了问题。分配\newgeometry
中间文档后,我的页面内容会垂直移动。我知道\newgeometry
“禁用序言中指定的所有选项”,但我几乎给出了与序言中\newgeometry
相同的变量(我使用文件进行设置)。以下是我的文档,采用 mws 风格:geometry
.sty
\documentclass[11pt, oneside, a4paper]{memoir}
\usepackage{eso-pic}
\usepackage[left=24mm,right=14mm,top=18mm,bottom=40mm]{geometry}
\usepackage{lipsum}
\makepagestyle{strucrep}
\makeoddhead{strucrep}{\small
\begin{tabularx}{0.6\textwidth}{@{}l X r | l r}
\textbf{Sag:} & & Building 231 & \textbf{Dok. dato:} & 2017-05-21 \\
\textbf{Sags nr.:} & & A-2341 & \textbf{Rev. dato:} & 2017-05-28 \\
\textbf{Doc. ID:} & & K09\_B2.2 &\textbf{Revision:} & A \\
\multicolumn{3}{@{}l |}{\textbf{A. Konstruktionsdokumentation}} &\textbf{Side:} & \thepage \\
\multicolumn{4}{@{}l }{\Large\textbf{A1. Projektgrundlag}} & \rule{0pt}{6mm} \\
\end{tabularx}
}{}{}
\setlength{\headheight}{32mm}
\setlength{\headsep}{8mm}
\pagestyle{strucrep}
\newcommand\BackgroundPicture{%
\setlength{\unitlength}{1mm}
\put(10, 10){\framebox(192,247){}}
}
\AddToShipoutPicture{\BackgroundPicture}
\begin{document}
\section{\TeX}
\lipsum
\newpage
\ClearShipoutPicture
\AddToShipoutPicture{\BackgroundPicture}
\newgeometry{left=24mm, right=44mm, top=18mm, bottom=40mm, marginparsep=10mm, marginparwidth=20mm}
\edef\marginnotetextwidth{\the\textwidth}
\section{\LaTeX}
\lipsum
\end{document}
我尝试在 之后重复\setlength{\headheight}
and命令,但无济于事。\setlength{\headsep}
\newgeometry
我想我可以将top=XXmm
它强制放到正确的位置,但我真的很想知道如何以我理解的方式来修复它。
答案1
正如@Schweinebacke 指出的那样,问题在于我\setlength
在定义几何之后使用了它,这修复了错误定义的几何。
正确的方法是定义“顶部”以包含标题(以及标题段和标题高度),并在几何定义中定义headheight
和。这必须在和中完成。headsep
geometry
\newgeometry
所以正确的方法是:
\usepackage[left=24mm,right=14mm,top=40mm,bottom=40mm, headheight=32mm, headsep=8mm]{geometry}
和
\newgeometry{left=24mm, right=44mm, top=40mm, bottom=40mm, marginparsep=10mm, marginparwidth=20mm, headheight=32mm, headsep=8mm}
(您可以使用 在文本区域中包含标题includehead
,但我更喜欢这种方式)
感谢@Schweinebacke