我从线程中删掉了一些代码投影仪中的简单对话气泡、箭头或气球状形状。它运行得很好,但只要节点中使用非字母数字字符就会崩溃。以下是代码
\newcommand{\callouts}[3]{\tikz[remember picture,baseline]{\node[anchor=base,inner sep=0,outer sep=0]%
(#3){\colorbox{#1!20}{#3}};\node[overlay,rectangle callout,%
callout relative pointer={(0cm,0.5cm)},fill=#1!20] at ($(#3.south)+(-0cm,-0.7cm)$){#2};}%
}%
这就是它所创造的;
但是,当我尝试突出显示和标记带有非字母数字字符(例如逗号或数学符号)的字符串时,命令会崩溃。我尝试使用数学模式和命令\text{}
,但这些都不起作用。任何指点都值得赞赏。
答案1
问题在于,用于节点标签内容的字符串也用于为节点提供名称,这可能会导致问题;解决方案是使用另一个(更简单的)字符串来命名节点;在下面的示例中,我使用计数器来为节点提供名称:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc,shapes.callouts,shapes.arrows}
\newcounter{mycallout}
\newcommand{\callouts}[3]{%
\stepcounter{mycallout}
\tikz[remember picture,baseline]{\node[anchor=base,inner sep=0,outer sep=0]%
(\themycallout) {\colorbox{#1!20}{#3}};\node[overlay,rectangle callout,%
callout relative pointer={(0cm,0.5cm)},fill=#1!20] at ($(\themycallout.south)+(-0cm,-0.7cm)$){#2};}%
}%
\begin{document}
\callouts{blue}{text;$a\neg$}{text,$a\neg$}
\end{document}