[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] TOC local for specified heading and its subheadings (in HTML exp
From: |
Rasmus |
Subject: |
Re: [O] TOC local for specified heading and its subheadings (in HTML export)? |
Date: |
Sat, 28 Nov 2015 20:16:19 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Hi Sacha,
Thanks for working on this.
Sacha Chua <address@hidden> 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