使用 `\uc` 替换 `\overline` 命令

使用 `\uc` 替换 `\overline` 命令

我尝试完全更改\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}

相关内容