Emacs/AucTeX:LaTeX-math-list 可以读取需要输入的宏吗?

Emacs/AucTeX:LaTeX-math-list 可以读取需要输入的宏吗?

我想制作一个插入 \left \right 分隔符的宏,但我想只写一次,并让不同的绑定传递不同的分隔符。也就是说,我想添加以下代码:

(setq LaTeX-math-list (quote ( ("C-(" (LaTeX-my-leftright "(" ")") "" nil)
    ("C-{" (LaTeX-my-leftright "\{" "\}") "" nil)
    )))

该程序执行以下操作:

(defun LaTeX-my-leftright (charopen charclose)
"Inserts the pattern '\leftC  \rightD' where C is the open input char and D the closed, and places the cursor in the center."
    (interactive)
    (setq out1 (concat "\\left" charopen " "))
    (setq out2 (concat " \\right" charclose))
    (insert out1)
    (push-mark)
    (insert out2)
    (exchange-point-and-mark)
)

但是,当我通过按 ` 然后按 C-( 来运行它时,我得到了一个

错误类型参数:commandp (LaTeX-my-leftright "(" ")")

错误信息。

有人知道这里正确的语法是什么吗?或者使用 LaTeX-math-list 是否可行?我查看了一下 latex.el 文件,开始认为答案是否定的,但也许我错过了什么。

答案1

value插槽需要是一个 0 参数交互函数而不是一个求值表达式,还\{需要额外的引用级别\才能将反斜杠放入 lisp 字符串中。

这似乎有效

(setq LaTeX-math-list (quote ( 
    ("C-(" (lambda ()(interactive)(LaTeX-my-leftright "(" ")")) "" nil)
    ("C-{" (lambda ()(interactive)(LaTeX-my-leftright "\\{" "\\}")) "" nil)
    )))

相关内容