예:
패키지 없이 amsmath
:
환경
equation
은 방정식에 자동으로 번호를 매깁니다.환경
align
을 실행할 수 없습니다.
패키지 amsmath
:
align
번호 매기기 방정식에서 원활하게 작업 할 수 있습니다. 처음 두 개의 방정식을 작성하고 세 번째 방정식을 작성하는 데equation
사용할 수 있으며 Latex는 여전히 올바르게 번호를 매깁니다.equation
align
내 질문은 다음과 같습니다
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
패키지는 라텍스의 모든 부분을 재정의하고 임의의 결과를 생성할 수 있습니다.
예를 들어 이것을 다음과 같이 저장하십시오.zzz.sty
\everypar{}
BOO!
\stop
그리고 추가하세요
\usepackage{zzz}
모든 라텍스 문서에.
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
파란색으로 정의되면 패키지는 화해할 수 없는 충돌을 일으킬 수 있으며, 두 패키지가 동시에 작동하도록 할 수는 없습니다. 구현 세부 사항에 따라 두 패키지를 모두 로드하는 경우 오류가 발생하거나 패키지 로드 순서에 따라 빨간색 또는 파란색이 나타날 수 있습니다. 필요한 패키지를 로드하고 충돌하는 패키지를 로드하지 않는 것은 문서 작성자의 몫입니다.