パッケージは LaTeX の元のコマンドを上書きできますか?

パッケージは LaTeX の元のコマンドを上書きできますか?

例:

パッケージなしの場合amsmath:

  1. 環境equationによって方程式に自動的に番号が付けられます。

  2. 環境alignを実行できません。

パッケージ内容amsmath:

  1. alignequation方程式の番号付けもシームレスに行えます。 を使用しequationて最初の 2 つの方程式を書き、 を使用alignして 3 番目の方程式を書いても、Latex はそれらに正しく番号を付けます。

私の質問は次のとおりです:

  1. equationパッケージをロードした後のコマンドのコードはamsmath、パッケージをロードする前と同じですか?

  2. さらに、これが事実である場合、一般に、異なるパッケージをロードすると競合が発生する可能性がありますか? また、それを回避するにはどうすればよいですか?

答え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青に定義されている場合、両方のパッケージを同時に動作させることはできません。実装の詳細に応じて両方のパッケージをロードすると、エラーが発生したり、パッケージのロード順序に応じて赤または青になったりする可能性があります。必要なパッケージをロードし、競合するパッケージをロードしないかどうかは、ドキュメントの作成者の責任です。

関連情報