Orgmode 내보내기 : 주석 줄에 새 줄을 방지하는 방법


16

현재 LaTeX (및 다른 형식이지만 체크하지 않은)로 내보낼 때 내 orgmode (v8.3.4)는 주석 줄 또는 연속 주석 줄 블록에 새 줄을 생성합니다. LaTeX에서는 새 단락을 만들므로 바람직하지 않습니다. 글을 쓸 때 종종 단락 중간에 한두 줄씩 주석을 달아야하지만 그 단락을 두 개로 나누고 싶지는 않습니다. 현재 orgmode의 이러한 동작으로 인해 주석이 달린 행을 단락 뒤로 이동해야하므로 텍스트를 수정할 때 혼란 스러울 수 있습니다.

아래는 최소한의 예입니다. orgmode 소스는 다음과 같습니다.

First sentence.
# Commented sentence.
Last sentence.

다음과 같이 orgmode에 의해 LaTeX로 내보내집니다 (프리앰블 생략).

\begin{document}
\tableofcontents

First sentence.

Last sentence.
\end{document}

첫 번째 문장과 마지막 문장 사이에 빈 줄이있어 한 단락 대신 두 단락으로 나타납니다.

이 orgmode의 동작을 막을 방법이 있습니까? 주석 행 또는 주석 행 블록은 새 행이 아닌 0 바이트 / 문자로 내 보내야합니다. 주석 처리시 LaTeX의 동작입니다.


3
나는 이것이 org-mode의 버그라고 생각합니다. org-mode 메일 링리스트 에서 이것을 논의 해 볼 가치가있다 .
ph0t0nix

1
주요 조직 모드 개발자 중 하나 인 Nicolas Goaziou 는 버그가 아닌이 동작이 예상 된다고 확인했습니다 .
Kaushal Modi

위의 두 가지 솔루션 모두에서 작동 # comments하지만 불행히도 # + BEGIN_COMMENT 의견 # + END_COMMENT에는 작동하지 않습니다. 블록 의견이있는 곳에 LaTeX 내보내기에 새 줄이 삽입됩니다 ... 쉽게 해결할 수있는 방법이 있습니까? EDIT (hell-yeah, there) : @ John이 제공 한 답변에 따라 다음 블록 # comments#+BEGIN_COMMENT블록 모두에 대해 다음과 같이 작동합니다 . (defun delete-org-comments (backend) ((reverse (org- element-map (org-element-parse-buffer) '
comment'identity

답변:


4

이와 같은 것을 시도하십시오. 이 코드 블록을 문서에 넣고 실행하십시오. LaTeX는 버퍼 Org LATEX Export에 있습니다.

* build :noexport:
#+BEGIN_SRC emacs-lisp
(defun delete-org-comments (backend)
  (loop for comment in (reverse (org-element-map (org-element-parse-buffer)
                    'comment 'identity))
    do
    (setf (buffer-substring (org-element-property :begin comment)
                (org-element-property :end comment))
          "")))

(let ((org-export-before-processing-hook '(delete-org-comments)))
  (switch-to-buffer (org-latex-export-as-latex)))
#+END_SRC

0

존의 대답에 구축, 여기에 다른 기능이있어 그 용도 org-element-extract-elementorg-element-interpret-data:

(defun delete-org-comments (backend)
  (let ((tree (org-element-parse-buffer)))
    (org-element-map tree 'comment #'org-element-extract-element)
    (erase-buffer)
    (insert (org-element-interpret-data tree))))

org-elementAPI는 특히 명확하지 않다,하지만 강력하다 - 당신은 당신의 자신에 조금을 탐구해야합니다. :) 물론 John은 트리를 문자열로 다시 해석하는 대신 버퍼를 수정하기 때문에 큰 문서에 더 빠를 것입니다.

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