簡體   English   中英

使用minted(源代碼LaTeX包)和emacs / auctex

[英]Using minted (source code LaTeX package) with emacs/auctex

正如這里所解釋的,我發現minted包對於源代碼列表非常酷。

我的問題是如何使用AucTeX / emacs的鑄造包? 對於命令行,我可以使用pdflatex -shell-escape SOURCE ,但是

  • Q1:如何修改AucTeX以插入-shell-escape 我的意思是,如何改變C - c + C - c的動作
  • Q2:除了C - c + C - c還需要-shell-escape選項以外的特殊鍵嗎? 或者,可以毫無問題地使用它嗎?
  • 問題3:什么是-shell-escape

Q1:您需要編輯AucTeX調用LaTeX的方式。 一種方法是將以下內容添加到.emacs文件中:

(eval-after-load "tex" 
  '(setcdr (assoc "LaTeX" TeX-command-list)
          '("%`%l%(mode) -shell-escape%' %t"
          TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX")
    )
  )

Q2:完成更改后,使用Cc Cc對LaTeX的所有調用都將使用-shell-escape選項。

Q3:見康拉德的回答。 請注意,此方法將為-shell-escape編輯的所有文件啟用-shell-escape ,因此如果使用其他人包或文件,則可能存在潛在的安全風險。

我只能回答問題3:

什么是'-shell-escape'?

minted使用第三方應用程序pygmentize來處理源代碼。 由於安全原因,LaTeX通常不允許調用其他應用程序(否則流氓包可能會調用aribtrary代碼)。 要顯式啟用調用外部應用程序,您需要啟用這個所謂的轉義到shell - 在大多數LaTeX安裝中,通過-shell-escape開關完成。

在auctex的最新版本中,看起來設置TeX-command-extra-options (僅用於此目的)會更加可靠,並且不會使您覆蓋各種形式的TeX-command 據我所知(可能是錯誤的),這不能全局設置,但必須為每個文件設置。 你可以用鈎子做到這一點。 例如,在.emacs您可以添加以下內容:

(add-hook 'TeX-mode-hook
  (lambda ()
    (setq TeX-command-extra-options "-shell-escape")
  )
)

而且由於你沒有完全覆蓋latex命令調用,其他功能仍然可以工作 - 比如啟用synctex支持(setq TeX-source-correlate-mode t) [這可能發生在鈎子之外]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM