Ekspor Orgmode: cara mencegah baris baru untuk baris komentar


16

Saat ini saya orgmode (v8.3.4), ketika mengekspor ke LaTeX (dan mungkin format lain tapi saya belum memeriksa), menghasilkan baris baru untuk baris komentar atau blok baris komentar berturut-turut. Ini tidak diinginkan karena di LaTeX, itu akan membuat paragraf baru. Ketika saya menulis, saya sering perlu mengomentari satu atau dua baris di tengah paragraf tetapi tidak ingin membagi paragraf itu menjadi dua. Saat ini, karena perilaku orgmode ini, saya harus memindahkan baris komentar tersebut setelah paragraf, yang mungkin membingungkan ketika saya merevisi teks.

Di bawah ini adalah contoh minimal. Sumber orgmode adalah:

First sentence.
# Commented sentence.
Last sentence.

yang diekspor ke LaTeX dengan orgmode as (menghilangkan pembukaan):

\begin{document}
\tableofcontents

First sentence.

Last sentence.
\end{document}

Ada garis kosong antara kalimat pertama dan terakhir, yang menghasilkan dua paragraf, bukan satu.

Apakah ada cara untuk menghentikan perilaku orgmode ini? Baris komentar, atau satu blok baris komentar, harus diekspor ke 0 byte / karakter, bahkan bukan baris baru. Ini adalah perilaku LaTeX saat memproses komentar.


3
Saya kira ini adalah bug dalam mode-org. Mungkin ada baiknya membahas hal ini di milis org-mode .
ph0t0nix

1
Sebagai salah satu pengembang mode org utama, Nicolas Goaziou mengonfirmasi, perilaku ini diharapkan, bukan bug .
Kaushal Modi

kedua solusi di atas berfungsi # comments, tetapi sayangnya tidak ada yang berfungsi untuk # + BEGIN_COMMENT komentar # + END_COMMENT baris baru dimasukkan dalam ekspor LaTeX di tempat di mana komentar blok hadir ... apakah ada cara mudah untuk memperbaikinya? EDIT (hell-yeah, ada): Berdasarkan jawaban yang diberikan oleh @John, berikut ini berfungsi baik # commentsuntuk dan untuk #+BEGIN_COMMENTblok: (defun delete-org-comments (backend) (loop untuk komentar di (terbalik (org- element-map (org-element-parse-buffer) identitas 'comment')) do (setf (buffer-substring (org-element-property: begin comment)
user2016854

Jawaban:


4

Coba sesuatu seperti ini. Letakkan blok kode ini di dokumen Anda, dan jalankan. LaTeX akan berada dalam buffer Ekspor Org LATEX .

* 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

Membangun berdasarkan jawaban John, inilah fungsi alternatif yang menggunakan org-element-extract-elementdan 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))))

The org-elementAPI tidak terlalu jelas, tetapi kuat - Anda hanya perlu mengeksplorasi sedikit pada Anda sendiri. :) Tentu saja, John mungkin lebih cepat untuk dokumen besar karena hanya memodifikasi buffer alih-alih menafsirkan ulang pohon menjadi string.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.