在双面回忆录文档中,我尝试添加一个在边距中有偏移的框,具体取决于是否\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}