templates - 如何使用 Emacs+AUCTeX 创建(自动插入)LaTeX 模板?

标签 templates emacs latex auctex

我使用 Emacs+AUCTex 来编写 LaTeX 文档。我有特定的需求,所以我的典型序言很长。今天,我有一个仅包含此序言的 .tex 文件(一个模板),我使用 C-x C-w 从该模板编写一个新文件。这不是最好的解决方案,因为我的模板本地化可能与新文件相距甚远。

那么有没有办法以另一种(更短的)方式在 Emacs 中调用 LaTeX 模板?

编辑:自动插入模式提供了一种实现我想要的方法,但当我创建 .tex 文件时,它不会自动放置我的模板(LaTeX 前导码)。我必须启动 M-x 自动插入。如何根据文件扩展名自动执行此操作?

最佳答案

VirTeX-common-initialization 末尾(本质上)将 TeX-master-file 添加到 find-file-hooks 中。这是 %%% Local Variables: %%% mode: Latex %%% TeX-master: t %%% End: 内容的来源。 (请注意,VirTeX-common-initializationLaTeX-common-initialization 中的第一件事,它在 TeX-latex-mode 中被调用latex-mode 的别名。)

要使用自动添加的评论,您可以删除 Hook :

(add-hook 'TeX-mode-hook '(lambda ()
  (remove-hook 'find-file-hooks (car find-file-hooks) 'local)))

这看起来像是黑客攻击。但是添加 TeX-master-file 是相当硬编码的,没有用户选项。所以,在我看来,你没有其他机会了。

修正后,自动插入功能会自动工作。 (至少对我而言。)

但是,我已经替换了 auto-insert-alist 中的条目。意思是,而不是

(define-auto-insert "\\.tex$""my-latex-template.tex")

我有类似的东西:

(let ((el (assoc 'latex-mode auto-insert-alist)))
  (if el
      (setcdr el "/c/temp/autoinsert.tex")
    (define-auto-insert "\\.tex$" "/c/temp/autoinsert.tex")))

也许,这很重要,也许不重要。我现在必须回家,无法进一步调查。

关于templates - 如何使用 Emacs+AUCTeX 创建(自动插入)LaTeX 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335434/

相关文章:

function - elisp 中的缓冲区局部函数

emacs - 根据文件扩展名设置emacs注释样式

latex - 段落行中过满\hbox(1.38991pt 太宽),即使生成 PDF,Latex 也会发出警告

emacs - 用于跟踪缓冲区中更改的次要模式

LaTeX\rule 填充线条

latex - 如何在 LaTeX 中插入表情符号?

php - 在 Woocommerce 3.5 中删除购物车表上的运费估算消息

c++ - 如何从可变构造函数参数构造任何对象?

c++ - 在类模板中创建指向映射的迭代器

javascript - 根据 AngularJs 中指令属性的更改更新 UI