我正在尝试编写一个允许向pgfplots
axes
环境中添加其他环境的函数。
我想到了以下例子:
\documentclass{standalone}
\usepackage{pgfkeys}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\pgfkeys{
/myPlot/.is family, /myPlot/.cd,
default/.style={
axis={},
plot={},
},
axisCommands/.style={},
axis/.style={axisCommands/.style={#1}},
plotCommands/.style={},
plot/.style={plotCommands/.style={#1}},
}
%
\newcommand\Example[1][]{
\pgfkeys{/myPlot, default, #1}
\begin{tikzpicture}[]
\begin{axis}[/myPlot/axisCommands/.try]
\addplot[domain=0:1,samples=10, /myPlot/plotCommands/.try] {x};
\end{axis}
\end{tikzpicture}
}
%
\begin{document}
\Example[axis={/pgfplots/xlabel=x, /pgfplots/ylabel=y}, plot={blue}]{}
\end{document}
如您所见,我能够将“axis”和“plot”定义为键。但是,axis 环境前面必须有“/pgfplots/”。我想在 newcommand 环境中设置它们,但到目前为止我还无法这样做。当我删除它时,它会显示错误消息
我不知道你传递的“x”的键“/tikz/xlabel”
有人对这个问题有解释和/或解决方案吗?
答案1
要摆脱用法axis={/pgfplots/xlabel=x, /pgfplots/ylabel=y}
,你只需要将默认路径更改为/pgfplots/
内部
axis/.style={axisCommands/.style={#1}},
% and
plot/.style={plotCommands/.style={#1}},
一个棘手的细节:
\addplot[] ...;
重置绘图的默认样式,因此不会绘制标记(蓝色实心圆),并且蓝色将重置为黑色。要将样式附加到默认样式,\addplot+
请使用以下示例。
完整示例:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\pgfkeys{
/myPlot/.is family, /myPlot/.cd,
default/.style={
axis={},
plot={},
},
axisCommands/.style={},
axis/.style={axisCommands/.style={/pgfplots/.cd, #1}},
plotCommands/.style={},
plot/.style={plotCommands/.style={/pgfplots/.cd, #1}},
}
\newcommand\Example[1][]{
\pgfkeys{/myPlot, default, #1}
\begin{tikzpicture}[]
\begin{axis}[/myPlot/axisCommands/.try]
\addplot+[domain=0:1, samples=10, /myPlot/plotCommands/.try] {x};
\end{axis}
\end{tikzpicture}
}
\begin{document}
\Example[%
axis={xlabel=x, ylabel=y},
% comment the following line to restore to default style (in blue)
plot={orange, mark options={orange}}
]{}
\end{document}