M-x TeX-auto-generate以最简单的方式使用

M-x TeX-auto-generate以最简单的方式使用

我已经编写了自己的 beamer 派生 .cls 文件,以避免复制和粘贴我常用的序言。MWE 将是

\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
\ProvidesClass{own_beamer}[2018/06/19 my own slides 2018]
\LoadClass{beamer}
\RequirePackage{booktabs}
\RequirePackage{graphicx}

它运行良好。我使用 Emacs 进行 LaTeX 写作,并且喜欢它提供的所有提示。例如,当我在 beamer 类文档中创建新框架时,Emacs 会要求提供框架标题。同样,当我想包含图片时,Emacs 会要求我提供图片文件(以及最终我想要添加的选项)。

问题是,当我使用自己的 Beamer 文档类时,我没有得到任何这些提示。我认为这是因为 AucTeX 无法识别它来自 Beamer。当我使用C-c C-nEmacs 命令时,它没有帮助。

有什么帮助可以解决这个问题吗?

答案1

M-x TeX-auto-generate以最简单的方式使用

我认为最简单的方法是:

  1. 在 Emacs 内部,使用 AUCTeX 的缓冲区中,执行C-h v TeX-auto-private并创建与变量值相对应的目录(通常是/home/myusername/.emacs.d/auctex/auto)。
  2. 运行M-x TeX-auto-generate。在第一个提示符下,提供一个目录,其中包含您希望 AUCTeX 了解的个人类和样式文件。例如,如果您own_beamer.cls住在/home/myusername/texmf/tex/latex/MyName,那么您可以给出这个目录,但选择/home/myusername/texmf/tex也可以,因为搜索是递归的(当然,它可能会找到更多文件)。在第二个提示符下,接受默认值(通常为~/.emacs.d/auctex/auto)。

    这将为您在第一个提示符下指示的目录下的其他个人、等文件创建/home/myusername/.emacs.d/auctex/auto/own_beamer.el以及类似的文件。.el.sty.cls

  3. 访问使用 AUCTeX 的缓冲区\documentclass{own_beamer}并在该缓冲区内输入C-c C-n(或者只是重新启动 Emacs)。

保留手工制作的 AUCTeX 助手TeX-style-private

上一种方法的变体是将上述own_beamer.el文件复制到/home/myusername/.emacs.d/auctex/style/own_beamer.el并手动修改它,如果您想调整细节(own_beamer.el也可以在不运行 的情况下获得TeX-auto-generate,通过访问own_beamer.cls并查看 的子目录,或 设置的目录)。这样,AUCTeX 将像上一节一样找到帮助程序信息(在 中auto;请注意路径部分而不是),但据我所知,不会修改它。特别是,永远不应覆盖目录中的更改。own_beamer.clsTeX-auto-local/home/myusername/.emacs.d/auctex/auto/own_beamer.elautostyleM-x TeX-auto-generate/home/myusername/.emacs.d/auctex/style

样本内容为/home/myusername/.emacs.d/auctex/style/own_beamer.el

  (TeX-add-style-hook
   "own_beamer"
   (lambda ()
     (TeX-run-style-hooks
      "latex2e"
      "beamer"
      "booktabs"
      "graphicx")
     LaTeX-dialect))

这主要是在访问或保存时自动生成的own_beamer.cls。最值得注意的是,我:latex用变量替换了方言,LaTeX-dialect因为这是AUCTeX 文档建议:

在为 LaTeX 添加样式钩子的情况下,调用函数时, 将参数方言表达式当前定义的 TeX-add-style-hook常量传递给比直接传递更具前瞻性。LaTeX-dialect:latex:latex

.emacs.el加载来自和朋友的AUCTeX 帮助程序信息

第三种方法与前一种方法类似,但在加载时间(每次输入时执行的代码)方面可能不太优化LaTeX-mode,该方法包括从 Emacs 初始化文件加载 AUCTeX 帮助程序信息(Emacs Lisp 代码),如下所示。然后重新启动 Emacs 并访问包含的文件\documentclass{own_beamer}

、 的示例代码~/.emacs.d/init.el~/.emacs.el或者~/.emacs由以下任意一个加载的您自己的文件:

(require 'tex-site)

(defun my-LaTeX-add-own-beamer-helper-info ()
  (TeX-add-style-hook
   "own_beamer"
   (lambda ()
     (TeX-run-style-hooks
      "latex2e"
      "beamer"
      "booktabs"
      "graphicx")
     LaTeX-dialect)))

(add-hook 'LaTeX-mode-hook 'my-LaTeX-add-own-beamer-helper-info)

相关内容