From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Guerry Subject: [Accepted] Allow mixed export of numbered and unnumbered sections in HTML Date: Wed, 23 Mar 2011 15:05:04 +0100 (CET) Message-ID: <20110323140504.98CE6715E@myhost.localdomain> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=42958 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q2Ogo-0006HM-Gt for emacs-orgmode@gnu.org; Wed, 23 Mar 2011 10:05:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q2Oge-0002r1-7A for emacs-orgmode@gnu.org; Wed, 23 Mar 2011 10:05:33 -0400 Received: from mail-ey0-f169.google.com ([209.85.215.169]:44616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q2Ogd-0002qg-WF for emacs-orgmode@gnu.org; Wed, 23 Mar 2011 10:05:24 -0400 Received: by eyh6 with SMTP id 6so2256023eyh.0 for ; Wed, 23 Mar 2011 07:05:23 -0700 (PDT) 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 Patch 711 (http://patchwork.newartisans.com/patch/711/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3Cm34o6u2mwf.fsf_-_%40e4300lm.epcc.ed.ac.uk%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O] Allow mixed export of numbered and unnumbered sections in HTML > Date: Wed, 23 Mar 2011 14:38:18 -0000 > From: Lawrence Mitchell > X-Patchwork-Id: 711 > Message-Id: > To: emacs-orgmode@gnu.org > > * lisp/org-html.el (org-export-as-html): Get local value of > org-export-with-section-numbers from the buffer's plist. Deal > specially with the case the resulting value is an integer. > (org-html-level-start): New optional argument of the option plist used > instead of `org-export-with-section-numbers'. Also deal specially > with the case that the value is an integer. > > When `org-export-with-section-numbers' (or the buffer-local > :section-numbers option) is an integer, we now export the first NUM > levels of headings with numbers and lower-level headings without. > > --- > lisp/org-html.el | 24 ++++++++++++++++++------ > 1 files changed, 18 insertions(+), 6 deletions(-) > > Nick Dokos wrote: > > Suvayu Ali wrote: > > >> This works too, but Lawrence's patch makes it much easier and > >> probably works for other export formats too. Thanks a lot. :) > > As Nick points out, each exporter backend needs a similar change. > > > No doubt Lawrence's patch can be extended to work for other exports, but > > it's not there yet: each exporter would need a change similar to the one > > that he made to the LaTeX exporter. > > Here's the matching change to the HTML exporter, which is the > only other one I'm familiar with. Maintainers, if you don't want > the special-casing on integerp, the change to move from > `org-export-with-section-numbers' to (plist-get opt-plist > :section-numbers) is the correct one anyway. I can split the > patches if required. > > diff --git a/lisp/org-html.el b/lisp/org-html.el > index b13fb93..06305f6 100644 > --- a/lisp/org-html.el > +++ b/lisp/org-html.el > @@ -1150,6 +1150,7 @@ PUB-DIR is set, use this as the publishing directory." > (language (plist-get opt-plist :language)) > (keywords (plist-get opt-plist :keywords)) > (description (plist-get opt-plist :description)) > + (num (plist-get opt-plist :section-numbers)) > (lang-words nil) > (head-count 0) cnt > (start 0) > @@ -1355,7 +1356,7 @@ lang=\"%s\" xml:lang=\"%s\"> > (if (string-match quote-re0 txt) > (setq txt (replace-match "" t t txt))) > (setq snumber (org-section-number level)) > - (if org-export-with-section-numbers > + (if (and num (integerp num) (>= num level)) > (setq txt (concat snumber " " txt))) > (if (<= level (max umax umax-toc)) > (setq head-count (+ head-count 1))) > @@ -1591,7 +1592,7 @@ lang=\"%s\" xml:lang=\"%s\"> > (setq first-heading-pos (or first-heading-pos (point))) > (org-html-level-start level txt umax > (and org-export-with-toc (<= level umax)) > - head-count) > + head-count opt-plist) > > ;; QUOTES > (when (string-match quote-re line) > @@ -1684,7 +1685,7 @@ lang=\"%s\" xml:lang=\"%s\"> > > (org-html-level-start 1 nil umax > (and org-export-with-toc (<= level umax)) > - head-count) > + head-count opt-plist) > ;; the to close the last text-... div. > (when (and (> umax 0) first-heading-pos) (insert "\n")) > > @@ -2330,7 +2331,7 @@ If there are links in the string, don't modify these." > (insert (if (equal type "d") "\n" "\n"))) > > (defvar body-only) ; dynamically scoped into this. > -(defun org-html-level-start (level title umax with-toc head-count) > +(defun org-html-level-start (level title umax with-toc head-count &optional opt-plist) > "Insert a new level in HTML export. > When TITLE is nil, just close all open levels." > (org-close-par-maybe) > @@ -2341,6 +2342,7 @@ When TITLE is nil, just close all open levels." > (preferred (and target > (cdr (assoc target org-export-preferred-target-alist)))) > (l org-level-max) > + (num (plist-get opt-plist :section-numbers)) > snumber snu href suffix) > (setq extra-targets (remove (or preferred target) extra-targets)) > (setq extra-targets > @@ -2395,10 +2397,20 @@ When TITLE is nil, just close all open levels." > (setq snumber (org-section-number level) > snu (replace-regexp-in-string "\\." "_" snumber)) > (setq level (+ level org-export-html-toplevel-hlevel -1)) > - (if (and org-export-with-section-numbers (not body-only)) > + (if (and num (not body-only)) > (setq title (concat > (format "%s" > - level snumber) > + level > + (if (and (integerp num) > + ;; fix up num to take into > + ;; account the top-level > + ;; heading value > + (>= (+ num > + org-export-html-toplevel-hlevel > + -1) > + level)) > + snumber > + "")) > " " title))) > (unless (= head-count 1) (insert "\n\n")) > (setq href (cdr (assoc (concat "sec-" snu) org-export-preferred-target-alist))) >