我想让章节标题在偶数页和奇数页上看起来不同。我有以下 MnWE,采用简单的方法。问题是您不知道您的章节标题会移动到下一页。我甚至尝试在章节排版后检查页码的奇怪之处,但没有成功(即“After:”文本)。
\documentclass[a4paper,twoside]{article}
\makeatletter
\let\X@section\section
\def\section#1{%
\ifodd\c@page\relax
\X@section{ODD: #1}%
\else
\X@section{EVEN: #1}%
\fi
\par After:\ifodd\c@page\relax odd\else even\fi \par % <-- for testing purposes
}
\makeatother
\usepackage{lipsum}
\begin{document}
\section{Test section} \lipsum[1]
\section{Test section} \lipsum[1]
\section{Test section} \lipsum[1]
\section{Test section} \lipsum[1]
\section{Test section} \lipsum[1]
\end{document}
答案1
尝试使用titlesec
\titleformat
包。其中包含的命令可以采用page=odd
或page=even
选项,根据偶数或奇数页码提供不同的格式,就像您想要的那样。
\usepackage{titlesec}
\titleformat{name=\section,page=odd}{}{ODD:}{.5em}{}
\titleformat{name=\section,page=even}{}{EVEN:}{.5em}{}
在序言中应该给出你想要的东西。
答案2
这ifoddpage
包会为您进行此项检查。
基本上,您需要使用该\label
\pageref
机制来获取可靠的页码(并在下次运行乳胶时进行更正),但ifoddpage
隐藏混乱的细节。
答案3
尽管我使用了另一种解决方案,但我还是用自己的方式来实现这一点浮动字幕,效果很好(但该ifoddpage
包没有解决这个问题)。它要求将目录包含在文档中,并进行 3 次 latex 处理。它没有解决 的可选参数\caption
。
\def\l@xfloatx#1#2{
\ifodd#2\relax
\protected@write\@auxout{}{%
\string\@setxflxodd{\string\@xflxoddtrue}
}
\else
\protected@write\@auxout{}{%
\string\@setxflxodd{\string\@xflxoddfalse}
}
\fi
}
\newif\if@xflxodd
\def\@writexflxodd{%
\addcontentsline{toc}{xfloatx}{\relax}%
}
\newcounter{xflxoddpre}
\def\@setxflxodd#1{
\stepcounter{xflxoddpre}
\expandafter\gdef\csname @xflxodd@\roman{xflxoddpre}\endcsname{#1}
}
\newcounter{xflxodd}
\def\@usexflxodd{
\stepcounter{xflxodd}
\ifodd\c@page\relax
\@xflxoddtrue
\else
\@xflxoddfalse
\fi
\csname @xflxodd@\roman{xflxodd}\endcsname%
}
\let\x@caption\caption
\def\caption#1{\@writexflxodd\@usexflxodd\if@xflxodd odd\else even\fi\ #1}