align を mathtools と一緒に使用すると数式の数字が表示されない

align を mathtools と一緒に使用すると数式の数字が表示されない

以下では

\documentclass{memoir}
\usepackage{amssymb,amsmath}
\usepackage[fixamsmath]{mathtools}
  \mathtoolsset{showonlyrefs,showmanualtags,mathic,centercolon}

\renewcommand{\u}{\textbf{u}}
\renewcommand{\v}{\textbf{v}}
\newcommand{\R}{\mathbb{R}}

\begin{document}
\begin{align}
  \langle \u,\v \rangle_{\text {euc}} := \sum_{i=1}^n u_i v_i \quad \forall \u,\v \in \R^n
\end{align}
\end{document}

方程式の番号付けがうまくいきませんが、数式は正常に表示されます。コードに問題があるのでしょうか?

答え1

'showonlyrefs' オプションにより、mathtools方程式のラベルが消えます。これをキャンセルすると、要求どおりに方程式番号が戻ります。

ソルピック

\documentclass{memoir}
\usepackage{amssymb,amsmath}
\usepackage[fixamsmath]{mathtools}
  \mathtoolsset{showmanualtags,mathic,centercolon}

\newcommand{\uvec}{\mathbf{u}}
\newcommand{\vvec}{\mathbf{v}}
\newcommand{\R}{\mathbb{R}}

\begin{document}
\begin{align}
  \langle \uvec,\vvec \rangle_{\textup{euc}} := \sum_{i=1}^n u_i v_i \quad \forall \uvec,\vvec \in \R^n
\end{align}
\end{document}

\u注意すべき点は、(1)と を再定義していない\v\uvecとに名前を変更した\vvec)、(2)との定義で の\mathbf代わりに を使用し、(3)の代わりに を使用したことです。\textbf\uvec\vvec\textup\text

答え2

あなたのコードは問題ありません。Ruben と Mico のコメントで提案されているように、少し変更し、プリアンブルに方程式番号を押し込むことを妨げるものは何もないという仮定のもと、結果は次のようになります。

結果

コード:

\documentclass[12pt,border=1mm,preview]{standalone}
\usepackage{amssymb,amsmath}

\renewcommand\u{\mathbf{u}}
\renewcommand\v{\mathbf{v}}
\newcommand\R{\mathbb{R}}

\begin{document}
\begin{equation}
  \langle \u,\v \rangle_{\textup{euc}} := 
    \sum_{i=1}^n u_i v_i \quad \forall\ \u,\v \in \R^n
\end{equation}
\end{document} 

align数学環境でも、 と同じ結果が得られますgather。ベクトルの名前は方程式の番号付けに影響しないため変更しませんでしたが、このような短い名前を使用するのは良くありません。たとえば、\uはすでにどこかで定義されているため、 を使用します。より適切な名前は (コメントで提案されているように) 、\renewcommandです。同様に、@daleif のコメントを考慮するのも良いでしょう。\uvec\vvec

関連情報