使用 \tikzmark 标记方程的步骤

使用 \tikzmark 标记方程的步骤

我对这个问题得到的结果非常满意:结合两个 \tikzmark 解决方案。(等待@PeterGrill 更新他的答案)这\tikzmark是一个很棒的创作。我现在遇到的问题是创建如下图所示的标签:

在此处输入图片描述

我知道可以应用节点的命令midway和,below但不知道为什么我无法获得它。是否可以创建一个简单的命令,假设\mylabel{node1}{node2}{text}它可以实现所需的结果?

这是我的 MWE:

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{tikz}
\newcommand{\sn}[2]{\ensuremath{{#1}\times 10^{#2}}}
\newcommand{\mtikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\tikzset{square arrow/.style={to path={-- ++(0,-.25) -| (\tikztotarget)}}}

\begin{document}
    \begin{align*}
    (\sn{3.14}{-\mtikzmark{a}2}) + (\sn{1.2}{-\mtikzmark{b}4}) &= (\sn{3.14}{-2}) + (\sn{0.012}{-2})\\
                                     &= \sn{(3.14+0.012)}{-2}\\
                                     &= \sn{3.152}{-2}
      \tikz[overlay,remember picture] {\draw[<->,square arrow] (a.south) to (b.south);}
    \end{align*}
\end{document}

请注意,我仍未实施引用帖子中给出的解决方案,因为我认为这是一个不同的问题。不幸的是,\tikzmark上面的定义固定在等式下方,而不是上方。如果能对此进行定制,我将不胜感激。

答案1

这是一种可能性,使用以下语法定义两个命令\mytlabel(用于上面的文本)和(用于下面的文本):\myblabel

\mytlabel[<options>]{<start.mark>}{<end-mark>}{<text>}
\myblabel[<options>]{<start.mark>}{<end-mark>}{<text>}

可选参数可用于将选项传递给包含文本的节点以进行微调:

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\sn}[2]{\ensuremath{{#1}\times 10^{#2}}}
\newcommand{\mtikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\tikzset{mylabel/.style={align=center,fill=white,near start,font=\footnotesize}}

%\mytlabel[options]{start.mark}{end-mark}{text}
\newcommand\mytlabel[4][]{%
\tikz[overlay,remember picture]
  {\draw[<->] ([yshift=4pt]#2.north) -- ++(0,0.25)  -| node[mylabel,#1] {#4} ([yshift=4pt]#3.north);}
}
%\myblabel[options]{start.mark}{end-mark}{text}
\newcommand\myblabel[4][]{%
\tikz[overlay,remember picture]
  {\draw[<->] (#2.south) -- ++(0,-0.2)  -| node[mylabel,#1] {#4} (#3.south);}
}

\begin{document}
\begin{align*}
(\sn{3\mtikzmark{e}.14}{-\mtikzmark{a}2}) + (\sn{1.2}{-\mtikzmark{b}4}) 
  &= (\sn{3\mtikzmark{f}.14}{-\mtikzmark{c}2}) + (\sn{0.012}{-\mtikzmark{d}2})\\[1ex]
&= \sn{(3.14+0.012)}{-2}\\
&= \sn{3.152}{-2}
\end{align*}
\mytlabel{a}{b}{not equal}
\mytlabel{c}{d}{equal}
\myblabel[anchor=north,yshift=4pt]{e}{f}{The decimal is moved \\ to the left to increase \\ the exponent}
\end{document}

在此处输入图片描述

相关内容