如果这个问题之前有人问过,我不会感到惊讶,但我的搜索没有得到任何结果。如果不对 TeX 内核进行一些非常危险的黑客攻击或其他操作,这是不可能的,我也不会感到惊讶。但请允许我无论如何问一下。
我使用以下代码作为数学模式中粗体字母的快捷方式,推荐这里:
\documentclass{memoir}
\usepackage{amsmath,bm,amsfonts}
\def\*#1{\bm{\mathrm{#1}}}
\begin{document}
Let $\*v$ be a vector in $\mathbb R^n$ with $A\*v = \*v$.
\end{document}
在大多数情况下,这很好用,但有时\*v
在其他命令的参数中写入会很繁琐。例如,我可能想将的导数写\*v
为\dot{\*v}
。我想知道是否有办法避免必须写 s {}
。具体来说,我想要重新定义命令,\*
以便
$\dot\*v$
甚至
$\dot\*{longvector}$
可以被正确解析。
答案1
也许这足以满足您的需求
\def\*#1{{\bm{\mathrm{#1}}}}
\let\olddot\dot
\def\dot{\expandafter\olddot}
请注意宏定义主体周围的额外括号\*
:这是为了使的扩展\*
看起来像一个参数\olddot
:
\dot\*v -> \expandafter\olddot\*v -> \olddot{\bm{\mathrm{v}}}