我怎样才能逃离环境的范围?

我怎样才能逃离环境的范围?

有没有什么办法可以逃离环境的范围,例如让\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}

相关内容