Processing math: 100%

TeX中递归调用命令二例


Comments


2025 年 4 月
 123456
78910111213
14151617181920
21222324252627
282930  

例子1. 定义广义乘法.

分析中, Hamilton发明了所谓的Sharp算子, 即用来表示乘积, 其系数是有界的。 例如A# B表示AB和某个有界函数的乘积. 那么问题是, 如何在TeX中定义一个命令使得很方便写这种乘积呢?

这就是本文的重点:递归调用命令。

用法如下

解释下, 上面我们定义了一个\multi命令, 它只接收一个参数, 效果是:首先原样输出接收的参数, 然后用\checknextchar检查后面还有没有参数. 而\checknextchar中, 我们使用了内置的(这也是为啥我们定义的命令要放到 \makeatletter\makeatother 之间)字符匹配函数\@ifnextchar, 而\bgroup就是表示的{字符, 如果第一个参数后面是{字符, 则输出\#\multi;注意这里递归调用了\multi命令, 即不断的做上述操作, 直到后一个字符不是{, 这时我们啥也不做。

如果利用xparse包的话, 则上述命令可以如下实现:

例子2. 递归李括号.

仿照上述例子, 试试如何产生
[A,[B,[C,D]]]]
其实我也不知道, 答案见How to make a recursive Latex macro with comma separated argument list

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据


Other news

  • 使用Chrome播放本地SWF文件

    两个版本, 一个是选择文件, 一个是直接拖拽。 当然也有合并到一起的办法, 参考这里。直接将下列文件放到和fl…

  • Chrome下载完成后显示病毒扫描失败的解决办法

    很蛋疼的一个提示, 一个pdf下载好后给提示病毒扫描失败。把下载的pdf直接删除了。 解决办法是运行如下的注册…

  • C1驾照学习经验

    历时4个月+15天, 我的C1驾照到手了. 下面分享下经验, 为广大学员解惑。 学驾照, 要趁早 为啥呢, 一…