![pgfplots:使用宏作为刻度标签](https://linux22.com/image/269799/pgfplots%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%AE%8F%E4%BD%9C%E4%B8%BA%E5%88%BB%E5%BA%A6%E6%A0%87%E7%AD%BE.png)
我想使用宏来定义 pgfplots 图片中额外刻度的标签。当宏使用希腊字符时,它会产生错误:
! Missing \endcsname inserted.
这是我的 MWE:
\documentclass{article}
\usepackage{pgfplots}
\newcommand{\extraticksmwe}{%
extra y ticks={.5}, extra y tick labels={$\alpha$}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ytick={0},
\extraticksmwe
]
\addplot[]{ .5 };
\end{axis}
\end{tikzpicture}
\end{document}
请注意,如果我不使用希腊字符,例如使用 $a$ 而不是 $\alpha$,则上述相同代码不会生成错误。同样,如果我根本不使用宏,它也不会生成错误,因此以下代码可以正常工作:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ytick={0},
extra y ticks={.5}, extra y tick labels={$\alpha$}%
]
\addplot[]{ .5 };
\end{axis}
\end{tikzpicture}
\end{document}
答案1
你必须extraticksmwe
先扩张。这可以通过以下方式实现
\edef\x{\noexpand\begin{axis}[
ytick={0},
\extraticksmwe
]
}
\x
然而这不是一个好的解决方案。它也不会\extraticksmwe
只扩展一次。
我建议在你新定义的命令中使用\pgfplotsset
并在环境axis
启动之前调用它:
\newcommand{\extraticksmwe}{%
\pgfplotsset{%
extra y ticks={.5}, extra y tick labels={$\alpha$}%
}
}
以下是完整的 MWE:
\documentclass{article}
\usepackage{pgfplots}
\newcommand{\extraticksmwe}{%
\pgfplotsset{%
extra y ticks={.5}, extra y tick labels={$\alpha$}%
}
}
\begin{document}
\begin{tikzpicture}
\extraticksmwe
\begin{axis}[ytick={0}]
\addplot[]{ .5 };
\end{axis}
\end{tikzpicture}
\end{document}
如果您愿意避免使用宏,您也可以按照 percusse 的建议定义一种新样式。
\pgfplotsset{extraticksmwe/.style={extra y ticks={.5}, extra y tick labels={$\alpha$}}}
这种新样式可以在可选参数中使用axis
:
\begin{axis}[ytick={0},extraticksmwe]