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에서도 작동합니다.