如何结合方程式和 tikz 来获得方程式的有用注释?

如何结合方程式和 tikz 来获得方程式的有用注释?

有没有办法将对齐环境的有用语法与 tikz 的图形选项结合起来?我希望重现如下图所示的方程式:

如何在 LaTeX 中重现这一现象?

第一个等式:

\begin{align*}
    a^2=\Big(b\cdot \sin(\alpha)\Big)^2+n^2
\end{align*}

第二个方程(云方程):

\begin{align*}
    h=b\cdot \sin(\alpha)
\end{align*}

显然,要得到完全相同的结果相当困难。如果在方框中有一个指向 = 的箭头,我也会很高兴。

你知道怎么做吗?使用节点,结果很糟糕。

答案1

tikzmark这是一个没有使用/ /amsmath的TikZ 解决方案。\overset\underset\overunderset

虽然这还不能产生漂亮的云,但它是进一步定制的基础,例如,像海科·奥伯迪克

目前,我决定使用圆角矩形、灰色和较小的文本。默认情况下,amsmath设置了上移和下移,\scriptstyle我们也可以这样做,但我认为它看起来不太好。

代码

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{
  cloud eq/.cd,
  edge/.style={rounded corners=+2pt, arrows=Latex[round]-},
  c/.style={cloud eq/edge,anchor=north,to path={--++( +0pt,+-2ex)\tikztonodes}},
  l/.style={cloud eq/edge,anchor=east, to path={|-++(+-1ex,+-2ex)\tikztonodes}},
  r/.style={cloud eq/edge,anchor=west, to path={|-++( +1ex,+-2ex)\tikztonodes}},
  node/.style={at end, draw, rounded corners=+1pt}
}
\newcommand*\tikzoverunderInternal[3]{%
  \tikz[trim left=+0pt, trim right=+0pt]
  \draw[cloud eq/#1, #2] (0,0) to node[cloud eq/node] {$#3$}();}
\NewDocumentCommand\tikzUnderset{ O{l} m }{
  \underset{\tikzoverunderInternal{#1}{}{#2}}}
\NewDocumentCommand\tikzOverset { O{l} m }{
  \overset{\tikzoverunderInternal{#1}{yscale=-1.2}{#2}}}
\NewDocumentCommand\tikzOverUnder {O{l} m O{r} m}{
  \overunderset{
    \tikzoverunderInternal{#3}{yscale=-1.2}{#4}}{
    \tikzoverunderInternal{#1}{}{#2}}}
\usepackage{blindtext}

\tikzset{
  cloud eq/node/.append style={scale=.7},
  cloud eq/edge/.append style=gray}
\begin{document}
\blindtext
\begin{align}
    a^2 & \tikzUnderset{h = b \cdot \sin\alpha}{=}
            (b \cdot \sin \alpha)^2 \tikzOverset[r]{a+b}{+} n^2 \\
    c^2 & \tikzUnderset[c]{\vphantom{\int_i} E=mc^2}{=}
            a^2 + b^2 \tikzOverUnder[c]{\int_i e^i}
                           [r, overlay]{a^2 >0, b^2>0}{>} 0
\end{align}
\blindtext
\end{document}

输出

在此处输入图片描述

答案2

你可以使用这个命令,我使用了一些代码,有人在我提出的一个问题中帮助了我。方程式之间的数学注释

这是我根据帖子做出的命令:

\NewDocumentCommand{\umathnote}{ mm }
   {
     \overset % ❶
        {% The annotation goes above
          \textcolor{black!20!white}{\hbox to 0pt{\hss % ❷
             $ % return to math mode
               \begin{array}{c} % ❸
                   \displaystyle #2\\ % ❹
                   \Big\downarrow % ❺
               \end{array}
             $
          \hss}
          }
        }
        {#1} % 
   }
   
\NewDocumentCommand{\dmathnote}{ mm }
   {
     \underset % ❶
        {% The annotation goes above
          \textcolor{black!20!white}{\hbox to 0pt{\hss % ❷
             $ % return to math mode
               \begin{array}{c} % ❸
                   \Big\uparrow\\ % ❹
                   \displaystyle #2 % ❺
               \end{array}
             $
          \hss}
          }
        }
        {#1} % 
   }

您可以在此处看到结果: 数学注释命令

相关内容