将自己的宏添加到“.emacs”

将自己的宏添加到“.emacs”

我正在使用 KOMA 脚本,它提供字母类别选项的使用,可以存储在文件中:*.lco。

我在“zrp.lco”中定义的一个命令非常简单:

\newcommand{\Beweis}[1]{Beweis: #1}

现在我想教 Emacs 了解这个命令。我尝试将其放入我的 .emacs 中:

 (TeX-add-style-hook
      "zrp"
      (lambda ()
        (TeX-add-symbols
     '("Beweis" 1))))

但是 Emacs 在加载时出现错误:

eval-buffer: Symbol's function definition is void: TeX-add-style-hook

怎么了?

答案1

添加对新样式文件的支持的正确方法是创建一个样式钩子文件,如AUCTeX 手册

请注意,您可以为发出的 *TeX 源自动生成样式挂钩文件M-x TeX-auto-generate RET,请参阅自动为用户定制

如果您想将样式钩子放在 中.emacs,则必须将其插入 中,eval-after-load以便它仅在加载 AUCTeX 时运行。具体来说,您的代码应更改为

(eval-after-load "latex"
  '(progn
     (TeX-add-style-hook
      "zrp"
      (lambda ()
    (TeX-add-symbols
     '("Beweis" 1))))))

注意,定义的钩子只有在明确指定的情况下才会自动执行

\usepackage{zrp}

在你的 LaTeX 代码中,否则你必须使用

(TeX-run-style-hooks "zrp")

来运行它。

答案2

切换到 AucTeX 11.88 后,我重新审视了这个问题。TeX-add-style-hook 现在有一个第三个论点我为我的 .emacs 文件找到了这个简单的解决方案:

(add-hook 'LaTeX-mode-hook
      (lambda ()
    (TeX-add-symbols
      '("Beweis" 1)
      '("AnlageK" t)
      '("AnlageB" t)
      '("signed" 1)
      )))

如果有更聪明的人注意到这个解决方案的缺点,请发表评论。

相关内容