emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
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

  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).