\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 클래스는 다양한 옵션과 명령을 제공합니다. 또한 장은 일반적으로 \cleardoublepageif 로 시작합니다 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

관련 정보