Tikz 节点和非字母数字字符

Tikz 节点和非字母数字字符

我从线程中删掉了一些代码投影仪中的简单对话气泡、箭头或气球状形状。它运行得很好,但只要节点中使用非字母数字字符就会崩溃。以下是代码

\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}

在此处输入图片描述

相关内容