根据奇数页放置错误的框

根据奇数页放置错误的框

在双面回忆录文档中,我尝试添加一个在边距中有偏移的框,具体取决于是否\c@page为奇数。

它几乎可以正常工作,但是当此框出现在分页符附近时。在下面的 MWE 中,Écriture第 2 页上的应该位于左边距,而Histoire第 3 页上的应该位于另一侧。

如何获取正确的页码以便在正确的位置打印该框?

% !TeX TS-encoding = utf8
% !TeX TS-spellcheck = fr_FR
% !BIB TS-program = biber
% !TeX TS-program = lualatex

\documentclass[12pt,a4paper]{memoir}

\usepackage[french]{babel}
\usepackage{xparse}

\RequirePackage{tcolorbox}
\tcbuselibrary{most}

\makeatletter
\NewDocumentCommand{\matiere}{mO{#1}go}{%
    \vskip \onelineskip
    \ifodd\thepage
    \hspace{\linewidth+6em}\makebox[0pt][r]{\tcbox[
        tcbox raise base,
        boxrule=0.2mm,
        fontupper=\sffamily\bfseries\LARGE,
        nobeforeafter,
        colback=blue!3,colframe=blue!50,
        ]{#1 p.~\thepage}}
    \else
    \noindent\hspace{-6em}\makebox[0pt][l]{\tcbox[
        tcbox raise base,
        boxrule=0.2mm,
        fontupper=\sffamily\bfseries\LARGE,
        nobeforeafter,
        colback=blue!3,colframe=blue!50,
        ]{#1 p.~\thepage}}
    \fi
    \IfValueTF{#3}{\nobreak\section*{#3}%
%        \index[#2]{\thepart \thechapter @#3}%
        \addcontentsline{toc}{section}{#1 — #3}}{\addcontentsline{toc}{section}{#1}}
    \IfValueT{#4}{\nobreak #4}
    \sectionmark{#1}
    \vskip 2.3ex \@plus .2ex
}
\makeatother

\usepackage{lipsum}

\begin{document}

    \chapter{chapitre}
    \matiere{Calcul}{L'addition}
    \lipsum[1-2]

    \matiere{Écriture}[Ecriture]
    \lipsum[3-4]

    \matiere{Géographie}[Geographie]{Les fleuves}
    \lipsum[5]

    \matiere{Histoire}
    \lipsum[6-9]

    \clearpage
    \tableofcontents

\end{document}

答案1

感谢@daleif的提示和这个答案现在它似乎工作正常了。

我刚刚改了线

\ifodd\thepage

经过

\strictpagechecktrue
\checkoddpage
\ifoddpage

相关内容