Xelatex 갱신 명령

Xelatex 갱신 명령

Xelatex 문서에서 \overline을 \bar로 갱신하려고 하는데 Xelatex가 컴파일되지 않고 "\bar가 이미 정의되었습니다"라는 오류가 발생하는 이유를 이해할 수 없습니다.

내 Xelatex 코드는 다음과 같습니다.

\documentclass{book}
\usepackage{polyglossia}
\setmainlanguage{french}

\renewcommand{\bar}{\overline}

\begin{document}
$\bar{ABCD}$\\
$\overline{ABCD}$
\end{document}

하지만 일반 Latex 모드에서는 이 코드가 완벽하게 컴파일됩니다.

\documentclass{book}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}

\renewcommand{\bar}{\overline}

\begin{document}
$\bar{ABCD}$\\
$\overline{ABCD}$
\end{document}

관련 주제를 검색해 보았으나 아직까지는 해결책을 찾지 못했습니다.

(답변은 다음과 같습니다.갱신 명령에 문제가 있습니까?바에서는 작동하지 않았습니다)

도움을 주셔서 감사합니다.

답변1

꽤 흥미로운!

fontspec(에 의해 로드된 ) 표준 LaTeX와 다른 수학 기호 글꼴을 사용하여 polyglossia재정의해야 하므로 ( 문서 시작에서)를 호출합니다.\bar

\DeclareMathAccent{\bar}{\mathalpha}{legacymaths}{22}

의 작업은 \DeclareMathAccent복잡하지만 본질적으로 첫 번째 인수(여기 \bar)가 정의되지 않았거나 수학 악센트로 정의되었는지 확인합니다. 이 경우 요청한 대로 (재)정의합니다. 명령이 수학 악센트가 아닌 것으로 이미 정의되어 있으면 오류가 발생합니다.

당신이 하고 있기 때문에 \renewcommand{\bar}{\overline}우리는 두 번째 상황에 처해 있습니다. 왜냐하면 는 \overline(TeX의 관점에서 볼 때) 수학 악센트가 아니기 때문입니다.

해결책:

\AtBeginDocument{\renewcommand{\bar}{\overline}}

이는 에 의해 수행된 것보다 나중에 재정의를 수행할 것입니다 fontspec. 이는 표준 LaTeX에서도 작동합니다.

관련 정보