emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: Custom entry IDs in HTML export


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Custom entry IDs in HTML export
Date: Thu, 16 Apr 2009 08:55:26 +0200

Hi Sebastian,

I kind of like the idea to have a property that can be
used to set an ID, as an alternative to the <<target>>
notation.  Actually, using a property seems a lot cleaner,
thanks for coming up with this idea, Daniel.

I can also follow the reasoning that it is useful to have
the table of contents link to the human-readable id, because
it provides a general, simple workflow to retrieve a link that
will persist through changes of the document.  This workflow
was described also by Bernt earlier in this thread.

Finally, I also agree that the main id in the <h3> tag
should be the automatically generated one because this is
best for automatic processing and because of all the arguments
you have presented.

Would it cause problems for org-info.js if the toc points to
a user specified anchor in the headline, instead of the main
ID that is inside the <h3> tag?  THis would really be the only
required change.

- Carsten


On Mar 30, 2009, at 1:49 PM, Daniel Clemente wrote:

El dv, mar 27 2009, Sebastian Rose va escriure:

What we have now, just as Carstens said:

 # <<human-readable>>
 * Section B

Creates this headline in HTML:

<h2 id="sec-2"><a name="human-readable" id="human-readable"></a>2 Section B </h2>

This is enough for all the use cases I can think of.


 Yes, this is enough except for two things:
1. The TOC still links to #sec-2 and the user can't change that
2. Your syntax doesn't fold very well in the outliner. I mean: if you use

 # <<human-readable>>
 * Section B

then the comment appears at the end of the previous section, and you can miss it when you are viewing the heading „Section B“. I would swap both lines (solution 1):

 * Section B
 # <<human-readable>>

But since there are already LOGBOOK drawers under the heading, it would be a lot clearer to use a property, like EXPORT_ID (solution 2):

* Section B
 :PROPERTIES:
 :EXPORT_ID: human-readable
 :END:


In this way, the TOC can reliably find the EXPORT_ID, and then generate:
<h2 id="sec-2"><a name="human-readable" id="human-readable"></a>2 Section B </h2>

(You could also leave *just* the human-readable id, but having two is not bad.


I would prefer solution 1, but I don't because I'm not sure that the TOC can find the ID if it is written as a comment anywhere under the heading (and together with other things).

Solution 2 involves thus: a new property to specify the human- readable entry ID, which will be used to link to the entry. The automatic ID (#sec-2) will still work for all entrys.



* Distinguishing automatic and human readable IDs

 One thing I like is, that we now _can_ distinguish the
 `human-readable-target' (human readable) from the `sec-2' (not human
 readable and not context related) using a regular expression.

In org-info.js, I can now prefere the human readable ID in <a> from an
 automatic created one, and thus use that to create the links for `l'
 and `L'. The same holds true for other programming languages and
 parsers.

 If we open the <h3>'s ID for user defined values (bad), we can not
distinguish those ID's using a regular expression and there is no way to detect the human readable one. There will be no way to _know_ that
 the <a>'s ID is the prefered one used for human readable links.


Solution 2 doesn't break the parsing techniques you use; in fact it can also make clearer which ID is the human readable one and which one not.


 This is not extremely important; just useful:
- for pages with many incoming links from external sites
- to ensure link integrity (now you can't assure that links will still work in 1 year ... or in some weeks) - to avoid that HTML visitors get directed to a wrong section and can't find what they searched


 Greetings,
Daniel


_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode





reply via email to

[Prev in Thread] Current Thread [Next in Thread]