From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ethan Glasser-Camp Subject: Exporting footnotes Date: Sun, 30 Jan 2011 04:00:21 -0500 Message-ID: <4D4528A5.1020700@cs.rpi.edu> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080808050609020703030305" Return-path: Received: from [140.186.70.92] (port=44249 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjTA6-0003a9-63 for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 04:01:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjTA5-0006hn-6X for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 04:01:34 -0500 Received: from cliffclavin.cs.rpi.edu ([128.113.126.25]:10984) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjTA5-0006h3-0p for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 04:01:33 -0500 Received: from [10.0.15.109] ([195.24.209.14]) (authenticated bits=0) by cliffclavin.cs.rpi.edu (8.14.3/8.14.3) with ESMTP id p0U90jBV091930 for ; Sun, 30 Jan 2011 04:01:06 -0500 (EST) (envelope-from glasse@cs.rpi.edu) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org This is a multi-part message in MIME format. --------------080808050609020703030305 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi list, I've been playing with the HTML export and it's pretty cool. I just have one quibble, which is that footnotes are always put at the end of the document. I'd like them to be at the end of each item, which is where I put them in my org file -- i.e. I've set org-footnote-section to nil. I poked around in the code and it looks like the footnotes are being normalized, and the normalization function is putting them all at the end of the document. Normalization is necessary for the names of footnotes, but I think it is too aggressive about moving footnotes. Are there exporters for which collecting footnotes in one place is necessary? I think org-export-as-html could handle keeping the footnotes where they are with minimal changes. Attached is a sketchy patch that does what I want. It's an ugly hack. What do you think? Thanks. Ethan --------------080808050609020703030305 Content-Type: text/x-patch; name="org-normalize-without-moving.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="org-normalize-without-moving.patch" diff --git a/lisp/org-exp.el b/lisp/org-exp.el index a055bac..99b3a64 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -1094,7 +1094,9 @@ on this string to produce the exported version." ;; Normalize footnotes (when (plist-get parameters :footnotes) - (org-footnote-normalize nil t)) + (if htmlp + (org-footnote-normalize nil org-footnote-section) + (org-footnote-normalize nil t))) ;; Find all headings and compute the targets for them (setq target-alist (org-export-define-heading-targets target-alist)) diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el index 88ffd6e..027856e 100644 --- a/lisp/org-footnote.el +++ b/lisp/org-footnote.el @@ -478,14 +478,24 @@ referenced sequence." (not sort-only) ; this is normalization for-preprocessor) ; the is the preprocessor ;; Insert the footnotes together in one place - (progn - (setq def - (mapconcat - (lambda (x) - (format "[%s] %s" (nth (if sort-only 0 1) x) - (org-trim (nth 2 x)))) - ref-table "\n\n")) - (if ref-table (insert "\n" def "\n\n"))) + (if for-preprocessor + (progn + (message "%s" ref-table) + (setq def + (mapconcat + (lambda (x) + (format "[%s] %s" (nth (if sort-only 0 1) x) + (org-trim (nth 2 x)))) + ref-table "\n\n")) + (if ref-table (insert "\n" def "\n\n"))) + (mapc (lambda (entry) + (when (car entry) + (goto-char (point-min)) + (when (re-search-forward (format ".\\[%s[]:]" (regexp-quote (nth 1 entry))) + nil t) + (org-footnote-goto-local-insertion-point) + (insert (format "\n\n[%s] %s" (nth 1 entry) (nth 2 entry)))))) + ref-table)) ;; Insert each footnote near the first reference ;; Happens only in Org files with no special footnote section, ;; and only when doing sorting diff --git a/lisp/org-html.el b/lisp/org-html.el index 9a5d225..3dedab9 100644 --- a/lisp/org-html.el +++ b/lisp/org-html.el @@ -1676,16 +1676,19 @@ lang=\"%s\" xml:lang=\"%s\"> ;; the to close the last text-... div. (when (and (> umax 0) first-heading-pos) (insert "\n")) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "

[^\000]*?\\(

\\|\\'\\)" nil t) - (push (match-string 0) footnotes) - (replace-match "" t t))) - (when footnotes - (insert (format org-export-html-footnotes-section - (nth 4 lang-words) - (mapconcat 'identity (nreverse footnotes) "\n")) - "\n")) + (when org-footnote-section + ;; Move all the footnotes into a footnotes section + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "

[^\000]*?\\(

\\|\\'\\)" nil t) + (push (match-string 0) footnotes) + (replace-match "" t t))) + (when footnotes + (insert (format org-export-html-footnotes-section + (nth 4 lang-words) + (mapconcat 'identity (nreverse footnotes) "\n")) + "\n"))) + (let ((bib (org-export-html-get-bibliography))) (when bib (insert "\n" bib "\n"))) --------------080808050609020703030305 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --------------080808050609020703030305--