2010-07-21 39 views
10

Như được giải thích trong here, tôi tìm thấy gói đúc là khá thú vị cho danh sách mã nguồn.Sử dụng đúc (gói mã LaTeX) với emacs/auctex

Câu hỏi của tôi là cách sử dụng gói đúc sẵn với AucTeX/emacs? Đối với dòng lệnh tôi có thể sử dụng pdflatex -shell-escape SOURCE, nhưng

  • Q1: Làm thế nào tôi có thể sửa đổi các AucTeX để chèn -shell-escape? Ý tôi là, cách thay đổi hành động cho C - c + C - c?
  • Q2: Tôi có cần chìa khóa đặc biệt khác so với C - c + C - c cho -shell-escape lựa chọn? Hoặc, là nó chỉ OK để sử dụng nó mà không có bất kỳ vấn đề?
  • Q3: -shell-escape là gì?

Trả lời

13

Q1: Bạn cần chỉnh sửa cách LaTeX được gọi bởi AucTeX. Một cách để làm điều này là để thêm dòng sau vào tập tin emacs của bạn:

(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: Một khi bạn đã thực hiện các thay đổi, tất cả các cuộc gọi đến LaTeX với C-c C-c sẽ sử dụng tùy chọn -shell-escape.

Q3: Xem câu trả lời của Konrad. Lưu ý rằng phương pháp này sẽ kích hoạt -shell-escape cho tất cả các tệp được chỉnh sửa trong AucTeX, do đó, có thể là một nguy cơ bảo mật tiềm năng nếu sử dụng các gói hoặc tệp của người khác.

+0

Thực sự hữu ích. Cảm ơn. –

+0

@ Câu trả lời của Mike ở phía dưới cung cấp một cách đơn giản và ít xâm nhập hơn để làm tương tự trong các phiên bản hiện đại của AucTeX. –

6

tôi chỉ có thể trả lời câu hỏi 3:

của -shell-escape 'là cái gì?

đúc được sử dụng ứng dụng của bên thứ ba, pygmentize, để xử lý mã nguồn. LaTeX thường không cho phép gọi các ứng dụng khác vì lý do bảo mật (một gói giả mạo có thể gọi mã độc). Để kích hoạt một cách rõ ràng các ứng dụng gọi bên ngoài, bạn cần phải kích hoạt cái gọi là thoát này cho trình bao - trong đó, trên hầu hết các cài đặt LaTeX, được thực hiện thông qua công tắc -shell-escape.

3

Trong các phiên bản gần đây của ống dẫn, có vẻ như sẽ đáng tin cậy hơn để đặt TeX-command-extra-options, được thiết kế cho mục đích này và không làm bạn ghi đè các dạng khác nhau của TeX-command. Theo tôi hiểu nó (có thể là sai), điều này không thể được thiết lập trên toàn cầu, nhưng phải được thiết lập cho mỗi tập tin. Bạn có thể làm điều này với một cái móc. Ví dụ, trong .emacs bạn có thể thêm này:

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

Và vì bạn không ghi đè lên đầy đủ các cuộc gọi lệnh latex, các tính năng khác sẽ vẫn làm việc - như bật synctex hỗ trợ với (setq TeX-source-correlate-mode t) [có thể xảy ra ngoài móc].

+1

Bạn cũng có thể thêm nó vào '.dir-locals của bạn.el' để đặt nó cho tất cả các tệp trong một thư mục –

+0

Mẹo hữu ích. Cảm ơn! – Mike

Các vấn đề liên quan