![Tikz 节点或 TikZmark 节点,哪个适合该图?](https://linux22.com/image/443044/Tikz%20%E8%8A%82%E7%82%B9%E6%88%96%20TikZmark%20%E8%8A%82%E7%82%B9%EF%BC%8C%E5%93%AA%E4%B8%AA%E9%80%82%E5%90%88%E8%AF%A5%E5%9B%BE%EF%BC%9F.png)
我想要绘制下面的图:
但我不知道从哪里开始?我应该使用什么普通 TikZ 节点(\node
) 或者TikZmark 节点( \tikzmarknode
)?我不是tikz-pgf
包装方面的专家。希望得到您的帮助。
添加:
我试过:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\large
\[
\tikzmarknode{v1}{1}\tikzmarknode{v2}{4}\newline
\tikzmarknode{A}{3}\tikzmarknode{B}{\raisebox{1em}{2}}\tikzmarknode{C}{4}\tikzmarknode{D}{5}\tikzmarknode{E}{6}\tikzmarknode{F}{3}
\]
\begin{tikzpicture}[remember picture,overlay]
\tikzset{
every node/.style={outer sep=2pt},
lab/.style={font=\tiny,inner sep=0pt}}
\draw[red] (B) to[out=90,in=90] node[lab,midway,above]{} (v2) ;
\end{tikzpicture}
\end{document}
答案1
使用\tikzmarknode
是个好主意。但首先你需要画出没有箭头的除法问题。 Anarray
非常适合这个。语法{*{12}{c@{\,}}}
将每列居中对齐,但将列间距减小到 0,然后\,
在每列之间添加一个小的细间距 ( )。*{12}
意味着重复 12 次。(目前你只有 7 列,但也许你会添加更多。)
在里面放置减号\mathllap
可以防止它们在其列中添加空间。
绘制除法问题后,将要作为节点的数字放入 中。然后在带有选项 的\tikzmarknode
中,使用您想要的任何选项(例如、、等)绘制从一个节点到另一个节点的箭头。您可以在其中一个箭头的中间放置一个节点(我称之为)。tikzpicture
remember picture, overlay
tikz
looseness=
in=
out=
M
\documentclass{article}
\usepackage{mathtools} % needed for \mathllap
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\[
\begin{array}{*{12}{c@{\,}}}
& & &1&\tikzmarknode{B}{4}& & &\\ \cline{3-8}
3&\tikzmarknode{A}{2}&\raisebox{.6pt}{\kern-.56pt)}&4&5&\tikzmarknode{C}{6}&3\\
&&&\smash{\vdots}&\\ \cline{4-8}
&&&1&3\\
&&&\mathllap{-}1&2\\ \cline{4-8}
&&&&1&\tikzmarknode{D}{6}\\
&&&&&\mathllap{-}\tikzmarknode{E}{8}\\ \cline{4-8}
&&&&&8
\end{array}
\]
\begin{tikzpicture}[remember picture, overlay, >=latex, shorten >=2pt, shorten <=2pt]
\draw[->](C)--(D);
\draw[<->, looseness=2.5](A.north)to[out=90, in=90]node[pos=.7](M){}(B);
\draw[->, looseness=1.5](M.center)to[out=60, in=0](E.east);
\end{tikzpicture}
\end{document}