Hi, Thanks for the comments. Let's give it another try, shand't we.
Nicolas Goaziou <m...@nicolasgoaziou.fr> writes: >> I introduce a new function `org-export-get-headline-id` which returns >> the first non-nil from the following list. There's a caveat: >> CUSTOM_ID is ensured to be unique! Did I open the famous can of worm? >> >> 1. The CUSTOM_ID property. >> 2. A relative level number if the headline is numbered. >> 3. The ID property >> 4. A new generated unique ID. > > I think we should keep separated CUSTOM_ID and ID on the one hand, and > internal reference on the other hand. > > There's no guarantee that CUSTOM_ID will be unique, and, even if you > check it out, there's no guarantee either that its value can be used > as-is in the generated docstring (think about ":CUSTOM_ID: 100%" in > LaTeX export). > > CUSTOM_ID is a human readable reference to an Org headline. This > headline should be referred to internally with a more specific id. To > a lesser extent, I think this also applied to org-id. > > Also `org-export-headline-internal-id' (or some such, to avoid confusion > with other IDs) may return a value simpler than what `org-id-new' > returns (e.g. a dumb counter). If it is possible, the output will be > easier to read. Okay, I returned to my first hack (which never made it to this list). Basically, I ID everything. Unnumbered sections get the id "unnumbered-sec-COUNTER" and numbered sections get the id "sec-COUNTER". Perhaps you will find it too much of a hack. The other easy alternative, which I find less pleasing, would have on incremental counter, but it makes it harder to read. A third alternative is give the numbers like in this patch, but store the numbers for unnumbered section somewhere else than :headline-numbering. >> Anyhow, `org-export-get-headline-id' ensures that we can refer to >> unnumbered headlines, which was not possible before. > > This is untrue. > >> Of course, in LaTeX such ref to a \section* will be nonsense, so we >> could introduce a \pageref here. > > At the moment, referring to an unnumbered section displays its name. In some modes, yes. In LaTeX it produces a \ref{ยท} that LaTeX will laugh at. If you have a better idea than using the title I'm all ears! >> + (when (equal 'headline (org-element-type destination)) > > Comparing symbols with `equal' is a sin beyond redemption. Use `eq'. Shiiit. . . Why, out of curiosity? I though equal was like the meaner, tougher eq, that gets shit right, but is a bit more expensive. >> + (format "[%s]" (org-export-data (org-export-get-alt-title >> destination info) info))))))))) > > alt title is for table of contents only. Yeah, but I though, conditional on using title for ref when nothing better exists, it would be nicer to have something shorter. Anyway, I changed it to plain title now. > Nitpick: I suggest `and' instead of `when' since there's no side-effect. OK, I think I got 'em all. >> + (unless (org-export-get-node-property :UNNUMBERED headline t) > > Actually, this test is fragile. In the following example > > * H1 > :PROPERTIES: > :UNNUMBERED: t > :END: > ** H2 > :PROPERTIES: > :UNNUMBERED: nil > :END: > *** H3 Fixed. Thanks, Rasmus -- Don't panic!!!