新环境错位问题

新环境错位问题

我的代码:

\documentclass{article}
\usepackage{amsthm}
\usepackage{enumerate}

\newenvironment{mypro}{\begin{proof}\hfill\par\noindent}{\end{proof}}

\begin{document}
\begin{mypro}
    1\\
    2
\end{mypro}
\begin{mypro}%
    1\\
    2
\end{mypro}
\begin{proof}
    \hfill\par\noindent
    1\\
    2
\end{proof}
\end{document}

我得到了那 你可以看到我标记的地方没有对齐。但如果我在“\begin{mypro}”后面添加“%”,那就没问题了。我想知道原因。谢谢你的帮助。

答案1

第二个例子显示了问题所在:在“begin”部分末尾\begin{mypro}添加了 . Add之后的结束行。\ignorespaces

但我建议进一步进行两项更改:添加一个可选参数以及“非分页换行符”(您不希望“证明”位于一页的末尾而测试位于下一页)。

\documentclass{article}
\usepackage{amsthm}

\newenvironment{mypro}[1][\proofname]
  {\begin{proof}[#1]\mbox{}\\*\ignorespaces}
  {\end{proof}}

\begin{document}

\begin{mypro}
    1\\
    2
\end{mypro}

\end{document}

在此处输入图片描述

您也可以修补\proof并使用该proof环境。

\documentclass{article}
\usepackage{amsthm}
\usepackage{xpatch}

\xpatchcmd{\proof}{\ignorespaces}{\mbox{}\\*\ignorespaces}{}{}

\begin{document}

\begin{proof}
    1\\
    2
\end{proof}

\end{document}

答案2

我想添加一个简单的解释。

换行符会被解释为空格。如果添加%,则会注释掉换行符,从而注释掉空格。您可以看到

A
B
C

vs. 

A%
B%
C

因此,如果您定义自己的环境或长定义,则应该以 . 结尾每一行%

相关内容