我找到了一种定义数学符号的方法,如下所示:
\documentclass{article}
\makeatletter
\begingroup\lccode`~=`*
\lowercase{\endgroup\def~}{\times}
\mathcode`*="8000
\makeatother
\begin{document}
$a*b$
\end{document}
问题是我必须指定一个出现在键盘“*”上的字母来替换“\times”(这意味着 ASCII 码在 0-255 范围内)。因为函数 \lccode 只接受该范围内的值。
如何定义任意数学符号并将其分配给相同的字符?例如:
\begingroup\lccode`~=`\times % it doesn't work in this way
\lowercase{\endgroup\def~}{new\ \times}
\mathcode`\times="8000
换句话说,我们重新定义一个数学符号,其 mathcode 值超出了 ASCII 范围。因为我们可以这样做:
\lccode`~=`0
\lccode`~=`\_
\lccode`~=`\=
...
但不能与
\lccode`~=`\times
\lccode`~=`\star
...
答案1
我从@Henri Menke 那里找到了答案(谢谢)。我意识到我们应该使用 \lccode 来重新定义直接用单个符号输入的符号。对于数学代码超出范围的运算符(例如 \times、\div 等),我们可以使用以下方法重新定义它们:
\let <new command> <old command>
\renewcommand <old command> (<new reformation>)