1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-25 07:27:57 +00:00

LaTeX export: Avoid footnote processing in LATEX_HEADER lines

Nick Dokos writes:

> I define a LaTeX macro at the top of my document, like so:
>
> ,----
> | ...
> | #+LATEX_HEADER: \newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
> | #+LATEX_HEADER:   #1\ignorespaces
> | #+LATEX_HEADER: }
> | ...
> `----
>
> and export - I get the following inserted:
>
> ,----
> | ...
> | \begin{document}
> |
> |
> |
> |
> |
> | \$\^{}{1}\$ FOOTNOTE DEFINITION NOT FOUND: 1
> | ...
> `----
>
> Obviously, the macro argument spec is mistaken for a footnote.
This commit is contained in:
Carsten Dominik 2009-08-21 06:44:29 +01:00
parent 38f3009927
commit a48fe32c4c
3 changed files with 46 additions and 36 deletions

View File

@ -1,3 +1,7 @@
2009-08-21 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-in-commented-line): New function.
2009-08-20 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-hide-block-toggle): Make folded blocks searchable.

View File

@ -363,42 +363,44 @@ referenced sequence."
;; Now find footnote references, and extract the definitions
(goto-char (point-min))
(while (re-search-forward org-footnote-re nil t)
(org-if-unprotected
(setq def (match-string 4)
idef def
ref (or (match-string 1) (match-string 2))
before (char-to-string (char-after (match-beginning 0))))
(if (equal ref "fn:") (setq ref nil))
(if (and ref (setq a (assoc ref ref-table)))
(progn
(setq marker (nth 1 a))
(unless (nth 2 a) (setf (caddr a) def)))
(setq marker (number-to-string (incf count))))
(save-match-data
(if def
(setq def (org-trim def))
(save-excursion
(goto-char (point-min))
(if (not (re-search-forward (concat "^\\[" (regexp-quote ref)
"\\]") nil t))
(setq def nil)
(setq beg (match-beginning 0))
(setq beg1 (match-end 0))
(re-search-forward
(org-re "^[ \t]*$\\|^\\*+ \\|^\\[\\([0-9]+\\|fn:[-_[:word:]]+\\)\\]")
nil 'move)
(setq def (buffer-substring beg1 (or (match-beginning 0)
(point-max))))
(goto-char beg)
(skip-chars-backward " \t\n\t")
(delete-region (1+ (point)) (match-beginning 0))))))
(unless sort-only
(replace-match (concat before "[" marker "]"))
(and idef
org-footnote-fill-after-inline-note-extraction
(fill-paragraph)))
(if (not a) (push (list ref marker def (if idef t nil)) ref-table))))
(unless (org-in-commented-line)
(org-if-unprotected
(setq def (match-string 4)
idef def
ref (or (match-string 1) (match-string 2))
before (char-to-string (char-after (match-beginning 0))))
(if (equal ref "fn:") (setq ref nil))
(if (and ref (setq a (assoc ref ref-table)))
(progn
(setq marker (nth 1 a))
(unless (nth 2 a) (setf (caddr a) def)))
(setq marker (number-to-string (incf count))))
(save-match-data
(if def
(setq def (org-trim def))
(save-excursion
(goto-char (point-min))
(if (not (re-search-forward (concat "^\\[" (regexp-quote ref)
"\\]") nil t))
(setq def nil)
(setq beg (match-beginning 0))
(setq beg1 (match-end 0))
(re-search-forward
(org-re "^[ \t]*$\\|^\\*+ \\|^\\[\\([0-9]+\\|fn:[-_[:word:]]+\\)\\]")
nil 'move)
(setq def (buffer-substring beg1 (or (match-beginning 0)
(point-max))))
(goto-char beg)
(skip-chars-backward " \t\n\t")
(delete-region (1+ (point)) (match-beginning 0))))))
(unless sort-only
(replace-match (concat before "[" marker "]"))
(and idef
org-footnote-fill-after-inline-note-extraction
(fill-paragraph)))
(if (not a) (push (list ref marker def (if idef t nil))
ref-table)))))
;; First find and remove the footnote section
(goto-char (point-min))
(cond

View File

@ -15547,6 +15547,10 @@ With prefix arg UNCOMPILED, load the uncompiled versions."
(display-buffer buf)
(sit-for 0))))
(defun org-in-commented-line ()
"Is point in a line starting with `#'?"
(equal (char-after (point-at-bol)) ?#))
(defun org-goto-marker-or-bmk (marker &optional bookmark)
"Go to MARKER, widen if necessary. When marker is not live, try BOOKMARK."
(if (and marker (marker-buffer marker)