2011-10-27 6 views
3

私は(私のセットアップはここで解決セクションに記載されて:Emacs + Synctex + Skim: How to correctly set up syncronization? [none of the existing methods worked properly])GNU Emacsの+ AUCTeX経由.tex文書をコンパイルするlatexmk使用C-c C-cを使用することによりEmacs + AUCTeX:色付きpdflatex出力を取得するには?

、.tex文書は、(例えばpdflatexをして)コンパイルされます。このプロセスの出力はC-c C-lで確認/確認できます。通常、出力が多く、読みにくいです。この出力をカラーにする方法はありますか?端末からlatexmkを使用すると、少なくともlatexmk出力の重要な部分が強調表示されます。

+0

たぶん、あなたはhttp://stackoverflow.com/questions/7885853/emacs-latexmk-function-throws-meで説明したカラー表示機能のビットを使用することができます-into-an-empty-buffer-and-increase-the-height-o/7903668#7903668 –

答えて

2

これを行う通常の方法は、メジャーモードにフォントロックキーワードを追加することですが、出力ファイルは基本モードになっていますので、次のような簡単なメジャーモードをdefine-derived-modeと書いて、 (例えば、C-c C-l)、そのモードをオンにしてください(確かにアドバイスするのに良い機能がありますが、どれがどちらか分かりません)。

(define-derived-mode latex-output-mode fundamental-mode "LaTeX Output" 
    "Simple mode for colorizing LaTeX output." 
    (set (make-local-variable 'font-lock-defaults) 
     '((("^!.*" . font-lock-warning-face) ; LaTeX error 
      ("^-+$" . font-lock-builtin-face) ; latexmk divider 
      ("^\\(?:Overfull\\|Underfull\\|Tight\\|Loose\\).*" . font-lock-string-face) 
      ;; ..... 
     )))) 
(defadvice TeX-recenter-output-buffer (after colorize-latex-output activate) 
    (latex-output-mode)) 

代わりに(N.N.が示唆するように)、あなたが興味を持っている部分をハイライトするテキストプロパティまたはオーバーレイを追加するTeX-parse-errorを上書きすることができます。これには、TeX-parse-errorが更新された場合、あなたのバージョンも手動で更新する必要があるという欠点がありますが、それ以外の場合はそれほど効果的ではありません。もちろん、エラー、警告、過度/不十分なボックス、ファイル情報など、ハイライトしたいものを探している場合にのみ機能します。

目のオプションの例は以下のようになります。

(defun TeX-parse-error (old) 
    "Goto next error. Pop to OLD buffer if no more errors are found. 
This version colorizes file name parsing helping to track down annoying bugs" 
    (let ((regexp 
     (concat 
      ;; TeX error 
      "^\\(!\\|\\(.*?\\):[0-9]+:\\) \\|" 
      ;; New file 
      "(\\(\"[^\"]*?\"\\|/*\ 
\\(?:\\.+[^()\r\n{} \\/]*\\|[^()\r\n{} .\\/]+\ 
\\(?: [^()\r\n{} .\\/]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)\ 
\\(?:[\\/]+\\(?:\\.+[^()\r\n{} \\/]*\\|[^()\r\n{} .\\/]+\ 
\\(?: [^()\r\n{} .\\/]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)?\\)*\\)\ 
)*\\(?: \\|\r?$\\)\\|" 
      ;; End of file 
      "\\()\\))*\\|" 
      ;; Hook to change line numbers 
      " !\\(?:offset(\\([---0-9]+\\))\\|" 
      ;; Hook to change file name 
      "name(\\([^)]+\\))\\)\\|" 
      ;; LaTeX bad box 
      "^\\(\\(?:Overfull\\|Underfull\\|Tight\\|Loose\\)\ 
\\\\.*?[0-9]+--[0-9]+\\)\\|" 
      ;; LaTeX warning 
      "^\\(LaTeX [A-Za-z]*\\|Package [A-Za-z]+ \\)Warning:.*"))) 
    (while 
     (cond 
     ;; Nothing found 
     ((null 
      (re-search-forward regexp nil t)) 
      ;; No more errors. 
      (message "No more errors.") 
      (beep) 
      (TeX-pop-to-buffer old) 
      nil) 

     ;; TeX error 
     ((match-beginning 1) 
      (put-text-property (match-beginning 2) (match-end 2) 
          'face 'font-lock-warning-face) 
      (when (match-beginning 2) 
      (unless TeX-error-file 
       (push nil TeX-error-file) 
       (push nil TeX-error-offset)) 
      (unless (car TeX-error-offset) 
       (rplaca TeX-error-file (TeX-match-buffer 2)))) 
      (if (looking-at "Preview ") 
       t 
      (TeX-error) 
      nil)) 

     ;; LaTeX bad box 
     ((match-beginning 7) 
      (put-text-property (match-beginning 0) (match-end 0) 
          'face 'font-lock-doc-face) 
      (if TeX-debug-bad-boxes 
       (progn 
       (TeX-warning (TeX-match-buffer 7)) 
       nil) 
      (re-search-forward "\r?\n\ 
\\(?:.\\{79\\}\r?\n\ 
\\)*.*\r?$") 
      t)) 

     ;; LaTeX warning 
     ((match-beginning 8) 
      (put-text-property (match-beginning 0) (match-end 0) 
          'face 'font-lock-string-face) 
      (if TeX-debug-warnings 
       (progn 
       (TeX-warning (TeX-match-buffer 8)) 
       nil) 
      t)) 

     ;; New file -- Push on stack 
     ((match-beginning 3) 
      (let ((file (TeX-match-buffer 3)) 
       (end (match-end 3))) 
      (put-text-property (match-beginning 0) (match-end 0) 
           'face 'font-lock-type-face) 
      ;; Strip quotation marks and remove newlines if necessary 
      (when (or (eq (string-to-char file) ?\") 
         (string-match "\n" file)) 
       (setq file 
        (mapconcat 'identity (split-string file "[\"\n]+") ""))) 
      (push file TeX-error-file) 
      (push nil TeX-error-offset) 
      (goto-char end)) 
      t) 

     ;; End of file -- Pop from stack 
     ((match-beginning 4) 
      ;; (overlay-put 
      ;; (make-overlay (match-beginning 4) (match-end 4)) 
      ;; 'face 'font-lock-warning-face) 
      (put-text-property (match-beginning 0) (match-end 0) 
          'face 'font-lock-warning-face) 
      (when (> (length TeX-error-file) 1) 
      (when (string= (pop TeX-error-file) "./auctex-bug.tex") 
       (goto-char (match-end 4))) 
      (pop TeX-error-offset)) 
      (goto-char (match-end 4)) 
      t) 

     ;; Hook to change line numbers 
     ((match-beginning 5) 
      (setq TeX-error-offset 
       (list (string-to-number (TeX-match-buffer 5)))) 
      t) 

     ;; Hook to change file name 
     ((match-beginning 6) 
      (setq TeX-error-file 
       (list (TeX-match-buffer 6))) 
      t))))) 
関連する問題