Consider the following

--8<---------------cut here---------------start------------->8---
#+BEGIN_SRC elisp
(require 'package)
(setq package-archives '(("ELPA" . "http://tromey.com/elpa/";)
                         ("melpa" . "http://melpa.milkbox.net/packages/";)
                         ("gnu" . "http://elpa.gnu.org/packages/";)
                         ("org" . "http://orgmode.org/elpa/";)
                         ("marmalade" . "http://marmalade-repo.org/packages/";)
                         ))
(package-initialize)
(require 'org-ref)
(defun org-repair-export-blocks ()
  "Repair export blocks and INCLUDE keywords in current buffer."
  (interactive)
  (when (eq major-mode 'org-mode)
    (let ((case-fold-search t)
          (back-end-re (regexp-opt
                        '("HTML" "ASCII" "LATEX" "ODT" "MARKDOWN" "MD" "ORG"
                          "MAN" "BEAMER" "TEXINFO" "GROFF" "KOMA-LETTER")
                        t)))
      (org-with-wide-buffer
       (goto-char (point-min))
       (let ((block-re (concat "^[ \t]*#\\+BEGIN_" back-end-re)))
         (save-excursion
           (while (re-search-forward block-re nil t)
             (let ((element (save-match-data (org-element-at-point))))
               (when (eq (org-element-type element) 'special-block)
                 (save-excursion
                   (goto-char (org-element-property :end element))
                   (save-match-data (search-backward "_"))
                   (forward-char)
                   (insert "EXPORT")
                   (delete-region (point) (line-end-position)))
                 (replace-match "EXPORT \\1" nil nil nil 1))))))
       (let ((include-re
              (format "^[ \t]*#\\+INCLUDE: .*?%s[ \t]*$" back-end-re)))
         (while (re-search-forward include-re nil t)
           (let ((element (save-match-data (org-element-at-point))))
             (when (and (eq (org-element-type element) 'keyword)
                        (string= (org-element-property :key element) 
                                 "INCLUDE"))
               (replace-match "EXPORT \\1" nil nil nil 1)))))))))
#+END_SRC

#+RESULTS:
: org-repair-export-blocks

#+BEGIN_LATEX
\begin{equation*}
P_{ext} = P_0
\end{equation*}
#+END_LATEX
--8<---------------cut here---------------end--------------->8---

After evaluating the elisp source block, org-repair-export-blocks
doesn't repair the LATEX block. However, (require 'org-ref) is commented
out, org-repair-export-blocks does its job.

Julien.



Reply via email to