我正在寫一份報告,我想確保每個新章節都從奇數頁開始。所以我寫了下面的腳本,放在每章之前:
...
%-- to make sure that a new chapter starts on the right side (odd page) %
\ifodd \thepage
{\newpage
\thispagestyle{empty}
\mbox{}
}
\else
{}
\fi
%-----------------------------------------------------------------------%
\chapter{Chap_name}
...
其工作原理如下:
如果我的新章節之前的頁面是奇數,則表示我必須新增一個空白頁才能開始在下一個奇數頁碼中開始新章節。
如果上一頁是普通頁面,則效果很好。
但是,當我之前的頁面中有一個圖形,由於它不適合頁面並且頁面中沒有文字與浮動一起移動到新頁面時,該腳本不起作用。
該命令\thepage
會傳回錯誤的頁碼(顯然,如果頁面僅包含浮點數,則它不會增加),因此如果最後一頁確實是奇數,它不會添加空白頁。
我不知道如何解決這個問題。有任何想法嗎?
感謝您的協助。
答案1
評論:
\thepage
可以是任何內容,羅馬數字,複雜的頁碼 (1-2
),...但是,\ifodd
只需要阿拉伯數字。更好的是使用計數器值\value{page}
。輸出例程稱為異步。因此,在
\ifodd
某個時候,還不清楚頁面是什麼。頁面頂部的位置更安全。許多文檔類別提供選項
twoside
和命令\cleardoublepage
。例如,KOMA-Script 類別提供了大量選項和命令。另外,一章通常以\cleardoublepage
if開頭twoside
。
對於標準類,\cleardoublepage
可以重新定義為空白頁面設定空白頁首和頁尾:
\makeatletter
\renewcommand*{\cleardoublepage}{%
\clearpage % output floats if necessary
% new page starts here
\if@twoside
\ifodd\value{page}%
\else
\begingroup
\pagestyle{empty}%
\hbox{}\newpage
\if@twocolumn
\hbox{}\newpage
\fi
\endgroup
\fi
\fi
}
\makeatother