我已经编写了自己的 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-n
Emacs 命令时,它没有帮助。
有什么帮助可以解决这个问题吗?
答案1
M-x TeX-auto-generate
以最简单的方式使用
我认为最简单的方法是:
- 在 Emacs 内部,使用 AUCTeX 的缓冲区中,执行
C-h v TeX-auto-private
并创建与变量值相对应的目录(通常是/home/myusername/.emacs.d/auctex/auto
)。 运行
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
访问使用 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.cls
TeX-auto-local
/home/myusername/.emacs.d/auctex/auto/own_beamer.el
auto
style
M-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)