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

関連情報