我需要在 tikz 中绘制一些图表,这些图表的标签以树作为索引。我也将这些树渲染为 tikz 图表。即使是简单的图表,例如两个节点之间的箭头,如果将树插入为箭头的标签,结果也会非常不愉快。
这是一个 MWE。
\documentclass{standalone}
\usepackage{tikz}
\newcommand{\TreeW}
{
\tikz
{
\draw[-] (-.1,.2) -- (0,0) -- (.1,.2); \draw[-] (0,0) -- (0,.2);
}
}
\newcommand{\TreeV}
{%
{%
\mathchoice%
{\tikz \draw[-] (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz \draw[-] (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz \draw[-] [thin, scale=.75] (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz \draw[-] [thin, scale= .5] (-.1,.2) -- (0,0) -- (.1,.2);}%
}
}
\begin{document}
\begin{tikzpicture}[scale=1.5]
\node (s0) at (180:2) {$\TreeW_{\TreeV}$};
\node (s1) at (0,0) {$\TreeV$};
\draw[->] [shorten >=10pt, shorten <=10pt] (s0) --
node [above, near start] {$\TreeW$} node [below, near end] {\hbox{$\TreeV$}} (s1);
\end{tikzpicture}
\end{document}
这给了我以下结果。
我尝试搜索一下类似的问题,但没有遇到任何问题;尽管这很可能是一个众所周知的问题。
答案1
您的方法的问题在于它嵌套了tikzpicture
s。这是应该避免的。避免问题的标准方法是使用\savebox
es。(Apic
在这里不起作用,因为您使用了\mathchoice
,并且从您之前的问题中,我认为您不使用此图的原因tikz-cd
是您想将示例保持在最低限度。以下内容也适用于tikz-cd
。)
\documentclass{standalone}
\usepackage{tikz}
\newsavebox\TreeWbox
\sbox\TreeWbox{\tikz{%
\draw[-] (-.1,.2) -- (0,0) -- (.1,.2); \draw[-] (0,0) -- (0,.2);
}}
\newsavebox\TreeVbox
\sbox\TreeVbox{\tikz \draw[-] (-.1,.2) -- (0,0) -- (.1,.2);}
\begin{document}
\newcommand{\TreeW}{\usebox\TreeWbox}
\newcommand{\TreeV}{\mathchoice{\usebox\TreeVbox}{%
\usebox\TreeVbox}{%
\scalebox{0.8}{\usebox\TreeVbox}}{%
\scalebox{0.6}{\usebox\TreeVbox}}}
\begin{tikzpicture}[scale=1.5]
\node (s0) at (180:2) {$\TreeW_{\TreeV}$};
\node (s1) at (0,0) {$\TreeV$};
\draw[->] [shorten >=10pt, shorten <=10pt] (s0) --
node [above, near start] {$\TreeW$} node [below, near end] {\hbox{$\TreeV$}} (s1);
\end{tikzpicture}
\end{document}
答案2
只要您添加tips=never
阻止绘制箭头的选项,并且不要忘记删除[-]
您放置的删除此箭头的选项,您的代码就可以完美运行。箭头绘制选项在 TikZ 3.1.4b 手册第 188 页中有说明。
\documentclass[border=5mm,tikz]{standalone}
%\usepackage{tikz}
\newcommand{\TreeW}
{
\tikz[tips=never]
{
\draw[] (-.1,.2) -- (0,0) -- (.1,.2); \draw[] (0,0) -- (0,.2);
}
}
\newcommand{\TreeV}
{%
{%
\mathchoice%
{\tikz[tips=never] \draw (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz[tips=never] \draw (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz[tips=never] \draw [thin, scale=.75] (-.1,.2) -- (0,0) -- (.1,.2);}%
{\tikz[tips=never] \draw [thin, scale= .5] (-.1,.2) -- (0,0) -- (.1,.2);}%
}
}
\begin{document}
\begin{tikzpicture}[scale=1.5]
\node (s0) at (180:2) {$\TreeW_{\TreeV}$};
\node (s1) at (0,0) {$\TreeV$};
\draw[->] [shorten >=10pt, shorten <=10pt
] (s0) --
(s1) node [above, near start] {$\TreeW$} node [below, near end] {\hbox{$\TreeV$}};
\end{tikzpicture}
\end{document}