【问题标题】:emacs auctex commandto compile and viewemacs auctex 命令编译查看
【发布时间】:2015-10-02 10:04:32
【问题描述】:

我使用 EMACS/AucTeX。为了编译我做C-c C-c,然后它问

“命令:(默认 LaTeX)”

我按 RET 并编译。要查看编​​译后的文档,我执行 C-c C-v。

我想要一个简单的快捷键,比如按 F1 或其他组合键来编译然后查看文档。有什么简单的命令/函数可以插入 .emacs 来做到这一点?

谢谢 彼得罗

【问题讨论】:

    标签: emacs auctex


    【解决方案1】:

    C-c C-a (TeX-command-run-all) 将在 AUCTeX 11.89 中完成这项工作。

    【讨论】:

    • 这是一个致命的建议!谢谢,我有 11.87 和 Ubuntu 14.04。
    【解决方案2】:

    我认为没有任何东西可以开箱即用,而且仅按顺序调用这两个命令的幼稚方法行不通,因为您需要在查看输出之前完成编译过程。

    这是一个可能适合您的快速而肮脏的解决方案:

    (defun my/TeX-view-once (doc)
      "View TeX output and clean up after `my/TeX-compile-and-view'.
    
    Call `TeX-view' to display TeX output, and remove this function
    from `TeX-after-TeX-LaTeX-command-finished-hook', where it may
    have been placed by `my/TeX-compile-and-view'."
      (TeX-view)
      (remove-hook 'TeX-after-TeX-LaTeX-command-finished-hook #'my/TeX-view-once))
    
    
    (defun my/TeX-compile-and-view ()
      "Compile current master file using LaTeX then view output.
    
    Run the \"LaTeX\" command on the master file for active buffer.
    When compilation is complete, view output with default
    viewer (using `TeX-view').
      (interactive)
      (TeX-command "LaTeX" 'TeX-master-file)
      (add-hook 'TeX-after-TeX-LaTeX-command-finished-hook #'my/TeX-view-once))
    

    您可能想要修改my/TeX-compile-and-view 中的TeX-command 行,因为它硬编码了很多C-c C-c (TeX-command-master) 没有的东西。特别是如果没有设置master文件我不确定它会做什么,即使不需要它也会重新编译。

    编辑:经过一番修改,看起来一切都运行良好,没有主文件,只要你的 .emacs 中有这一行:

    (setq-default TeX-master nil)
    

    我不确定为什么会出现这种情况,因为这表明 AUCTeX 应该在主文件尚未设置的情况下向您查询,即使在这种情况下,此命令也不会查询。如果您不想使用此行,则将上述函数改为在缓冲区上工作应该不会太难。

    【讨论】:

    • 嗨亚伦,谢谢。我无法想象它是如此复杂。没有主文件时它不起作用。无论如何,当我执行 C-c C-c 时,您知道如何避免这种情况,它会询问“命令:(默认 LaTeX)”?至少可以简单地编译而无需确认latex命令吗?感谢这一切,彼得罗
    • @PiCo 我查看了无主文件的情况,并用结果更新了我的答案。要绕过确认,请查看this answer。这涉及更多,因为它复制了很多 AUCTeX 的决策机制;如果您只想硬编码“LaTeX”,只需从上面的 my/TeX-compile-and-view 中删除 add-hook 表单(并可能重命名函数)。
    【解决方案3】:

    您可以将 F1 绑定到一个函数 TeX-master-command,因为如果您在使用 C-c C-c 编译后使用它,C-c C-c 将设置查看器。这是来自 auctex 手册的引述

    一旦您使用 C-c C-c、C-c C-s 或 C-c C-b 开始命令选择,系统将提示您输入命令类型。 AUCTeX 将尝试猜测在给定情况下哪个命令是合适的,并建议将其作为默认值。如果文档被更改,通常这是一个处理器,如“TeX”或“LaTeX”,或者如果文档只是排版,这是一个查看器。

    要将此功能设置为 F1,您应该尝试以下操作:

    (add-hook 'LaTeX-mode-hook
         '(lambda()
         (local-set-key (kbd "<F1>") 'TeX-master-command)
         ))
    

    您仍然会收到提示,并且必须在 F1 后按 RET。将 F1 绑定到 Aaron Haaris TeX-compile-and-view 可能会省去这个 RET。

    既然你厌倦了那些 C-c C-c,你应该试试latexmk。您所要做的就是启动它一次,然后它会在每次新保存后编译您的 .tex。您可以设置查看器,latexmk 检查您的 .tex 文件是否更改的频率以及许多其他事情。

    【讨论】:

    • 您可能希望分配除 F1 之外的另一个功能键,即使在 LaTeX 模式下也是如此。 F1 广泛用于 emacs 中的帮助。如果我没记错的话,F5 到 F9 可以在本地免费使用。但它是emacs,你当然可以为所欲为:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多