我希望我的报告的前几个部分使用罗马数字(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
用于要求“在此结束页面”。