![ページ番号のスタイルを変更すると、予想よりも 1 ページ早く発生しますか?](https://rvso.com/image/286979/%E3%83%9A%E3%83%BC%E3%82%B8%E7%95%AA%E5%8F%B7%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E4%BA%88%E6%83%B3%E3%82%88%E3%82%8A%E3%82%82%201%20%E3%83%9A%E3%83%BC%E3%82%B8%E6%97%A9%E3%81%8F%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
レポートの最初のいくつかのセクションにはローマ数字 (i、ii、iii...) を使用し、レポートの本文にはページ番号としてアラビア数字 (1、2、3...) を使用するようにします。
問題は、コードから予想されるよりも 1 ページ早く切り替えが行われているように見えることです。
\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}
3 番目のセクションの下の行にコマンドを配置すると問題が解決することはわかります\pagenumbering{arabic}
が、モジュール ドキュメントがあり、セクションをコメント アウトすると、 の位置を変更し続ける必要があるため、これは不便です\pagenumbering{arabic}
。
さらに、前に改行を入れると、% === Body of report ===
MWE の問題は修正されます (ただし、何らかの理由で実際のレポートでは修正されません)。この動作には非常に困惑しています。
これはバグでしょうか?解決策はあるでしょうか?
答え1
この\pagebreak
コマンドは、段落内で指定する場合と段落間(つまり、その前に空白行がある場合)で動作が異なります。
あなたの場合、2番目は\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
「ここでページを終了」するように指示するときに使用します。