我正在尝试实现类似这样的目标:
我的第一个想法是在 tikzpicture 中使用节点,所以我想到了这个:
第一个例子
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning, intersections}
\usepackage{mathtools}
\usepackage{pifont}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}
[frac/.style={node distance=-2mm and 8mm}, expression/.style={node distance=2mm and 10mm}]
\node [frac](A) {$3$};
\node [frac](B) [below=of A] {$-$};
\node [frac](C) [below=of B] {$5$};
\node [frac](D) [right=of A] {$5$};
\node [frac](E) [below=of D] {$-$};
\node [frac](F) [below=of E] {$9$};
\node [expression] (exp1) [below=of C] {$3\cdot9=27$};
\node [expression] (exp2) [below=of F] {$5\cdot5=25$};
\draw [<->] (A) -- (F);
\draw [<->] (C) -- (D);
\end{tikzpicture}
\end{document}
虽然我喜欢这种设置方式,但是底部的乘法是重叠的,即使(我认为)我在节点之间留出 10 毫米的间距,情况也没有改善。
结果如下:
所以我做了一些研究,发现这个帖子经过一些修改,它已经达到了我的目的。这是我修改它的方式以及最终结果:
第二示例
\documentclass[border=10pt]{standalone}
\usepackage{tikz,amsmath}
\newcommand\tikzmark[2][]{
\tikz[remember picture,inner sep=0,outer sep=0,baseline=(#1.base)]{\node(#1){$#2$};}
}
\begin{document}
\begin{tabular}{cc}
$ \dfrac{\tikzmark[topleft]{3}}{\tikzmark[bottomleft]{5}}$ &
$\dfrac{\tikzmark[topright]{5}}{\tikzmark[bottomright]{9}} $\\
$3\cdot9=27$ & $5\cdot5=25$\\
\end{tabular}
\begin{tikzpicture} [remember picture,overlay]
\draw [<->] (topleft) -- (bottomright);
\draw [<->] (bottomleft) -- (topright);
\end{tikzpicture}
\end{document}
这个结果是完美的,但问题是,当我把这段代码放入 Anki 时,它不起作用,无论我在笔记类型的序言中输入什么(但我可能做错了什么)。
更不用说,我真的不明白它的序言。
总之,我的主要问题是:按照第一个例子使用节点,如何避免重叠?
出于好奇,我还有另一个问题:如何将 tikzmark 与 Anki 一起使用,以便我可以使用第二个示例?
谢谢!
答案1
进行正确定位的更简单方法是首先布置乘法并将分数放在它们上面。
对于分数,让 amsmath 绘制它们以获得适当的条形大小和垂直间距。箭头可以用 tikzmarks 定位,但更简单的方法是使用 calc 库来确定它们的端点。
\documentclass[border=10pt]{standalone}
\usepackage{tikz,amsmath}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}[
every node/.style={inner sep=0}
]
\node (mul1) {$3\cdot9=27$};
\node[right=5mm of mul1] (mul2) { $5\cdot5=25$};
\node[above=5mm of mul1] (frac1) {$\dfrac{3}{5}$} ;
\node[above=5mm of mul2] (frac2) {$\dfrac{5}{9}$} ;
\draw[<->] ($(frac1.north east)!0.75!(frac1.south east)$)
-- ($(frac2.north west)!0.25!(frac2.south west)$) ;
\draw[<->] ($(frac1.north east)!0.25!(frac1.south east)$)
-- ($(frac2.north west)!0.75!(frac2.south west)$) ;
\end{tikzpicture}
\end{document}
如果需要,修改节点间距。