在数学模式中重新定义字母

在数学模式中重新定义字母

我想做同样的事情,\chi在这个邮政到字母 g。特别是我想g在数学模式中重新定义为\chi如下方式:

   \makeatletter
   \renewcommand\chi{\@ifnextchar_\sub@chi\latexchi}
   \newcommand{\sub@chi}[2]{% #1 is _, #2 is the subscript
     \@ifnextchar^{\subsup@chi{#2}}{\latexchi^{}_{#2}}%
   }
   \newcommand{\subsup@chi}[3]{% #1 is the subscript, #2 is ^, #3 is the superscript
     \latexchi_{#1}^{#3}%
   }
   \makeatother

答案1

你可以比六年前做得更好。

我定义了一个通用宏,用于降低下标,就好像存在上标一样。

对于g,需要将其变为数学活动并为其提供定义,这是常用\lowercase技巧。为了保存标准数学 g,我们需要复制其数学代码。

\documentclass{article}
\usepackage{amsmath,xparse}

\linespread{1.1} % high subscripts and low subscripts

\NewDocumentCommand{\movedownsub}{e{^_}}{%
  \IfNoValueTF{#1}{%
    \IfNoValueF{#2}{^{}}% neither ^ nor _, do nothing; if no ^ but _, add ^{}
  }{%
    ^{#1}% add superscript if present
  }%
  \IfNoValueF{#2}{_{#2}}% add subscript if present
}
% chi
\NewCommandCopy{\latexchi}{\chi}
\RenewDocumentCommand{\chi}{}{\latexchi\movedownsub}
% g
\mathchardef\latexmathg=\mathcode`g
\begingroup\lccode`~=`g \lowercase{\endgroup\def~}{\latexmathg\movedownsub}
\mathcode`g="8000

\begin{document}

\textbf{Chi}

$\latexchi_{A}\chi_{A}$

$\latexchi_{A_{n}}\chi_{A_{n}}$

$\chi_{A}\quad\chi_{A}^{2}\quad\chi^{2}_{A}\quad\chi^{2}\quad\chi$

\medskip

\textbf{g}

$\latexmathg_{A}g_{A}$

$\latexmathg_{A_{n}}g_{A_{n}}$

$g_{A}\quad g_{A}^{2}\quad g^{2}_{A}\quad g^{2}\quad g$

\end{document}

在此处输入图片描述

相关内容