Exportação de modo de organização: como impedir uma nova linha para linhas de comentário

16

Atualmente, meu orgmode (v8.3.4), ao exportar para o LaTeX (e talvez outros formatos, mas ainda não o verifiquei), gera uma nova linha para uma linha de comentários ou um bloco de linhas de comentários consecutivas. Isso é indesejável, porque no LaTeX, isso criará um novo parágrafo. Quando escrevo, geralmente preciso comentar uma ou duas linhas no meio de um parágrafo, mas não quero dividi-lo em dois. Atualmente, devido a esse comportamento do modo de organização, tenho que mover essas linhas comentadas para depois do parágrafo, o que pode ser confuso ao revisar o texto.

Abaixo está um exemplo mínimo. A fonte do orgmode é:

First sentence.
# Commented sentence.
Last sentence.

que é exportado para o LaTeX por modo de organização como (omitindo o preâmbulo):

\begin{document}
\tableofcontents

First sentence.

Last sentence.
\end{document}

Há uma linha vazia entre a primeira e a última frase, que resulta em dois parágrafos em vez de um.

Existe alguma maneira de parar esse comportamento do orgmode? Uma linha de comentário, ou um bloco de linhas de comentário, deve ser exportada para 0 byte / caractere, nem mesmo uma nova linha. Esse é o comportamento do LaTeX ao processar comentários.

Truong
fonte
3
Eu acho que isso é um bug no modo organizacional. Pode valer a pena discutir isso na lista de discussão em modo organizacional .
Ph0t0nix 27/05
11
Como um dos principais desenvolvedores do modo organizacional, Nicolas Goaziou confirmou, esse comportamento é esperado, não um bug .
Kaushal Modi
as duas soluções acima funcionam # comments, mas infelizmente nenhuma funciona para # + BEGIN_COMMENT comentários # + END_COMMENT uma nova linha é inserida na exportação LaTeX no local em que o comentário do bloco estava presente ... existe alguma maneira fácil de corrigir isso? EDIT (sim, existe): Com base na resposta fornecida por @John, o seguinte funciona # commentspara os #+BEGIN_COMMENTblocos e para : (desafiar delete-org-comments (back-end) (loop para comentar em (reverse (org- elemento-mapa (org-elemento-analise-buffer) 'comment' identidade)) do (setf (buffer-substring (org-elemento-propriedade: begin comment))
user2016854

Respostas:

4

Tente algo assim. Coloque esse bloco de código no seu documento e execute-o. O LaTeX estará em um buffer 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
John Kitchin
fonte
0

Com base na resposta de John, aqui está uma função alternativa que usa org-element-extract-elemente org-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))))

A org-elementAPI não é particularmente óbvia, mas é poderosa - você só precisa explorá-la um pouco. :) Obviamente, o John é provavelmente mais rápido para documentos grandes, pois apenas modifica o buffer em vez de reinterpretar a árvore em uma string.

Blujay
fonte