2010-07-18 3 views
8

AucTeX on emacs는 놀라운 도구이지만 '$'하나를 쓰면 모든 색상이 깨집니다.

일반적으로 '$'는 수학 방정식을 표현하는 또 다른 '$'가 붙지 만 소스 목록에는 '$'가 자주 사용됩니다.

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

'$'와 일치하는 쉬운 해결책은 다음과 같습니다.

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

이 '$'문제를 방지하기 위해 AucTeX에 옵션이 있습니까?

답변

9

AUCTeX는 $은 그대로 환경에서 특별한 아니라는 것을 알고,하지만 당신은 Verbatim 그것이 LaTeX-verbatim-environments-local에 표시 주선하여 그대로 환경이 있음을 이야기한다.

AUCTeX가 최적으로 설치되면 AUCTeX가 \usepackage과 친구를 통해로드하는 각 파일에 대한 스타일 훅을로드하므로 이미 알고 있습니다. C-c C-n (TeX-normal-mode)으로 헤더 파일을 구문 분석하도록 알려야 할 수도 있습니다.

충분하지 않다면 AUCTeX에 ​​충분한 정보가없는 스타일 파일에 Verbatim이 정의되어 있음을 의미합니다. AUCTeX에 ​​설치 한 스타일 파일의 일부 또는 전부를 파싱하도록 말할 수 있습니다. AUCTeX 설명서의 "자동"장을 참조하십시오.

때때로 AUCTeX는 스타일 파일을 구문 분석하지 못합니다. 그러면이 부분을 직접 할 수 있습니다. 아래 코드는 fancyvrb 패키지에서 Verbatim 환경을 얻고 있다고 가정합니다. 그렇지 않으면 이름을 변경하십시오. 다음과 같은 내용으로 TeX-style-path에 언급 된 디렉토리 중 하나에 fancyvrb.el라는 파일을 만듭니다 (가 퍼팅 가치가 다른 일이있을 수있다, 난 그냥 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)))) 

(나는 당신이 또한 그것을 할 수 있다고 생각 수동으로 파일 변수를 통해,하지만 이것은 작동하지 않는 것으로 밝혀졌습니다. 파일 로컬 변수가 초기화되기 전에 폰트 잠금 설정이 만들어 졌기 때문에 해결 방법이 보이지 않기 때문입니다.

+0

마지막 방법으로 TeX 소스 코드의 마지막 줄에 복사하는 것이 좋습니까? 그런 식으로 작동하지 않는 것 같습니다. – prosseek

+0

@prosseek : 죄송합니다. 변수 이름에 오타가 생겼습니다. 이제 수정되었습니다. 그러나 그때조차도 나는 단지 테스트를했고 그것은 나를 위해 작동하지 않습니다. 착색 매개 변수가 설정된 후에 변수가 설정된 것처럼 보입니다.이 문제를 해결하는 방법을 모르겠습니다. – Gilles

+0

파일 로컬 변수를 사용하면 작동하지 않으므로 * style * .el을 사용하십시오. 내 대답은이 코드를 포함하도록 편집했습니다. – Gilles

4

축 어적 대 축 어적으로 사용해야하는 이유가 있습니까? 축 어적으로 섹션의 모든 것을 나에게 똑같은 색깔로 만듭니다. 제쳐두고, 저는 라텍스에서 프로그램 코드를 보여주기 위해 listings package.을 사용하는 것을 선호합니다.

패키지 목록을 사용하면 \ begin {verbatim}과 같이 형식이없는 텍스트를 추가 할 수 있지만 주요 목표는 문서 내에 프로그래밍 언어의 소스 코드를 포함시키는 것입니다.

+0

팁 주셔서 감사합니다. 그 목록은 더 나은 옵션입니다. 하지만, 이맥스/AucTeX의 측면에서, 나는 같은 문제를 참조하십시오. – prosseek

관련 문제