O código para fornecer um xbar "legal" funciona bem, mas falha se estiver no cabeçalho de uma seção

O código para fornecer um xbar "legal" funciona bem, mas falha se estiver no cabeçalho de uma seção

Eu estava procurando por um xbar melhor e encontrei uma resposta aqui há cerca de 11 anos:

Posso obter um \widebar sem usar o pacote mathabx?

Usei o código abreviado e funciona bem. No entanto, quando coloco isso no cabeçalho de uma seção, recebo um erro do compilador. Aqui está o código que estou usando:

\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}

A primeira instância está bem, mas a que está em \section explode. Isso está muito além do meu nível de habilidade - não tenho ideia do que o código entre \makeatletter e \makeatother faz, então não consigo nem começar a pensar em depuração. Eu nem sei quais tags usar para esta pergunta.

Responder1

Adicione \protectantes \Xbar{X}, como \section{All about $\protect\Xbar{X}$}.

Ou use \NewDocumentCommand{\Xbar}{m}{em vez de \newcommand*\Xbar[1]{.

insira a descrição da imagem aqui

informação relacionada