2

I would like to have the equation number on odd pages to the right and on even pages to the left. I found this How to put equation numbers on the left or the right, depending on whether the page is odd or even but it does not seem to work with the scrbook class. Any ideas on how to modify this?

Here is a MWE:


\documentclass[12pt,a4paper]{scrbook}

\usepackage{amsmath}
\linespread{1.5}

\makeatletter
\def\mathlabel#1{\@bsphack
  \protected@write\@auxout{}%
         {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
  \@esphack}
\def\eqnWrite{\@bsphack
  \protected@write\@auxout{}%
         {\string\EqnStat{\theequation}{\thepage}}%
  \@esphack}%
\def\EqnStat#1#2{%
  \expandafter\gdef\csname eqn@#1\endcsname{#2}%
}
\newcommand\@reqnnum{\hb@xt@.01\p@{}%
                      \rlap{\normalfont\normalcolor%
                        \hskip -\displaywidth(\theequation)}}
\def\equation{\let\mathlabel\label$$\refstepcounter{equation}}
\def\endequation{\eqno\eqnWrite\@ifundefined{eqn@\theequation}{\hbox{\@eqnnum}}%%
     {\expandafter\ifodd\csname eqn@\theequation\endcsname\hbox{\@reqnnum}%
     \else\hbox{\@eqnnum}\fi}$$\@ignoretrue}
\def\@@eqncr{\let\reserved@a\relax%
    \ifcase\@eqcnt \def\reserved@a{& & &}\or \def\reserved@a{& &}%
     \or \def\reserved@a{&}\else%
       \let\reserved@a\@empty%
       \@latex@error{Too many columns in eqnarray environment}\@ehc\fi%
     \reserved@a \if@eqnsw\eqnWrite%
     \@ifundefined{eqn@\theequation}{\@eqnnum}%
     {\expandafter\ifodd\csname eqn@\theequation\endcsname\@reqnnum%
     \else\@eqnnum\fi}\stepcounter{equation}\fi%
     \global\@eqnswtrue\global\@eqcnt\z@\cr}
\makeatother


\begin{document}

\begin{equation}
   y = ax + b
\end{equation}

\begin{equation}
   a^n + b^n = c^n
\end{equation}

\end{document}

Replacing scrbook with report works fine.

  • 5
    How about helping us with the basics... can you set up a minimal document that starts with \documentclass and ends with \end{document} so we don't have do build everything from scratch? Can you do that? Using a package like blindtext or lipsum to build text around some equations. Also whether one should consider multi-line aligns that may span the page boundary. – Werner Sep 24 '19 at 19:18

1 Answers1

2

I don't know about the scrbook class but perhaps the following will help, based on the changepage package provision of odd/even page checking.

%\documentclass...
\usepackage{changepage} \strictpagecheck
\newcommand{\leftright}{%
  \checkoddpage
  \ifoddpage
  % code for right eqno (which depends on your class and packages)
  \else
  % code for left eqno (which depends on your class and packages)
  \fi}
% ...
\begin{equation} \leftright
% ...
\end{equation}
% ...

If you don't want to keep adding \leftright after each \begin{equation} you can add it to the equation definition like:

\let\oldequation=\equation
\renewcommand*{\equation}{\oldequation \leftright}

and then just use \begin{equation} instead of \begin{equation} \leftright.

Peter Wilson
  • 28,066
  • What code would you use for the if part? Not sure if I like the solution because it requires to change the whole (very large) document. – diophantus7 Sep 26 '19 at 11:54
  • @diophantus7 I have extended my answer. It is up to you to decide on the code for the \if... as it will depend on the class you are using and also any maths-related packages you might be using. Perhaps you need to ask a separate question about that. – Peter Wilson Sep 27 '19 at 17:33
  • Thanks! While it looks promising and works most times, it does not work with a split environment inside a equation environment and also not with an align environment. Ideas on why this might not work? – diophantus7 Oct 01 '19 at 11:30