【问题标题】:Emacs/AUCTeX: run command on file that is not currently openEmacs/AUCTeX:对当前未打开的文件运行命令
【发布时间】:2023-03-31 00:47:01
【问题描述】:

我使用 AUCTeX 在 Emacs 中编辑我的 LaTeX 文件。要编译,我按C-c C-c,如果root.tex 是当前缓冲区中显示的文件,它将运行pdflatex root

但是如果我希望它在当前缓冲区中未显示的文件上运行pdflatex 怎么办?

例如,我正在编辑一个包含的.tex 文件chapter2.tex,然后按C-c C-c。我希望它运行的命令仍然是pdflatex root,因为chapter2.tex 只是包含在root.tex 中。

我该怎么做?

【问题讨论】:

    标签: emacs latex lisp auctex


    【解决方案1】:

    当您创建一个新文件时,AUCTeX 会询问您有关它的“主”文档。如果你定义了一个master,C-c C-c会编译master而不是当前打开的文件。

    AUCTeX 通过添加包含所需信息的页脚来跟踪这一点。假设您有一个主文档index.tex,页脚将如下所示:

    %%% Local Variables: 
    %%% mode: latex
    %%% TeX-master: "index"
    %%% End: 
    

    【讨论】:

    • 局部变量路由的缺点是需要您在设置变量之前杀死缓冲区并重新打开它(也许有更聪明的方法来做到这一点?)。第一次打开文件也可以M-x TeX-master-file-ask.
    • @ChrisConway 更聪明的方法是M-x normal-mode
    【解决方案2】:

    C-c _ 自动创建此页脚

    【讨论】:

    • 在我的系统上C-C _ 绑定到TeX-master-file-ask,但它不会创建局部变量页脚。
    • 它应该在您定义主文件后创建。但是如果已经定义了页脚,它就不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多