latex 中复杂表达式的标记通常非常大,难以阅读且难以编辑。我觉得至少有时可以做得更好。也许我不了解解析的某些内容,而且我肯定不知道一些历史细节,但只是看一下,我不明白为什么不能2^{2^n}
这样做2^2^n
,或者为什么\frac{\frac12}{\frac34}
不能这样做\frac\frac12\frac34
。你知道,只需从右到左吃掉参数。我能做些什么来获得这样的效果吗?
答案1
简短的回答是,你不能这样做,虽然可以做一些事情,但你建议的解析结果表明,你对 TeX 解析的心理模型在某种程度上与 TeX 的实际行为相反。
在
.... $2^2^n$
在从输入缓冲区读取以下内容或解析以下内容之前,TeX 已经使用了2^2
并构建了一个表示上标构造 2^2 的复合节点。因此,当它遇到时,TeX 可以编程执行的唯一自然(非错误)操作是在现有原子上创建上标,因此解析 是从左到右,而不是从右到左。^
^
{2^{2}}^{n}
类似地,\frac
是一个双参数宏,它放置#1
在 之上#2
。因此在
\frac\frac12\frac34
第一个\frac
结果\frac
与TeX 完全标记 字符之前的结果一样'#1
。考虑到 TeX 的宏扩展性质,很难看出如果分子参数为,并且分母参数不是您想要的分母,它能做什么。1
#2
2\frac34
\frac
1
你可以在错误消息中看到 TeX 尚未识别该表达式的事实
\documentclass{article}
\begin{document}
$\frac\frac12\frac34$
\end{document}
产生
! Missing } inserted.
<inserted text>
}
l.5 $\frac\frac1
2\frac34$
?
1 后面的换行符是重要信息,显示到目前为止已读取了多少输入缓冲区。
请注意,您建议的语法与數字正如您可以从他们的测试网页表单上的这次试用中看到的那样
因此,采用 asciimath 解析器作为预处理器并生成 tex 是可行的。