Hi Sacha, Thanks for working on this.
Sacha Chua <sa...@sachachua.com> 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 "\\<headlines\\>" value) > (let ((depth (and (string-match "\\<[0-9]+\\>" value) > (string-to-number (match-string 0 value)))) > - (localp (org-string-match-p "\\<local\\>" value))) > - (org-html-toc depth info (and localp keyword)))) > + (localp (org-string-match-p "\\<local\\>" value)) > + (local-id (and (string-match "\\<id:\\(.+\\)\\>" 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