\newenvironment 中的 \ifthenelse 导致的错误

\newenvironment 中的 \ifthenelse 导致的错误

我正在尝试编写一个用于证明数学定理的新环境。

我所拥有的是

\newenvironment{proof}[1][]
        {\textbf{proof}\ifthenelse{\equal{#1}{}}{.}{of #1.}}
        {\begin{flushright}\textbf{qed}\end{flushright}}

此环境应获取输入,例如“定理”或“引理”。其输出应为“引理证明”。如果没有输入,则仅返回“证明”。

没有尝试使用如下所示的示例运行这几行,我收到一条错误消息,提示“未定义控制序列 \begin{proof} etc”。

编辑:我对 LaTeX 还很陌生,所以我不太确定哪些包等对于解决这个问题很重要,这就是为什么我扩展了下面的例子,以便它包含了我在这种情况下使用的所有包。

\documentclass[a4paper, 11pt, fleqn]{article}

\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amssymb}

\newenvironment{proof}[1][]
    {\textbf{proof}\ifthenelse{\equal{#1}{}}{.}{of #1.}}
    {\begin{flushright}\textbf{qed}\end{flushright}}

\begin{document}
    \begin{proof}[Test]
         This is a proof.
    \end{proof}
\end{document}

除了错误消息之外,输出如下所示:

证明Test.of Test 这是一个证明

知道这里的问题是什么吗?

答案1

错误信息不是

Undefined control sequence \begin{proof}

这是

! Undefined control sequence.
<recently read> \ifelsethen 

l.10 \begin{proof}[Test]

? h
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

? 

因此未定义的命令是\ifelsethen你想要的\ifthenelse

答案2

我会完全采用另一种方式并使用proof中的预定义环境amsthm,并进行一些更改以支持您似乎更喜欢的语法。

\documentclass[a4paper, 11pt, fleqn]{article}

%\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}

\makeatletter
\renewcommand{\proof}[1][]{%
  \par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep
    \bfseries
    \proofname\if\relax\detokenize{#1}\relax\else\ des #1\fi\@addpunct{.}]\ignorespaces
}
\makeatother
\renewcommand{\qedsymbol}{\textbf{QED}}

\begin{document}

\begin{proof}[Test]
This is a proof.
\end{proof}

\begin{proof}
This is a proof without the optional argument and long enough text
to go to a new line.
\end{proof}

\end{document}

在此处输入图片描述

相关内容