From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rasmus Subject: Re: TOC local for specified heading and its subheadings (in HTML export)? Date: Sat, 28 Nov 2015 20:16:19 +0100 Message-ID: <87bnae2av0.fsf@gmx.us> References: <86si3qra8m.fsf@sachachua.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46524) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a2kz2-00055w-5Z for emacs-orgmode@gnu.org; Sat, 28 Nov 2015 14:16:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a2kyy-00079d-UX for emacs-orgmode@gnu.org; Sat, 28 Nov 2015 14:16:32 -0500 Received: from plane.gmane.org ([80.91.229.3]:42071) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a2kyy-00079Z-OG for emacs-orgmode@gnu.org; Sat, 28 Nov 2015 14:16:28 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1a2kys-0001hr-A5 for emacs-orgmode@gnu.org; Sat, 28 Nov 2015 20:16:22 +0100 Received: from tsn109-201-154-180.dyn.nltelcom.net ([109.201.154.180]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 28 Nov 2015 20:16:22 +0100 Received: from rasmus by tsn109-201-154-180.dyn.nltelcom.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 28 Nov 2015 20:16:22 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi Sacha, Thanks for working on this. Sacha Chua writes: > I think it will permit the use of lines like: > > #+TOC: headlines 1 id:ConfInfoClauses "id:headline" is a special type of links (see org-id.el). A reference to a custom-ids is typically prefixed by "#" in Org, e.g. ’[[#heading]]’ or ’#+include: "file.org::#head"’. Further, IMO it might be better to extend the ’#+toc: headlines local’ declaration. Of course you could argue that ’local’ becomes a special case of the above "id:whatever-is-the-name-of-the-local-headline". Personally, I would like a more explicit syntax, though I recognize that it doesn’t necessarily make a difference if it’s an extension, in the sense of suffixing. E.g.: #+toc: headlines local 1 :headline "* my headline" #+toc: headlines local 1 :headline "#headline" Or closer to your suggestion, #+toc: headlines 1 :headline "#headline" #+toc: headlines 1 :headline local Which as a special case can be written as, #+toc: headlines 1 local > diff --git a/lisp/ox-html.el b/lisp/ox-html.el > index effd387..3b0e239 100644 > --- a/lisp/ox-html.el > +++ b/lisp/ox-html.el > @@ -2651,8 +2651,18 @@ CONTENTS is nil. INFO is a plist holding contextual information." > ((string-match "\\" value) > (let ((depth (and (string-match "\\<[0-9]+\\>" value) > (string-to-number (match-string 0 value)))) > - (localp (org-string-match-p "\\" value))) > - (org-html-toc depth info (and localp keyword)))) > + (localp (org-string-match-p "\\" value)) > + (local-id (and (string-match "\\" value) > + (match-string 1 value)))) Keyword options are typically prefixed with colon. See e.g. #+include or ob source blocks. > + (org-html-toc depth info > + (or > + (and local-id > + (car (org-element-map (plist-get info :parse-tree) > + 'headline > + (lambda (element) > + (and (string= (org-element-property :CUSTOM_ID element) local-id) > + element))))) Wouldn’t it better to use org-link-search and get the element at point? > + (and localp keyword))))) > ((string= "listings" value) (org-html-list-of-listings info)) > ((string= "tables" value) (org-html-list-of-tables info)))))))) > > D. C., are you okay with applying patches to your local copy, or do > you need someone to clean it up and merge it into core? Complete patches are of course welcome, including a change log commit message, an update to org.texi, and an entry in NEWS. See: http://orgmode.org/worg/org-contribute.html We’d need support across all backends where it makes sense, so I guess at least, latex, beamer, odt, html, ascii, texinfo (if possible). Rasmus -- Dobbelt-A