改变 \over 的定义方式

改变 \over 的定义方式

我希望能够输入诸如 之类的内容,$1/2$而不是 ,$\frac{1}{2}$因为这会使我的代码更具可读性。对于较长的方程式,我更喜欢使用\frac{}{},但对于诸如 之类的内容,1/2我不喜欢它。

从某种意义上来说,这个办法是有效的:

\catcode`/ = 13
\def/{\over}

但我真的不喜欢这种\over工作方式。是否可以重新定义 ,\over这样ab\over cd被解释为a\frac{b}{c}d? 以及 ,这样{ab}\over{cd}被解释为\frac{ab}{cd}


我知道建议不要使用\over,但是由于是\frac基于的定义,所以\over我认为可能可以基于编写另一个定义,\over其产生的问题比更少\over,但保留中缀表示法。

答案1

\over在我看来,宏——以及类似的 TeX“原始”命令(例如\choose和——)的问题\atop恰恰它的中缀表示法很容易造成严重事故,除非完全遵守其语法。这大概就是\frac最初创建 LaTeX 宏的原因:充当精心制作的“包装器”宏\over

如果你有信心可以处理\over的中缀语法,则无需创建新的宏。你可以简单地编写如下表达式

$a{{b}\over c}d$

${{ab}\over cd}$

(如果分子项仅包含简单材料,则可以省略分子项周围的额外分组,即没有可能影响分母项和分子的命令。)请注意,它是不够使其/活跃并像 一样起作用\over。必须适当地将分子和分母项括起来,以便\over—— 或任何其他像 一样起作用的命令\over—— “知道” 要对什么采取行动。

至少对我来说,\over基于的表达式看上去并不比$a\frac{b}{c}d$和更具可读性$\frac{ab}{cd}$

答案2

\documentclass{article}

\def\Over #1/#2{\frac {#1}{#2}}
% usage \Over stuff/{braced or single}

\begingroup
  \lccode`\~`@
  \lowercase
{\endgroup\let~\Over}

\mathcode`@ "8000

\begin{document}\thispagestyle{empty}

\[ @3/2a+@5/3b \]

\[ @314/2a+@533/3b \]


\end{document}

结束于 @

相关内容