TikZ 中使用 pgfmathparse 的双边括号?

TikZ 中使用 pgfmathparse 的双边括号?

\llbracket为什么我在以下例子中不能使用?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,graphs,graphs.standard,quotes}
\usepackage{stmaryrd}

\begin{document}
\begin{tikzpicture}

\def\a{{
"\llparenthesis"
,"\llbracket" % With this line, it fails!
,"\llparenthesis"
}}

\draw (0,1) node{$\llparenthesis$};
\draw (1,1) node{$\llbracket$};

\foreach \x in {0,1}
{\draw (\x, 0) node {$\pgfmathparse{\a[\x]}\pgfmathresult$};} % (*)

\end{tikzpicture}
\end{document}
  1. 在正常绞车\llparenthesis中使用\llbracket
  2. \llparenthesis在使用它时使用有效\pgfmathparse,从数组索引,而llbracket在同一位置则不行(行 (*))
  3. 两个命令均来自stmaryrd包(不包括包不允许1.)。

激活注释行会产生以下错误:

! PGF Math 软件包错误:未知运算符4' or44'(在 '{ "\llparenthesis " ,"\delimiter "444A471 " ,"\llparenthesis " }[0]' 中)。请参阅 PGF Math 软件包文档以了解解释。

答案1

因为其中一个是字符,\mathcar"444C所以"<char>"可以立即使用。另一个实际上是一个宏扩展\delimiter "444A471,需要防止其扩展,以免数学解析器出错。

所以你需要

\def\a{{%
"\llparenthesis"%
,"\noexpand\llbracket"%
,"\llparenthesis"%
}}

相关内容