2010-07-18 36 views
8

AucTeX trên emacs là công cụ khá tuyệt vời, nhưng khi tôi viết một chữ '$', tất cả các màu bị hỏng.

Thông thường một '$' được đi kèm với một '$' để diễn đạt phương trình toán học, nhưng đối với danh sách nguồn đơn '$' thường được sử dụng.

\begin{Verbatim} 
(let ((buffer (url-retrieve-synchronously 
... 
    (re-search-forward "^$" nil 'move) <-- It breaks the coloring 
... 
\end{Verbatim} 

Giải pháp dễ dàng như sau để khớp với '$'.

(re-search-forward "^$" nil 'move) ;; $ 

Có tùy chọn nào trong AucTeX để ngăn vấn đề '$' đơn lẻ này không?

Trả lời

9

AUCTeX biết rằng $ không phải là đặc biệt trong môi trường đúng nguyên văn, nhưng bạn phải nói với nó rằng Verbatim là một môi trường verbatim bằng cách sắp xếp cho nó xuất hiện trong LaTeX-verbatim-environments-local.

Nếu AUCTeX được cài đặt tối ưu, nó đã biết, vì AUCTeX nạp một móc kiểu cho mỗi tệp bạn tải thông qua \usepackage và bạn bè. Bạn có thể cần phải yêu cầu nó phân tích cú pháp tệp tiêu đề của bạn với C-c C-n (TeX-normal-mode).

Nếu điều đó không đủ, điều đó có nghĩa là Verbatim được xác định trong tệp kiểu AUCTeX không có đủ thông tin. Bạn có thể yêu cầu AUCTeX phân tích cú pháp một số hoặc tất cả các tệp kiểu bạn đã cài đặt; xem chương “Tự động” trong sách hướng dẫn AUCTeX.

Đôi khi AUCTeX không quản lý phân tích cú pháp tệp kiểu; sau đó bạn có thể làm điều này một phần bằng tay. Mã dưới đây giả định rằng bạn đang nhận được môi trường Verbatim từ gói fancyvrb; thích ứng với tên khác. Tạo một tập tin gọi fancyvrb.el tại một trong những thư mục nêu tại TeX-style-path với các nội dung sau (có thể có những thứ khác giá trị đặt ở đó, tôi vừa chuyển thể alltt.el):

 
(TeX-add-style-hook 
"fancyvrb" 
(lambda() 
    (LaTeX-add-environments "BVerbatim" "LVerbatim" "SaveVerbatim" "Verbatim") 
    (make-local-variable 'LaTeX-indent-environment-list) 
    (add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation)) 
    (make-local-variable 'LaTeX-verbatim-regexp) 
    (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|\\([BL]?\\|Save\\)Verbatim")) 
    (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "Verbatim") 
    (when (and (featurep 'font-latex) 
       (eq TeX-install-font-lock 'font-latex-setup)) 
    (font-latex-set-syntactic-keywords) 
    (setq font-lock-set-defaults nil) 
    (font-lock-set-defaults)))) 

(tôi nghĩ bạn cũng có thể làm điều đó bằng tay thông qua các biến tập tin, nhưng điều này hóa ra không hoạt động, vì cài đặt khóa phông được xây dựng trước khi các biến cục bộ được khởi tạo và tôi không thấy cách giải quyết.)

+0

Đối với phương thức cuối cùng, chỉ cần sao chép chúng vào dòng mã nguồn TeX cuối cùng? Nó dường như không hoạt động theo cách đó. – prosseek

+0

@prosseek: xin lỗi, tôi đã gõ nhầm tên biến, giờ đã được sửa. Nhưng ngay cả sau đó tôi chỉ thử nghiệm và nó không làm việc cho tôi. Có vẻ như biến được đặt sau khi các tham số tô màu được thiết lập và tôi không biết cách khắc phục điều này. – Gilles

+0

Ok, bằng cách sử dụng một biến tập tin cục bộ sẽ không hoạt động, do đó, * style * .el là con đường để đi. Tôi đã chỉnh sửa câu trả lời của mình để đưa mã này vào. – Gilles

4

Có lý do nào để sử dụng Nguyên văn so với nguyên văn không? nguyên văn làm cho mọi thứ trong phần cùng màu với tôi. Là một sang một bên, tôi thích sử dụng listings package. để hiển thị mã chương trình bằng latex.

Sử dụng danh sách gói bạn có thể thêm văn bản không định dạng như bạn sẽ làm với \ begin {verbatim} nhưng mục đích chính của nó là bao gồm mã nguồn của bất kỳ ngôn ngữ lập trình nào trong tài liệu của bạn.

+0

Cảm ơn mẹo và tôi thấy danh sách đó là tùy chọn tốt hơn. Nhưng, về emacs/AucTeX, tôi thấy cùng một vấn đề. – prosseek

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