我对这个问题得到的结果非常满意:结合两个 \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}