"좋은" xbar를 제공하는 코드는 잘 작동하지만 섹션 제목에 있는 경우 실패합니다.

"좋은" xbar를 제공하는 코드는 잘 작동하지만 섹션 제목에 있는 경우 실패합니다.

나는 더 나은 xbar를 찾고 있었고 약 11년 전에 여기에서 답을 찾았습니다.

mathabx 패키지를 사용하지 않고 \widebar를 얻을 수 있나요?

단축된 코드를 사용했는데 잘 작동합니다. 그러나 섹션 제목에 넣으면 컴파일러 오류가 발생합니다. 내가 사용하는 코드는 다음과 같습니다.

\documentclass{amsbook}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
%%%%%%%%%%%% Code to make a nicer xbar %%%%%%
\makeatletter
\newcommand*\rel@kern[1]{\kern#1\dimexpr\macc@kerna}
\newcommand*\Xbar[1]{%
  \begingroup
  \def\mathaccent##1##2{%
    \rel@kern{0.8}%
    \overline{\rel@kern{-0.8}\macc@nucleus\rel@kern{0.2}}%
    \rel@kern{-0.2}%
  }%
  \macc@depth\@ne
  \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar
  \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}%
  \macc@set@skewchar\relax
  \let\mathaccentV\macc@nested@a
  \macc@nested@a\relax111{#1}%
  \endgroup
}
\makeatother
%%%%%%%%%%%%%%% End of Code %%%%%%%%%%%%%%%%

\begin{document}
$\Xbar{X}$
\section{All about $\Xbar{X}$}
\end{document}

첫 번째 사례는 괜찮지만 \section의 사례가 폭발합니다. 이것은 내 기술 수준을 훨씬 넘어서는 것입니다. \makeatletter와 \makeatother 사이의 코드가 무엇을 하는지 전혀 모르기 때문에 디버깅에 대해 생각조차 할 수 없습니다. 이 질문에 어떤 태그를 사용해야 할지 모르겠습니다.

답변1

와 같이 \protect앞에 추가합니다 .\Xbar{X}\section{All about $\protect\Xbar{X}$}

또는 \NewDocumentCommand{\Xbar}{m}{대신 사용하십시오 \newcommand*\Xbar[1]{.

여기에 이미지 설명을 입력하세요

관련 정보