在方程式旁添加注释和备注

在方程式旁添加注释和备注

对于我目前正在撰写的一篇论文,我想强调并解释方程中的一些数学变换(以解释为什么变换成立)。当然,我可以“打断”数学证明并在新行中解释变换,但我认为如果注释直接写在它们相关的行旁边会更好。我已经考虑过创建一个或两个小页面的表格,但我不确定是否有更好的方法来做到这一点。

附件中有一个简单的例子(实际方程更复杂),只是为了让你了解我在想什么。箭头不是强制性的,但如果注释写在数学线之间就更好了(但方程的间距不应因注释而改变)。谢谢你的帮助!

在此处输入图片描述

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

\begin{document}

\begin{equation*}
\begin{split}
\textrm{OPT} & = \textrm{OPTL} + \textrm{OPTR} \\
    & = (x+y) + (y+z) \\
    & \leq 2* (y+z) \\
    & = \textrm{OPTR} + \textrm{OPTR}  
\end{split}
\end{equation*}

\end{document}

答案1

witharrows包可以做这样的事情。

\documentclass{scrartcl}
\usepackage{amsthm} 
\usepackage{amssymb} 
\usepackage{mathtools}
\usepackage{witharrows}

\WithArrowsOptions{tikz={font={\normalfont\small}}}

\begin{document}

\begin{equation*}
\begin{WithArrows}
\mathrm{OPT} & = \mathrm{OPTL} + \mathrm{OPTR}\Arrow{Definition of $\mathrm{OPT}$ and $\mathrm{OPTR}$} \\
    & = (x+y) + (y+z)\Arrow{As $x \leq z$} \\
    & \leq 2* (y+z)\Arrow{Definition of $\mathrm{OPTR}$} \\
    & = \mathrm{OPTR} + \mathrm{OPTR}  
\end{WithArrows}
\end{equation*}

\end{document}

在此处输入图片描述


还有一种半自动的方式可以在文本中获取换行符,您需要指定文本宽度,然后标签将被断开以适合水平空间。

\mathrm{OPT} & = \mathrm{OPTL} + \mathrm{OPTR}
\Arrow[tikz={text width=5.3cm}]{Definition of $\mathrm{OPT}$ and $\mathrm{OPTR}$,
  furthermore we use the well-known Unicorn theorem} \\

该解决方案是半自动的,因为您必须为text-width自己找到一个好的值,这意味着偶尔使用时它可能并不比手动中断更快\\

一旦文本占据多行,您就会面临碰到上面或下面的标签的风险。


版本 1.9witharrows定义了一个替换环境,align其中标签可以自动换行。感谢 F. Pantigny 在评论中提供的提示。

\begin{DispWithArrows*}[wrap-lines]
\mathrm{OPT} & = \mathrm{OPTL} + \mathrm{OPTR}\Arrow{Definition of $\mathrm{OPT}$ and $\mathrm{OPTR}$,
  and the Unicorn theorem} \\
    & = (x+y) + (y+z)\Arrow{As $x \leq z$} \\
    & \leq 2* (y+z)\Arrow{Definition of $\mathrm{OPTR}$} \\
    & = \mathrm{OPTR} + \mathrm{OPTR}  
\end{DispWithArrows*}

答案2

我提出以下两种可能性之一,基于以下理由alignat

\documentclass{scrartcl}

\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.3pt}

\DeclareFontFamily{U}{mathb}{\hyphenchar\font45}
\DeclareFontShape{U}{mathb}{m}{n}{ <-6> mathab5 <6-7> mathb6 <7-8>
mathb7 <8-9> mathb8 <9-10> mathb9 <10-12> mathb10 <12-> mathb12 }{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
%
\DeclareMathSymbol{\dlsh}{\mathrel}{mathb}{"EA}

\begin{document}

\begin{alignat*}{2}
  \textrm{OPT} & = \textrm{OPTL} + \textrm{OPTR} \\
    & = (x+y) + (y+z) & \hspace{4em}& \rlap{\footnotesize Definition of OPTL and OPTR}\\
      & \leq 2* (y+z) & & \text{\footnotesize As $ x \le z $}\\
      & = \textrm{OPTR} + \textrm{OPTR} & &\rlap{\footnotesize Definition of OPTR}
\end{alignat*}

\begin{alignat*}{2}
  \textrm{OPT} & = \textrm{OPTL} + \textrm{OPTR} \\[-1ex]
 & &\quad &\dlsh\quad\text{\footnotesize Definition \rlap{of OPTL and OPTR}} \\[-1ex]
    & = (x+y) + (y+z) \\[-1ex] %
    & & & \dlsh \quad \text{\footnotesize As $ x \le z $} \\[-1ex]
      & \leq 2* (y+z) \\[-1ex]
 & & & \dlsh\quad\text{\footnotesize Definition \rlap{of OPTR}} \\[-1ex]
      & = \textrm{OPTR} + \textrm{OPTR}
\end{alignat*}

\end{document} 

在此处输入图片描述

答案3

Bernard 答案的一个变体,将其中一个箭头旋转了90 度。此箭头也是 Unicode 格式,因此此代码也amssymb可以立即使用。unicode-math

\documentclass[varwidth, preview]{standalone}

\usepackage{mathtools}
\usepackage{amssymb} % or unicode-math
\usepackage{graphicx}

\newcommand\arrownext{\rotatebox[origin=c]{-90}{\ensuremath{\curvearrowright}}}
\newcommand\OPTL{\mathop{\mathrm{OPTL}}}
\newcommand\OPTR{\mathop{\mathrm{OPTR}}}
\newcommand\OPT{\mathop{\mathrm{OPT}}}

\begin{document}
\begin{alignat*}{2}
  \OPT & = \OPTL + \OPTR \\[-1ex]
      & & &\arrownext\quad
      \text{\footnotesize Definition of $\OPTL$ and $\OPTR$} \\[-1ex]
    & = (x+y) + (y+z) \\[-1ex] %
      & & &\arrownext\quad \text{\footnotesize As \(x \le z \)} \\[-1ex]
    & \leq 2* (y+z) \\[-1ex]
      & & & \arrownext\quad
      \text{\footnotesize Definition of $\OPTR$} \\[-1ex]
    & = \OPTR + \OPTR
\end{alignat*}
\end{document}

输出

相关内容