如何在 Emacs 中为新的 .tex 文件指定默认内容?

如何在 Emacs 中为新的 .tex 文件指定默认内容?

我希望默认复制我访问的Emacs任何不存在的文件缓冲区中某些定义文件的内容。.tex

我正在使用,AUCTeX并且我相信通过编辑负责%%% Local Variables:在新.tex文件中附加行等的文件或变量来实现这一点,但我更喜欢通过改变.emacs文件的方式来解决问题,以方便移植和可定制性。

在尝试研究它时,我确实遇到了这样的Emacs钩子find-file[-noselect]-hook,但我不确定如何指定钩子只针对空(不存在).tex文件运行,或者哪个 Lisp 函数复制当前缓冲区中的文件内容。

笔记:使用该\input{...}命令并不能解决我打算使用此方案的问题。举一个小例子,我试图让默认的.tex“骨架”看起来有点像这样:

\documentclass[11pt]{article}

\input{$HOME/defaults} %$
\title{ enter title here }

\begin{document}
\maketitle

% document body %

\bibliography{ specify bib file here }

\end{document}

更新

感谢 Tom,我发现我可以通过使用EmacsSkeleton 和 来获得上述默认内容(实际上也是更好的方法) auto-insert-mode。因此,我将以下内容放入我的.emacs文件中:

(define-skeleton latex-skeleton
  "Default LaTeX file initial contents."
  "Title: "
  "\\documentclass[11pt]{article}\n\n"
  "\\input{\$HOME/defaults} %\$\n"
  "\\title{ "str | " ENTER TITLE HERE " "}\n\n"
  "\\begin{document}\n"
  "\\maketitle\n\n"
  ""_"\n\n"
  "\\bibliography{" (skeleton-read "BIB-file: ") | " SPECIFY BIB FILE HERE " "}\n\n"
  "\\end{document}\n")

(require 'autoinsert)
(add-hook 'find-file-hooks 'auto-insert)
(setq auto-insert-query nil)
(setq auto-insert-alist 
      '(("\\.tex$" . latex-skeleton)))

但是,这对文件不起作用.tex,也不适用于latex-mode(通过将上面的最后一行更改为 来指定'((latex-mode . latex-skeleton))))!

相反,如果我使用任何其他文件扩展名或主要模式,它就可以正常工作。因此,我认为这是由访问新文件时定义的默认操作Emacs引起的,例如提示用户设置主文件、附加行等。AUCTeX.tex%%% Local Variables:

我怎么可能AUCTeX将我的自定义设置合并到其默认设置中?或者还有其他解决方法吗?

答案1

你知道吗自动插入模式

相关内容