![在表格中使用带有 && 运算符的 pgfmathsetmacro 或 pgfmathtruncatemacro 时,“\pgfmath@@onquick 的参数有一个额外的 }”](https://linux22.com/image/270603/%E5%9C%A8%E8%A1%A8%E6%A0%BC%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%20%26%26%20%E8%BF%90%E7%AE%97%E7%AC%A6%E7%9A%84%20pgfmathsetmacro%20%E6%88%96%20pgfmathtruncatemacro%20%E6%97%B6%EF%BC%8C%E2%80%9C%5Cpgfmath%40%40onquick%20%E7%9A%84%E5%8F%82%E6%95%B0%E6%9C%89%E4%B8%80%E4%B8%AA%E9%A2%9D%E5%A4%96%E7%9A%84%20%7D%E2%80%9D.png)
当我运行以下代码时......
\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}