From: Rasmus <rasmus@gmx.us>
To: emacs-orgmode@gnu.org
Subject: Re: TOC local for specified heading and its subheadings (in HTML export)?
Date: Sat, 28 Nov 2015 20:16:19 +0100 [thread overview]
Message-ID: <87bnae2av0.fsf@gmx.us> (raw)
In-Reply-To: 86si3qra8m.fsf@sachachua.com
Hi Sacha,
Thanks for working on this.
Sacha Chua <sacha@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
next prev parent reply other threads:[~2015-11-28 19:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-27 12:02 TOC local for specified heading and its subheadings (in HTML export)? D. C. Toedt
2015-11-28 4:58 ` Sacha Chua
2015-11-28 17:37 ` Sacha Chua
2015-11-28 19:16 ` Rasmus [this message]
2015-11-29 13:05 ` Nicolas Goaziou
2015-11-30 0:46 ` Sacha Chua
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bnae2av0.fsf@gmx.us \
--to=rasmus@gmx.us \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).