奇数/偶数页标签号未定义

奇数/偶数页标签号未定义

我希望我的方程式的标签出现在边缘,如下所示。

示例输出

我使用以下代码实现这一点:

\documentclass[12pt, a4paper, twoside, onecolumn]{scrbook}

\usepackage[
    leqno % Put equation tag on the left
]{amsmath}

% ----------
\makeatletter

% Formatting 
\def\example@EquationNumberFormat{\bfseries}
\def\example@EquationLabelName{Eq.~} 

% Define the distance to the margin from the equation tag location (i.e. left of page)
\def\example@EvenMargin{\dimexpr \marginparsep \relax}  % even pages
\def\example@OddMargin{\dimexpr \marginparsep + \textwidth \relax}  % odd pages

% Tag text
\def\tagform@#1{\maketag@@@{\example@EquationLabelName#1}}

% Tag location
% makebox must have some size otherwise the equation tag is not aligned to the equation (1sp is the smallest size unit)
% This only seems to be a problem for simple equation environments
\def\maketag@@@#1{%
    \Ifthispageodd{%
        \makebox[1sp][l]{\hspace*{\example@OddMargin}\example@EquationNumberFormat#1}
    }{%
        \makebox[1sp][r]{\example@EquationNumberFormat#1\hspace*{\example@EvenMargin}}
    }
}

\makeatother
% ----------

% To show alignment of equation tags
\usepackage{showframe}

\begin{document}

\begin{equation}
    y = m x + c
\end{equation}

\clearpage

\begin{align}
    y = mx + c~\mathrm{;}&
    &y = mx + c~\mathrm{;}&
    &y = mx + c~\mathrm{,}
\end{align}

\clearpage

\begin{align}
y =& mx + c~\mathrm{,}\\
y =& mx + c~\mathrm{,}
\end{align}

\clearpage

\begin{equation}
    \begin{split}
    y = & mx\\
    & + c
    \end{split}
\end{equation}
    
\end{document}

但是,编译上述代码时,我收到几个警告:

第 50 行:奇数/偶数页标签编号 2 未定义

第 57 行:奇数/偶数页标签编号 4 未定义

第 57 行:奇数/偶数页标签编号 5 未定义

第 65 行:奇数/偶数页标签编号 8 未定义

这些警告似乎仅出现在alignsplit环境中,而不会出现在简单equation环境中。

尽管输出是正确的,但我希望不要发出这些警告(通过纠正问题而不是忽略/抑制消息)。

警告来自文件\is@thispageodd中的命令。我在throughscrbook.cls的定义中使用了这个命令。\maketag@@@\Ifthispageodd

查看的定义\is@thispageodd,我可以看到发出警告的位置

\newcommand*{\scr@tpo}{0}
\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{%
  \@bsphack
  \begingroup
    \@tempcnta=\scr@tpo
    \advance\@tempcnta by\@ne
    \xdef\scr@tpo{\the\@tempcnta}%
    \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax
      \protect\G@refundefinedtrue
      \ClassWarning{\KOMAClassName}{%
        odd/even page label number \scr@tpo\space undefined}%  <-- WARNING
      \edef\@tempa{\the\value{page}}%
    \else
      \edef\@tempa{\csname tpo@\scr@tpo\endcsname}%
    \fi
    \ifodd\number\@tempa
      \aftergroup\thispagewasoddtrue
    \else
      \aftergroup\thispagewasoddfalse
    \fi
  \endgroup
  \edef\is@thispageodd@setlabel{%
    \if@filesw
      \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
        \noexpand\string
        \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
    \fi
    \noexpand\def\noexpand\is@thispageodd@setlabel
    {\unexpanded\expandafter{\is@thispageodd@setlabel}}%
  }%
  #1%
  \@esphack
}

但我不知道该如何解决这个问题。


版本数据:

KOMA-Script 2020/01/24 v3.29

amsmath 2020/01/20 v2.17e

相关内容