例:
パッケージなしの場合amsmath
:
環境
equation
によって方程式に自動的に番号が付けられます。環境
align
を実行できません。
パッケージ内容amsmath
:
align
equation
方程式の番号付けもシームレスに行えます。 を使用しequation
て最初の 2 つの方程式を書き、 を使用align
して 3 番目の方程式を書いても、Latex はそれらに正しく番号を付けます。
私の質問は次のとおりです:
equation
パッケージをロードした後のコマンドのコードはamsmath
、パッケージをロードする前と同じですか?さらに、これが事実である場合、一般に、異なるパッケージをロードすると競合が発生する可能性がありますか? また、それを回避するにはどうすればよいですか?
答え1
誰でもコマンドや環境を再定義できます。このような再定義はコードを変更します。これにより、競合や望ましくない副作用が発生する可能性があります。しかし、通常、パッケージの作成者はこれを認識しており、このような競合を回避しようとします。結局のところ、他のコードを壊して動作しないパッケージの使用を強制される人は誰もいません。
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\begin{equation}
x=4
\end{equation}
\renewenvironment{equation}
{\par\color{red}\Huge\centering}
{\par}
\begin{equation}
x=4
\end{equation}
\end{document}
答え2
パッケージは、LaTeX の任意の部分を再定義し、任意の結果を生成できます。
例えばこれを次のように保存しますzzz.sty
\everypar{}
BOO!
\stop
そして追加する
\usepackage{zzz}
任意の LaTeX ドキュメントに。
equation
および がシーケンス内で番号付けされるという事実はalign
、どちらの環境の再定義も必要としません。このドキュメントでは、zzz
同じシーケンス内で番号付けされるが、 または のどちらも再定義しないequation
新しい環境を定義しますalign
。
\documentclass{article}
\usepackage{amsmath}
\newenvironment{zzz}
{\par\refstepcounter{equation} \fbox{this is \theequation zzz}}
{zzz ends here\par}
\begin{document}
equation
\begin{equation}
1=1
\end{equation}
zzz
\begin{zzz}
qqq
\end{zzz}
align
\begin{align}
a&=1\\
b&=2
\end{align}
\end{document}
パッケージには矛盾が生じる可能性があります。パッケージ a が\zzz
赤に定義され、パッケージ b が\zzz
青に定義されている場合、両方のパッケージを同時に動作させることはできません。実装の詳細に応じて両方のパッケージをロードすると、エラーが発生したり、パッケージのロード順序に応じて赤または青になったりする可能性があります。必要なパッケージをロードし、競合するパッケージをロードしないかどうかは、ドキュメントの作成者の責任です。