Изменение стиля нумерации страниц происходит на одну страницу раньше, чем ожидалось?

Изменение стиля нумерации страниц происходит на одну страницу раньше, чем ожидалось?

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

Связанный контент