对齐和重叠等号

对齐和重叠等号

这是我在 tex.stack 上的第一个问题。我希望我的 SRE 足够简短和精确,能够帮助我。基本上,我想对齐“=”下的所有方程式。在对齐环​​境中,我们使用“&”来处理这个问题。但是,如果我想覆盖“=”,它就不起作用了:

\documentclass[a4paper, bibtotocnumbered,liststotoc,12pt]{scrartcl}


\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}


\newcommand{\matr}[1]{\mathbf{#1}} 
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y     

\begin{document}
\begin{align*}
0 &=\partial \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) \\
&\overset{\mathrm{Def. 1}}{=} \nabla \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) 
\end{align*}
\end{document}

我还尝试在里面设置&

\overset{\mathrm{Def. 1}}{&=} \nabla \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) 

但我收到一个错误

答案1

一个快速而粗略的版本,对两者使用相同的宽度,从而实现正确的对齐。如果您经常使用这种方法,我不推荐这种方法(尽管如果您的“Def X.”始终具有相同的宽度,例如表格编号,它可能会产生所需的结果)。

设置宽度对齐

\documentclass[a4paper, bibtotocnumbered,liststotoc,12pt]{scrartcl}


\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}


\newcommand{\matr}[1]{\mathbf{#1}} 
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y     

\newlength{\tempdef}
\settowidth{\tempdef}{\({}\overset{\mathrm{Def. 1}}{=}{}\)}

\begin{document}
\begin{align*}
0 &\makebox[\tempdef][c]{=}\partial \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) \\
&\overset{\mathrm{Def. 1}}{=} \nabla \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) 
\end{align*}
\end{document}

答案2

这是一个解决方案,它设置了一个名为的专用宏\defeq;它接受一个参数,即被调用的定义的编号。该解决方案还设置了一个宏来表示 L2 范数。

在此处输入图片描述

\documentclass[a4paper, bibtotocnumbered,liststotoc,12pt]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amssymb,amsthm,mathtools}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert} % L_2 norm

\newcommand\defeq[1]{\overset{\mathclap{%
   \scriptscriptstyle\mathrm{Def.}\mkern1.5mu#1}}{=}\:}

\newcommand{\matr}[1]{\mathbf{#1}} 
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y    

\begin{document}
\begin{align*}
0 &=  \partial \bigl(\tfrac{1}{2N} \norm{\y- \X\beta}_{2}^2\bigr) \\
  &\defeq{1} \nabla \bigl(\tfrac{1}{2N} \norm{\y- \X\beta}_{2}^2\bigr) 
\end{align*}
\end{document}

答案3

您可以使用\clap定义的命令mathtools来设置重叠内容,之后必须添加一个小空格,或者使用\eqmathbox基于\eqmakeboxfrom 包的命令eqparbox,并将每个对齐符号括在这样的框中。我借此机会用易于扩展的命令替换您的双杠对\norm,在我看来,这会使代码更清晰:

\documentclass[a4paper, bibtotocnumbered,liststotoc,12pt]{scrartcl}


\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][eq]{\eqmakebox[#1]{$\displaystyle #2$}}

\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y

\begin{document}

\begin{align*}
0 &=\:\partial \Big(\frac{1}{2N} \norm{\y- \X\beta}_{2}^2\Big) \\
&\overset{\mathclap{\mathrm{Def. 1}}}{=}\: \nabla \Big(\frac{1}{2N} \norm{\y- \X\beta}_{2}^2\Big)
\end{align*}


\begin{align*}
0 &\mathrel{\eqmathbox{=}}\partial \Big(\frac{1}{2N} \norm{\y- \X\beta}_{2}^2\Big) \\
&\mathrel{\eqmathbox{\overset{\mathrm{Def.1}}{=}}} \nabla \Big(\frac{1}{2N}\norm{\y- \X\beta}_{2}^2\Big)
\end{align*}

\end{document} 

在此处输入图片描述

答案4

利用该包,您可以通过在覆盖和之间aligned-overset写入来做到这一点:&=

\documentclass[a4paper, bibtotocnumbered,liststotoc,12pt]{scrartcl}


\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{aligned-overset}


\newcommand{\matr}[1]{\mathbf{#1}} 
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y     

\begin{document}
\begin{align*}
0 &=\partial \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) \\
\overset{\mathrm{Def. 1}}&{=} \nabla \Big(\frac{1}{2N} ||\y- \X\beta||_{2}^2\Big) 
\end{align*}
\end{document}

在此处输入图片描述

相关内容