我希望 LaTeX 能用e^
来代替\mathrm{e}^
。我知道我可以制作一个宏\e
来执行此操作,但我知道我会忘记使用它。
LaTeX 可以查找和替换字母组合吗(我不是指查找和替换编辑器的功能(我的意思是真正的 TeX,类似宏的扩展)。
答案1
只能在数学模式下激活e
,并且只能作为带有 mathcode 的数学字符激活"8000
,这不会干扰宏名称扫描:
\documentclass[a4paper]{article}
\begingroup\lccode`~=`e\lowercase{\endgroup
\edef~{\noexpand\mathrm{\mathchar\the\mathcode`e}}}
\mathcode`e="8000
\begin{document}
$e^x\leq e^y$
\end{document}
但我建议不要使用这种方法。最好使用宏\euler
或任何其他名称。
为了使用"8000
分配给 的特殊数学代码e
,必须存在 的有效定义作为e
活动字符。因此,众所周知的\lowercase
技巧(那里使用的许多命令e
在其名称中都有)。
答案2
在纯 TeX 中,'
的定义相当巧妙,以便多个连续字符'
能够正常工作。出于这个原因(也可能出于其他原因),Knuth 引入了在数学模式下通常不活动的字符变为活动字符的可能性。这是由 设置的\mathcode`\e="8000
。我们定义一个活动字符e
来检查下一个字符并决定是否变为活动\mathrm{e}
字符。
\documentclass{article}
\begingroup
\makeatletter
\catcode`\~=13\relax
\lccode`\~=`\e% pretend that a lowercase "~" is "e".
\lccode`\^=`\^% make sure it doesn't get change (who knows...)
\lowercase{\endgroup % restore the former catcodes and lccodes.
\newcommand{~}{\@ifnextchar^{\@firstoftwo{\mathrm{\true@e}^}}{\true@e}}%
\edef\true@e{\mathchar\the\mathcode`\e}% save the true e.
}
\mathcode`\e="8000\relax
\begin{document}
As everyone knows, $e^{i\pi}+1=0$ and if $e=0$, $\frac{1}{e}$ blows up. Of course, we can try more complicated things:
\begin{equation}
\epsilon^{e^{e_a^b}}+e_a^{e^a}
\end{equation}
\end{document}
答案3
(仅总结评论。)
你可以从技术上讲,可以通过创建一个活跃角色来实现这一点e
,但这会破坏各种各样的东西,而且可能不值得。
定义\e
或者仅仅进行搜索和替换可能是一个更好的主意。