Ersetzen Sie den Befehl `\overline` durch `\uc`

Ersetzen Sie den Befehl `\overline` durch `\uc`

Ich versuche, \overlineden Befehl \ucvollständig zu ändern. Aber pdflatex gibt den folgenden Fehler aus:

! TeX capacity exceeded

Der Code:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathpazo}
\newcommand{\uc}[1]{\mkern 1.5mu\overline{\mkern-1mu#1\mkern-0.3mu}\mkern 0mu}
\let\overline\uc
\renewcommand*{\uc}[1]{\overline[#1]}

\begin{document}
\noindent X $\uc{X}$ X\\
Y $\uc{Y}$ Y
\end{document}

Was soll ich machen?

Antwort1

Ich bin mir Ihres Ziels nicht ganz sicher, aber Ihre Logik ist selbstreferenziell, da sie \overlineaufruft \ucund umgekehrt. Sie haben also eine Endlosschleife eingerichtet. Die Standardmethode zum Umgang mit solchen Situationen besteht darin, zunächst eine Kopie des vorhandenen Makros zu speichern, in diesem Fall \let\svoverline\overline. Dann definieren \ucund/oder neu definieren \overlinein Bezug auf die gespeicherte Version.

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathpazo}
\let\svoverline\overline
\newcommand{\uc}[1]{\mkern 1.5mu\svoverline{\mkern-1mu#1\mkern-0.3mu}\mkern 0mu}
\let\overline\uc
%\renewcommand*{\uc}[1]{\svoverline[#1]}

\begin{document}
\noindent X $\uc{X}$ X\\
Y $\uc{Y}$ Y
\end{document}

verwandte Informationen