从 tikz/math 字符串变量中转义反斜杠

从 tikz/math 字符串变量中转义反斜杠

使用tikz/math,我尝试定义一个包含 LaTeX 命令的字符串变量,因此包含反斜杠。目标是能够连接这样的字符串。

以下操作无效:

\documentclass[tikz]{standalone}
\usetikzlibrary{math}
\begin{document}
{\color{blue}test For Blue},
\tikzmath
{
  let \a = \color{red}my red string;
  print{\a};
}
\end{document}

我的猜测是tikzmath试图将其解释\color为关联数组并使用来访问它red,因此失败。

这样的东西\text{my text}也行不通。

我反而想tikz/math传递给tikzLaTeX 或包含这些反斜杠的字符串

这在国内有可能吗tikz/math

干杯,

答案1

我不确定你想要什么输出,所以有两个版本

在此处输入图片描述

\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usetikzlibrary{math}
\begin{document}

{\color{blue}test For Blue},
\tikzmath
{
  let \a = \string\color\string{red\string}my red string;
  print{\a};
}


{\color{blue}test For Blue},
\tikzmath
{
  let \a = \noexpand\color{red}my red string;
  print{\a};
}
\end{document}

答案2

来自TikZ 手册,“56.2 转让”一节:

let 〈variable〉 = 〈expression〉 ;

此关键字无需求值即可赋值给变量。但是,可以使用 进行完全扩展。[...]expressionexpression\edef

\edef不遵守 LaTeX 的保护机制。因此需要低级别来防止在错误的时间\noexpand扩展:\color

\documentclass[tikz]{standalone}
\usetikzlibrary{math}
\begin{document}
{\color{blue}test For Blue},
\tikzmath
{
  let \a = \noexpand\color{red}my red string;
  print{\a};
}
\end{document}

结果

相关内容