我想做同样的事情,\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}