\thepage 与浮动

\thepage 与浮动

我正在写一份报告,我想确保每个新章节都从奇数页开始。所以我写了以下脚本,放在每个章节之前:

...    
%-- 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 类提供了很多选项和命令。章节通常以\cleardoublepageiftwoside开头。

对于标准类,\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

相关内容