Code zum Erstellen eines „schönen“ xbar funktioniert gut, schlägt aber fehl, wenn er in einer Abschnittsüberschrift steht

Code zum Erstellen eines „schönen“ xbar funktioniert gut, schlägt aber fehl, wenn er in einer Abschnittsüberschrift steht

Ich habe nach einem besseren Xbar gesucht und hier eine Antwort von vor etwa 11 Jahren gefunden:

Kann ich eine \widebar erhalten, ohne das Mathabx-Paket zu verwenden?

Ich habe den abgekürzten Code verwendet und er funktioniert einwandfrei. Wenn ich ihn jedoch in eine Abschnittsüberschrift einfüge, erhalte ich einen Compilerfehler. Hier ist der Code, den ich verwende:

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

Die erste Instanz ist in Ordnung, aber die in \section platzt. Das übersteigt bei weitem meine Fähigkeiten – ich habe keine Ahnung, was der Code zwischen \makeatletter und \makeatother macht, also kann ich nicht einmal anfangen, ans Debuggen zu denken. Ich weiß nicht einmal, welche Tags ich für diese Frage verwenden soll.

Antwort1

Fügen Sie \protectvor \Xbar{X}hinzu, z . B. \section{All about $\protect\Xbar{X}$}.

Oder verwenden Sie \NewDocumentCommand{\Xbar}{m}{anstelle von \newcommand*\Xbar[1]{.

Bildbeschreibung hier eingeben

verwandte Informationen