답변:
있을 수있다:
(setq LaTeX-begin-regexp "\\(?:begin\\|if@\\)\\b")
(setq LaTeX-end-regexp "\\(?:end\\|else\\|fi\\)\\b")
(defun LaTeX-indent-level-count ()
"Count indentation change caused by all \\left, \\right, \\begin, and
\\end commands in the current line."
(save-excursion
(save-restriction
(let ((count 0))
(narrow-to-region (point)
(save-excursion
(re-search-forward
(concat "[^" TeX-esc "]"
"\\(" LaTeX-indent-comment-start-regexp
"\\)\\|\n\\|\\'"))
(backward-char)
(point)))
(while (search-forward TeX-esc nil t)
(cond
((looking-at "left\\b")
(setq count (+ count LaTeX-left-right-indent-level)))
((looking-at "right\\b")
(setq count (- count LaTeX-left-right-indent-level)))
((looking-at LaTeX-begin-regexp)
(setq count (+ count LaTeX-indent-level)))
((looking-at "else\\b"))
((looking-at LaTeX-end-regexp)
(setq count (- count LaTeX-indent-level)))
((looking-at (regexp-quote TeX-esc))
(forward-char 1))))
count))))
다시 정의해야한다는 점에 유의하십시오 LaTeX-indent-level-count
. diff는 단순히 하나의 cond
브랜치입니다.
((looking-at "else\\b"))
\else
. 의 위치 \else
는 정확하지만 다음 코드 ( \doanotherthin
, 질문 참조)는 여전히 열 3 대신 첫 번째 열에 있습니다. 나는 첫 번째 코드 줄을 변경하여 \ ifx 명령을 통합하고 else 명령을 추가했습니다. 도움이되지만 실패했습니다 (적어도 다시 들여 쓰기로 \else
). 여기 부분적으로 작동하는 코드가 있습니다 : (setq LaTeX-begin-regexp "\\(?:begin\\|if\\|ifx\\|else\\)\\b")
어떤 아이디어?