有没有什么办法可以逃离环境的范围,例如让\pgfplotsset
下面 MWE 中的命令对后续情节产生影响?
(我知道\newcommand
没有这个问题,但这不是问题所在。)
谢谢!
\documentclass{article}
\usepackage{pgfplots}
\newenvironment{foo}{}{\pgfplotsset{axis x line=bottom};} % how can I make this pgfplotsset count?
\begin{document}
\begin{tikzpicture}
\begin{foo}
\end{foo}
\begin{axis}
\addplot[domain=-3e-3:3e-3,samples=201]{exp(-x^2 / (2e-3^2)) / (1e-3 * sqrt(2*pi))};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
一种可能性是使用\aftergroup
,正如 Christian 在他的评论。
请注意,这种方法只允许您“逃离”环境的范围foo
,即上一级;如果环境foo
是不是在全球范围内,这些pgfplots
设置将不会在全球范围内应用。
\documentclass{article}
\usepackage{pgfplots}
\newenvironment{foo}{}{}
\newcommand\fixedpgfplotsset{\pgfplotsset{axis x line=bottom}}
\let\oldendfoo\endfoo
\def\endfoo{\oldendfoo\aftergroup\fixedpgfplotsset}
\begin{document}
\begin{tikzpicture}
%\bgroup %(as an experiment, uncomment this group)
\begin{foo}
\end{foo}
%\egroup
\begin{axis}
\addplot[domain=-3e-3:3e-3,samples=201]{exp(-x^2 / (2e-3^2)) / (1e-3 * sqrt(2*pi))};
\end{axis}
\end{tikzpicture}
\end{document}