在 pgfplots 轴选项中展开命令

在 pgfplots 轴选项中展开命令

根据布尔标志,我想设置轴选项,如下例所示:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\usepackage{xparse}
\usepackage{ifthen}

\newboolean{mydebug}   

\NewDocumentCommand{\IfDebugTF}{mm}{\ifthenelse{\boolean{mydebug}}{#1}{#2}}

\begin{document}
\setboolean{mydebug}{true}
\begin{tikzpicture}
  \begin{axis}[\IfDebugTF{xmin=5}{xmin=0}]
    \addplot {x};
  \end{axis}
\end{tikzpicture}
\end{document}

这不起作用,我认为问题出在扩展上。我能以某种方式强制宏扩展吗?

答案1

pgfkeys尝试扩展宏,但\IfDebugTF无法完全扩展,因此失败。(事实上,它根本无法扩展,因为\NewDocumentCommand创建了\protected宏。)下面的方法可以工作。

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\NewExpandableDocumentCommand\foo{}{xmin=0}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[\foo]
    \addplot {x};
  \end{axis}
\end{tikzpicture}

\end{document}

因此,为了实现你的目标,你必须

  • 定义一个包含所需选项的完全可扩展的宏
  • 或者,更简洁地,直接设置选项(使用\pgfplotsset

之前\begin{axis}。您可以通过以下方式实现此目的

  • mydebug检查之前\begin{axis}或之后的值
  • 而不是设置mydebug,而是直接设置选项(使用一些辅助宏)。

相关内容