
Я хочу, чтобы в моем отчете первые несколько разделов имели римскую нумерацию (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
заполнит ее пустым пространством.
So \pagebreak
лучше всего использовать для точной настройки разрывов страниц, в то время как \clearpage
или \cleardoublepage
следует использовать при запросе «конец страницы здесь».