当我运行以下代码时......
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tabular}{c}
\pgfmathsetmacro\foo{(2<3) && (3<4)}
\foo
\end{tabular}
\end{document}
我明白了
错误:\pgfmath@@onquick 的参数有一个多余的}。
如果我使用\pgfmathtruncatemacro
,我会得到同样的错误。但是:
如果我删除
tabular
环境,它仍然可以正常工作。如果我用 替换操作
and((2<3),(3<4))
,它就可以正常工作。如果我使用
\pgfmathparse...\pgfmathresult
,它就可以正常工作。
有办法解决这个问题吗?显然,问题在于 以tabular
某种方式被读&
作行分隔符。(目前,我在所有代码中都使用and
而不是,因为我担心我的宏最终可能会被放入. 中)&&
pgfmath
tabular
答案1
\pgfmathsetmacro
使用\begingroup
\endgroup
组进行计算,但不足以隐藏&&
表格,你可以重新定义它来{
代替使用但不保证这不会破坏 pgf 中的其他内容。
但这是可行的:
\documentclass{article}
\usepackage{pgf}
\makeatletter
\def\pgfmathsetmacro#1#2{%
%\begingroup
{%
\pgfmathsetlength\pgfmath@x{#2}%
\edef#1{\pgfmath@tonumber{\pgfmath@x}}%
%\pgfmath@smuggleone{#1}\endgroup
\expandafter}\expandafter\def\expandafter#1\expandafter{#1}%
}
\makeatother
\begin{document}
\begin{tabular}{c}
\pgfmathsetmacro\foo{(2<3) && (3<4)}
\foo
\end{tabular}
\end{document}