theorem環境について

theorem環境について

- kamaboko の投稿
返信数: 2
theorem環境では
\newtheorem{}{}
で最初のカッコで名前,次のカッコで出力されるタイトルを定義するものでありますが,その際の名前のつけ方でエラーが出てしまいます.例えば,

\documentclass[11pt,a4paper]{jsarticle}
%
\usepackage{theorem}
%
\theoremstyle{break}
\theorembodyfont{\normalfont}
\newtheorem{th}{Th.}[section]
\newtheorem{def}{Def.}[section]
\newtheorem{lem}{Lem.}[section]
%
\begin{document}
%
\section{Test}
\begin{def}
test
\end{def}
\begin{th}
test
\end{th}
\begin{lem}
test
\end{lem}
%
\end{document}

のような文章では
\newtheorem{th}{Th.}[section]
の部分でエラーになります.いろいろ試したところ,名前をtheoremやdifinition,abcなどとすれば問題ないのですが,th,def,aなどとしたときにエラーがでてしまいます.これはどうしてでしょうか?
kamaboko への返信

Re: theorem環境について

- aminophen の投稿
出るエラーを見れば理由は分かると思います。

----

\newtheorem{th}{Th.}[section]

で出るエラーは

! LaTeX Error: Command \th already defined.
              Or name \end... illegal, see p.192 of the manual.

ですよね。

\newtheorem は \begin{ナントカ} … \end{ナントカ} という「環境」を定義する命令の一種です。
(一般には \newenvironment が使われ、\newtheorem は「定理用環境」に特化しています。)
LaTeX における「環境」は、内部的には \ナントカ … \endナントカ と書いているのと大体同じです。
だから、\newtheorem{th} は \th という命令と \endth という命令のセットを定義しようとします。
このとき「そのどちらか一方でも定義されていればエラーに」としないと辻褄が合わなくなるでしょう。
\th は既に別の意味の命令として定義されていますから、ダメというわけです。(\def とかも同じ。)

\newcommand で \endホゲホゲ という命令を定義できない理由ともつながっていますよね。