LaTeX 편집을 위해 AUCTeX 와 함께 스페이스 맥을 사용 하고 있으며 무지개 구분 기호 및 / 또는 무지개 블록이 LaTeX 수학 방정식을 강조 하도록하고 싶습니다 . 불행히도 이것은 부분적으로 만 작동합니다. 즉 일부 방정식은 강조 표시되고 일부 방정식은 강조 표시되지 않습니다.
예제 스크린 샷에서 인라인 수학 $
은 포함되어 있지만 나머지 인라인 수학은 포함되어 \(...\)
있습니다.
로 rainbow-blocks
가 악화, 가끔 가끔 문서의 한 곳에서 작업 할 것 같은 관계없이 범위 작동하지 않습니다.
Q :rainbow-blocks
LaTeX에서 왜 이런 일이 발생하는지 또는 인라인 수학으로 일하는 방법을 알고 있습니까? 효과적인 대안이 있습니까?
답변
다음은 주석과 비슷합니다.
- 그것은 문제의 작은 부분으로 만 해결됩니다 (
rainbow-delimiters-mode
) - 철저히 테스트되지는 않았습니다 (라텍스 파일 하나만 사용).
- 왜 작동하는지 완전히 이해하지 못합니다 (
font-lock-mode
정말 복잡한 기계입니다)
처음에는 다음에 대한 솔루션입니다 rainbow-delimiters-mode
.
텍스트 속성 font-lock-face
을 face
in rainbow-delimiters-propertize-delimiter
및로 바꿉니다 rainbow-delimiters-unpropertize-delimiter
. defsubst
패키지 대신에 패키지를 사용 하기 때문에 사용할 defun
수는 defalias
없지만 함수 자체를 수정해야합니다 (내가 이해하는 한-이 점에서 틀렸다면 의견을 말하십시오).
수정 된 기능은 다음과 같습니다.
(defsubst rainbow-delimiters-propertize-delimiter (loc depth)
"Highlight a single delimiter at LOC according to DEPTH.
LOC is the location of the character to add text properties to.
DEPTH is the nested depth at LOC, which determines the face to use.
Sets text properties:
`font-lock-face' to the appropriate delimiter face.
`rear-nonsticky' to prevent color from bleeding into subsequent characters typed by the user."
(with-silent-modifications
(let ((delim-face (if (<= depth 0)
'rainbow-delimiters-unmatched-face
(rainbow-delimiters-depth-face depth))))
;; (when (eq depth -1) (message "Unmatched delimiter at char %s." loc))
(add-text-properties loc (1+ loc)
;; 2015-05-24: Changed font-lock-face to face to enable rainbow after syntax fontification in latex-mode
;; (see http://emacs.stackexchange.com/questions/4260/how-to-get-rainbow-delimiters-rainbow-blocks-to-highlight-in-line-math-in-latex)
`(face ,delim-face
rear-nonsticky t)))))
(defsubst rainbow-delimiters-unpropertize-delimiter (loc)
"Remove text properties set by rainbow-delimiters mode from char at LOC."
(with-silent-modifications
(remove-text-properties loc (1+ loc)
;; 2015-05-24: See corresponding line in `rainbow-delimiters-propertize-delimiter'.
'(face nil
rear-nonsticky nil))))
이제 추론 :
$ 구분 기호 사이에 포함 된 수식은 이미 Kirill이 지적했듯이 font-lock-mode로 구문이 지정된 구문입니다. 이 글꼴의 등록은 정상적으로 보입니다 (변수 font-lock-syntactic-face-function
및 기능 참조 font-latex-syntactic-face-function
). 그러나 describe-char
포함 된 수식의 문자에서 구문 글꼴 화는 face
-property 대신 -property를 사용합니다 font-lock-face
.
다음은 매우 복잡한 글꼴 잠금 장치를 완전히 이해하지 못했기 때문에 가정입니다.
face
보다 강한 것 같습니다 font-lock-face
. 무지개의 구분 사용 font-lock-face
에 의해 지배된다 face
통사의 fontification. 그럼에도 불구하고, 우리는 구문 기반의 글꼴 화가 검색 (키워드) 기반의 글꼴 화에 우선하여 jit-lock을 사용한다는 이점을 가지고 있습니다 (정보 페이지 참조 font-lock-mode
).
우리가 사용하는 경우 문제가 해결된다는 결론에 그 리드 나 face
에 rainbow-delimiters
대신 font-lock-face
. 그리고 여기에 나는 완전한 결과를 모릅니다. 그러나을 통해 직접적으로 rainbow-delimiters
사용하기 때문에 어쨌든 흔들리는 바닥에 서 있습니다.jit-lock
font-lock-mode
이미 연락을 했지만 rainbow-delimiters
( https : //.com/questions/19800243/highlight-first-mismatching-paren/20022030#20022030 참조 ) 와 연락 하지 않았습니다 rainbow-blocks
. 시간이 제한되어 있기 때문에에 집중하기로했습니다 rainbow-delimiters
. 어쩌면 rainbow-blocks
비슷한 방법으로 문제를 해결할 수도 있습니다 .