页码样式的更改比预期提前了一页?

页码样式的更改比预期提前了一页?

我希望我的报告的前几个部分使用罗马数字(i,ii,iii ...),报告正文使用阿拉伯数字(1,2,3 ...)作为页码。

问题是切换似乎比我从代码中预期的要早一个页面:

\documentclass{report}
\begin{document}
% === Abstract etc ===
\pagenumbering{roman}
\section*{first section}
Want this to be page i
\pagebreak
\section*{second section} 
Want this to be page ii, but it appears as 1 instead
\pagebreak
% === Body of report ===
\pagenumbering{arabic} %change to arabic for final page
\section*{third section}
Want this to be page 1, but it appears as 2 instead
\section*{fourth section}
\end{document}

我可以看到,如果我将\pagenumbering{arabic}命令放在第三部分下面的那一行,那么它就可以解决问题,但这很不方便,因为如果我有一个模块化文档并注释掉某个部分,那么我必须不断改变的位置\pagenumbering{arabic}

此外,如果我在前面加一个换行符,% === Body of report ===它就会修复我的 MWE 中的问题(但由于某种原因,它不会修复我的实际报告)。对这种行为感到非常困惑。

这是一个错误吗?有解决方案吗?

答案1

\pagebreak当命令位于段落内或段落之间(即前面有一个空行)时,该命令的工作方式有所不同。

就你的情况而言,第二个\pagebreak属于包含文本的段落

Want this to be page ii, but it appears as 1 instead

并且只有在将段落分成行之后才会生效,当 LaTeX 扫描\section*{third section}并已将页码更改为时就会发生这种情况arabic

不要害怕留下空行,但\clearpage在这种情况下使用;这样的命令会结束当前段落(如果前面没有空行),这样就解决了这个问题。

\documentclass{report}

\begin{document}

% === Abstract etc ===
\pagenumbering{roman}

\section*{first section}

This is page i

\clearpage


\section*{second section} 

This is page ii

\clearpage

% === Body of report ===
\pagenumbering{arabic} %change to arabic for final page

\section*{third section}

This is page 1


\section*{fourth section}

\end{document}

\pagebreak和之间还有另一个区别\clearpage:如果\flushbottom有效(在类中book),\pagebreak将尝试用可用文本填充页面,而 则\clearpage用空白填充。

因此,\pagebreak最适合用于微调分页符,而\clearpage或则\cleardoublepage用于要求“在此结束页面”。

相关内容