在 tikz/math 关联数组中使用 \noexpand

在 tikz/math 关联数组中使用 \noexpand

以下内容在 中不起作用tikz/math

\documentclass[tikz]{standalone}
\usetikzlibrary{math}
\begin{document}
\tikzmath
{
  let \a = my black string ;
  let \b = my red string ;
  let \c{1} = \a{\noexpand\color{red}\b}\a;
  print{\c{1}};
}
\end{document}

即使它将替换所有\c{1}实例\c

对于关联数组,还有什么方法可以做到这一点吗?

干杯,

答案1

这是后续行动问题。显然\edef使用得更频繁,而且\noexpand被消耗了,\color再次暴露。因此,更好的方法是使用通过 e-TeX 的 进行的稳健定义\protected\def。包etoolbox通过 提供了一个接口\robustify

\documentclass[tikz]{standalone}
\usetikzlibrary{math}

\usepackage{etoolbox}
\robustify\color

\begin{document}
\tikzmath
{
  let \a = my black string ;
  let \b = my red string ;
  let \c{1} = \a{\noexpand\color{red}\b}\a;
  print{\c{1}};
}
\end{document}

结果

相关内容