Я пишу отчет и хочу убедиться, что каждая новая глава начинается на нечетной странице. Поэтому я написал следующий сценарий, который я поместил перед каждой главой:
...
%-- 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
где-то не ясно, какие страницы будут. Гораздо безопаснее место вверху страницы.Многие классы документов предоставляют option
twoside
и command\cleardoublepage
. Например, классы KOMA-Script предоставляют множество опций и команд. Также глава обычно начинается с\cleardoublepage
iftwoside
is given.
Для стандартных классов \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