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

相關內容