패키지가 Latex의 원래 명령을 덮어쓸 수 있습니까?

패키지가 Latex의 원래 명령을 덮어쓸 수 있습니까?

예:

패키지 없이 amsmath:

  1. 환경 equation은 방정식에 자동으로 번호를 매깁니다.

  2. 환경 align을 실행할 수 없습니다.

패키지 amsmath:

  1. align번호 매기기 방정식에서 원활하게 작업 할 수 있습니다. 처음 두 개의 방정식을 작성하고 세 번째 방정식을 작성하는 데 equation사용할 수 있으며 Latex는 여전히 올바르게 번호를 매깁니다.equationalign

내 질문은 다음과 같습니다

  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

패키지는 라텍스의 모든 부분을 재정의하고 임의의 결과를 생성할 수 있습니다.

예를 들어 이것을 다음과 같이 저장하십시오.zzz.sty

\everypar{}
BOO!
\stop

그리고 추가하세요

\usepackage{zzz}

모든 라텍스 문서에.

equationalign번호가 순서대로 지정되는 경우 환경 중 하나를 재정의할 필요가 없다는 점에서 이 문서는 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파란색으로 정의되면 패키지는 화해할 수 없는 충돌을 일으킬 수 있으며, 두 패키지가 동시에 작동하도록 할 수는 없습니다. 구현 세부 사항에 따라 두 패키지를 모두 로드하는 경우 오류가 발생하거나 패키지 로드 순서에 따라 빨간색 또는 파란색이 나타날 수 있습니다. 필요한 패키지를 로드하고 충돌하는 패키지를 로드하지 않는 것은 문서 작성자의 몫입니다.

관련 정보