在 AUCTeX 首选项中设置 csquote 宏,以便与包含的文件一起使用

在 AUCTeX 首选项中设置 csquote 宏,以便与包含的文件一起使用

我过去经常将大部分文件放在单独的分支文件,然后将/include它们放在主文档。当然,我不需要为所有单独的文件编写序言。

在我的 AUCTeX 偏好设置中我设置

;; " expands into csquotes macros
(setq  LaTeX-csquotes-open-quote "\\enquote{"
       LaTeX-csquotes-close-quote "}")

但我仍然无法从中受益分支文件,因为它们没有前言也没有\usepackage{csquotes}命令。

是否有任何解决方法,让 AUCTeX 首选项适用于所有 .tex 文档,而不仅仅是csquote明确指示包的地方?

答案1

正如 AUCTeX 没有实际的方法知道哪个文件是另一个文件的“父文件”,如果没有帮助,它也无法知道您已加载特定包。最好的办法是利用设置Local Variables,该设置应出现在每个文件的末尾(或非常接近末尾)。以下内容将告诉 AUCTeX 该文件确实是主文件(在没有任何其他信息的情况下它将假定它是主文件):

%%% Local Variables:
%%% TeX-master: "master"
%%% End:

或者:

%%% Local Variables:
%%% TeX-master: t
%%% End:

现在,如果您有\included 或\inputed 文件,则需要告诉 AUCTeX 这种关系。假设您的主文件被调用maindoc.tex,并且它包含一个名为 的文件chapter01.tex;那么在 中chapter01.tex,您可以:

%%% Local Variables:
%%% TeX-master: "maindoc"
%%% End:

现在 AUCTeX 应该知道,当您要求运行 LaTeX 或 BibTeX(等)时,它应该运行命令maindoc,而不是chapter01。它还应该意识到主文件已加载csquotes并允许您访问这些命令。

当然,如果你正在使用emacs,你需要在中设置一些东西.emacs。我在这方面使用了,例如:

;; AUCTeX + Reftex       
(setq TeX-parse-self     t)   ; Enable parse on load 
(setq TeX-auto-save      t)   ; Enable parse on save 
(setq-default TeX-master nil) ; Query for master file <-- this one is key for this question

;; Turn on RefTeX for AUCTeX
(add-hook 'TeX-mode-hook 'turn-on-reftex)
(setq reftex-enable-partial-scans           t)
(setq reftex-save-parse-info                t)
(setq reftex-use-multiple-selection-buffers t)

一般来说,局部变量非常有用。例如,你可以设置要使用的 TeX 引擎;也许你想lualatex在这个文件上使用:

%%% TeX-engine: luatex

或者您想要哪种模式(相当多余,但是):

%%% mode: latex
%%% mode: flyspell
%%% TeX-PDF-mode: t

...等等。有很多选择。

C-c C-n最后要注意的一点是:如果在 AUCTeX 已经解析文件后手动添加这些变量,则直到您重新打开文件或使用强制 emacs 重新解析缓冲区时才会注意到更改。

相关内容