들여 쓰기없이 LaTeX 모드에서 [0,1)을 쓰려면 어떻게해야합니까?


9

를 사용하여 LaTeX를 작성할 때 latex-mode종종 텍스트에 "반 개방 간격"을 쓰고 싶습니다. 예를 들어 [0,1), 모든 숫자의 집합을 의미하는 x0 <= x < 1.

불행하게도, 이러한 "불균형 분리 문자"는 들여 쓰기 파서를 혼동하여 다음 텍스트가 부적절하게 들여 쓰기되어 일반적으로 오른쪽으로 표류합니다.

다음은 예제 문서입니다. 아래 텍스트는 수행 후의 결과 C-x h M-x indent-region입니다. 올바른 동작은 두 단락을 모두 공백으로 들여 쓰기하는 것입니다.

\documentclass{article}
\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam volutpat
at dui et mattis. Here is a half open interval $[0,1)$.  Proin
  fringilla lectus nec mi tincidunt aliquet. Vestibulum fermentum eu
  neque id egestas. Here is another $[1,2)$.  Nullam et lectus
    convallis, placerat neque non, vehicula nisi.  Fusce imperdiet
    dignissim ante, eget fringilla nisi.

    Integer fermentum nunc eget purus molestie commodo. Integer
    tristique tincidunt odio, vel rutrum diam commodo quis. Fusce a
    aliquet quam. Cras suscipit est et nisl sollicitudin
    iaculis. Aliquam erat volutpat. Phasellus sapien arcu, aliquet ut
    hendrerit in, lobortis nec ante.

\end{document}

현재 나는 추악한 해킹 으로이 문제를 해결하고 있습니다. LaTeX 매크로를 정의하여 아무것도 확장하지 않고이 매크로 호출 내에 "일치하는"구분자를 작성합니다. 그러면 들여 쓰기가 다시 동기화됩니다.

\documentclass{article}
\newcommand{\ugh}[1]{}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam volutpat
at dui et mattis. Here is a half open interval $[0,1)$.  Proin
  fringilla lectus nec mi tincidunt aliquet. Vestibulum fermentum eu
  neque id egestas. \ugh{(]} Now on the next line we are back in sync.
Nullam et lectus convallis, placerat neque non, vehicula nisi.  Fusce
imperdiet dignissim ante, eget fringilla nisi.
\end{document}

그러나 이것은 정말 불쾌합니다. 더 나은 해결책이 있습니까?

GNU Emacs 24.4.1을 사용하고 있습니다.


3
귀하의 질문에 대답하지는 않지만 AUCTeX를 사용해 보려고 생각하십니까? 이 작은 버그로 고통받지 않습니다.
giordano

@ giordano : 나는 그것을 보았다. 기본 동작은 내가 원하는 것보다 훨씬 무겁습니다. LaTeX를 코드와 같이 편집하는 것을 선호하며 WYSIWYG 스타일 편집기 내 렌더링을 원하지 않습니다. 어쩌면 모든 기능을 끄고 텍스트 편집기 경험을 가질 수도 있지만 여전히 AUCTeX가 과도하게 보입니다.
Nate Eldredge

6
어떤 WYSIWYG와 유사한 행동을 말하는가? 이러한 기능 만 미리보기 및 접기 모드이며 기본적으로 활성화되어 있지 않습니다 (AUCTeX를 사용하기 위해 해당 패키지를로드 할 필요조차 없음). AUCTeX와 바닐라 * TeX 모드의 주요 차이점은 매크로와 환경을 삽입 할 때 훨씬 뛰어난 자동 완성 메커니즘입니다. 자동 완성 기능을 중요하게 생각한다면 AUCTeX를 사용하십시오. 또한 AUCTeX에서는 항상 * TeX 코드를 편집해야하며 다른 가능성은 없습니다. 왜이 잘못된 인상을 받았는지 모르겠습니다.
giordano

답변:


7

Emacs 솔루션은 아니지만 LaTeX 코드는 다음과 같은 간격을 씁니다 \halfopen{0}{1}.

\newcommand\halfopen[2]{\ensuremath{[#1,#2)}}

이 규칙은 밸런싱 문제를 문제가 발생하지 않는 장소로 푸시합니다. 그리고 그것은 검색 가능합니다 :-)


2
무엇을 위해 사용 (0,1]합니까?
앤드류 스완

@ andrew-swann 아마도 \openhalfhehehe
Dox

@AndrewSwann\halfclosed
Norman Ramsey

2

의 들여 쓰기 기능 latex-indentlatex-mode구문 테이블을로 설정 tex-latex-indent-syntax-table하고를 호출 latex-find-indent합니다 latex-backward-sexp-1.

의 구문 ?\(?\)에 설정되어 ".""문장"을 의미한다. 따라서 더 이상 구분자가 아닙니다.

따라서 같은 표현 [0,1)에 결과 scan-errorlatex-backward-sexp-1어떤 예상치 못한 행동 리드.

init 파일에 다음을 추가하여이를 피할 수 있습니다.

(eval-after-load "tex-mode"
    '(progn (modify-syntax-entry ?\( "()" tex-latex-indent-syntax-table)
             (modify-syntax-entry ?\) ")(" tex-latex-indent-syntax-table)))

그러나을 사용하기 때문에이 설정의 부정적인 결과를 모릅니다 auctex. 따라서 최악의 상황을 기대하십시오 ;-).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.