Заменить команду `\overline` на `\uc`

Заменить команду `\overline` на `\uc`

Я пытаюсь полностью изменить \overlineкоманду \uc. Но pdflatex выдает ошибку ниже:

! TeX capacity exceeded

Код:

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

Что я должен делать?

решение1

Я не совсем уверен в вашей цели, но ваша логика ссылается на себя, \overlineвызывая \ucи наоборот. Таким образом, вы создали бесконечный цикл. Стандартный способ решения таких ситуаций — сначала сохранить копию существующего макроса, в данном случае \let\svoverline\overline. Затем определить \ucи/или переопределить \overlineв терминах сохраненной версии.

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

Связанный контент