为什么使用 会抵消\begingroup
MWE\endgroup
居中的效果?
下面的 MWE 产生一个左对齐的图形(不是所需),左侧有后续文本(期望):
但是,如果我删除\begingroup
,\endgroup
那么事情就会按预期\centering
进行,但后续文本也会居中?
问题:
- 我以为分组的全部目的就是将效果局部化。那么,分组的微妙之处是什么,导致了这种行为?
- 我如何保持分组,同时又保持居中?我想确保通过插入的图形更改的任何设置都保留在该图形的本地。
代码:
\documentclass{article}
\usepackage{showframe}
\usepackage{pgfplots}
%\usepackage{filecontents}% Commented to prevent overwriting myFig.tex
\begin{filecontents*}{myFig.tex}
\def\YLabel{$f(x) = x^2 - x +4$}
\begin{tikzpicture}
\begin{axis}[ xlabel=$x$, ylabel=\YLabel]
\addplot {x^2 - x +4};
\end{axis}
\end{tikzpicture}
\end{filecontents*}
\newcommand*{\InsertFigure}[1]{%
\IfFileExists{#1}{%
\begingroup%
\centering%
\input{#1}%
\endgroup%
}{}%
}%
\begin{document}
\InsertFigure{myFig.tex}
\textbf{Text on left.}
\end{document}
答案1
您需要在关闭组之前结束段落(\centering
其他类似命令以及字体大小开关(\small
,,,等\large
)\Huge
,需要“看到”段落的结尾才能正常工作):
\documentclass{article}
\usepackage{showframe}
\usepackage{pgfplots}
%\usepackage{filecontents}% Commented to prevent overwriting myFig.tex
\begin{filecontents*}{myFig.tex}
\def\YLabel{$f(x) = x^2 - x +4$}
\begin{tikzpicture}
\begin{axis}[ xlabel=$x$, ylabel=\YLabel]
\addplot {x^2 - x +4};
\end{axis}
\end{tikzpicture}
\end{filecontents*}
\newcommand*{\InsertFigure}[1]{%
\IfFileExists{#1}{%
\begingroup%
\centering%
\input{#1}\par%
\endgroup%
}{}%
}%
\begin{document}
\InsertFigure{myFig.tex}
\textbf{Text on left.}
\end{document}