分组抵消了 \centering 的效果

分组抵消了 \centering 的效果

为什么使用 会抵消\begingroupMWE\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}

在此处输入图片描述

相关内容