* Extract toc from org file [not found] <100cb12a-b3f1-739a-84f1-847f5e86a8bc@housseini.me> @ 2022-09-26 11:53 ` reza 2022-09-26 15:21 ` Max Nikulin ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: reza @ 2022-09-26 11:53 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 223 bytes --] Hi list Is there a way to extract a toc from an org file e.g: #+INCLUDE: myfile.org :toc only I want to assemble the toc's from several files into one file and there seems to be no easy way to do this. Best, Reza [-- Attachment #2: OpenPGP_0xC375C6AF05125C52.asc --] [-- Type: application/pgp-keys, Size: 15557 bytes --] [-- Attachment #3: OpenPGP_signature --] [-- Type: application/pgp-signature, Size: 499 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-26 11:53 ` Extract toc from org file reza @ 2022-09-26 15:21 ` Max Nikulin 2022-09-26 16:02 ` Max Nikulin 2022-09-26 15:39 ` Juan Manuel Macías 2022-09-27 1:28 ` Ihor Radchenko 2 siblings, 1 reply; 11+ messages in thread From: Max Nikulin @ 2022-09-26 15:21 UTC (permalink / raw) To: emacs-orgmode On 26/09/2022 18:53, reza wrote: > > Is there a way to extract a toc from an org file e.g: > > #+INCLUDE: myfile.org :toc only > > I want to assemble the toc's from several files into one file and there > seems to be no easy way to do this. Likely `org-element-map' allows to extract headings. There are should be some example in the mail list archive and at worg (hacks, perhaps in FAQ). ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-26 15:21 ` Max Nikulin @ 2022-09-26 16:02 ` Max Nikulin [not found] ` <bb5ed7b1-e281-39b1-d7e7-659a5317ad98@housseini.me> 0 siblings, 1 reply; 11+ messages in thread From: Max Nikulin @ 2022-09-26 16:02 UTC (permalink / raw) To: emacs-orgmode On 26/09/2022 22:21, Max Nikulin wrote: > On 26/09/2022 18:53, reza wrote: >> >> Is there a way to extract a toc from an org file e.g: >> >> #+INCLUDE: myfile.org :toc only >> >> I want to assemble the toc's from several files into one file and there >> seems to be no easy way to do this. > > Likely `org-element-map' allows to extract headings. There are should be > some example in the mail list archive and at worg (hacks, perhaps in FAQ). See also info "(org) Using the Mapping API" https://orgmode.org/manual/Using-the-Mapping-API.html for `org-map-entries'. ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <bb5ed7b1-e281-39b1-d7e7-659a5317ad98@housseini.me>]
* Re: Extract toc from org file [not found] ` <bb5ed7b1-e281-39b1-d7e7-659a5317ad98@housseini.me> @ 2022-09-27 6:57 ` reza 0 siblings, 0 replies; 11+ messages in thread From: reza @ 2022-09-27 6:57 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 449 bytes --] >> Likely `org-element-map' allows to extract headings. There are should >> be some example in the mail list archive and at worg (hacks, perhaps >> in FAQ). > > See also info "(org) Using the Mapping API" > https://orgmode.org/manual/Using-the-Mapping-API.html > for `org-map-entries'. Thanks for the suggestion, but these look like really low level functions which involve a lot of coding. Will try if I can figure out something. Best, Reza [-- Attachment #2: OpenPGP_0xC375C6AF05125C52.asc --] [-- Type: application/pgp-keys, Size: 15557 bytes --] [-- Attachment #3: OpenPGP_signature --] [-- Type: application/pgp-signature, Size: 499 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-26 11:53 ` Extract toc from org file reza 2022-09-26 15:21 ` Max Nikulin @ 2022-09-26 15:39 ` Juan Manuel Macías [not found] ` <a5365480-d7b7-5015-7eb1-34e9bc215abf@housseini.me> 2022-09-27 1:28 ` Ihor Radchenko 2 siblings, 1 reply; 11+ messages in thread From: Juan Manuel Macías @ 2022-09-26 15:39 UTC (permalink / raw) To: reza; +Cc: orgmode reza writes: > Is there a way to extract a toc from an org file e.g: > > #+INCLUDE: myfile.org :toc only > > I want to assemble the toc's from several files into one file and there > seems to be no easy way to do this. Maybe the org-make-toc package can help you with what you're looking for: https://github.com/alphapapa/org-make-toc You can choose a heading on every document to contain a TOC. And then link each heading via org-transclusion: https://github.com/nobiot/org-transclusion Best regards, Juan Manuel -- -- ------------------------------------------------------ Juan Manuel Macías https://juanmanuelmacias.com https://lunotipia.juanmanuelmacias.com https://gnutas.juanmanuelmacias.com ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <a5365480-d7b7-5015-7eb1-34e9bc215abf@housseini.me>]
* Re: Extract toc from org file [not found] ` <a5365480-d7b7-5015-7eb1-34e9bc215abf@housseini.me> @ 2022-09-27 6:54 ` reza 0 siblings, 0 replies; 11+ messages in thread From: reza @ 2022-09-27 6:54 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 400 bytes --] > Maybe the org-make-toc package can help you with what you're looking for: > > https://github.com/alphapapa/org-make-toc > > You can choose a heading on every document to contain a TOC. And then link each heading via org-transclusion: > > https://github.com/nobiot/org-transclusion Thanks for the suggestion, will try it out, but looks like a lot of manual bookkeeping is involved. [-- Attachment #2: OpenPGP_0xC375C6AF05125C52.asc --] [-- Type: application/pgp-keys, Size: 15557 bytes --] [-- Attachment #3: OpenPGP_signature --] [-- Type: application/pgp-signature, Size: 499 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-26 11:53 ` Extract toc from org file reza 2022-09-26 15:21 ` Max Nikulin 2022-09-26 15:39 ` Juan Manuel Macías @ 2022-09-27 1:28 ` Ihor Radchenko [not found] ` <fa280d29-36db-8f94-c360-92366ebbeb64@housseini.me> 2 siblings, 1 reply; 11+ messages in thread From: Ihor Radchenko @ 2022-09-27 1:28 UTC (permalink / raw) To: reza; +Cc: emacs-orgmode@gnu.org reza <reza@housseini.me> writes: > Hi list > > Is there a way to extract a toc from an org file e.g: > > #+INCLUDE: myfile.org :toc only > > I want to assemble the toc's from several files into one file and there > seems to be no easy way to do this. I presume that you are attempting to export multiple org files at the same time. Such functionality is covered by Org publish. Org publish allows generating a sitemap, which is another word for TOC in a multifile export. See 14.1.7 Generating a sitemap section of Org manual. If you are exporting a single Org file that is using contents of multiple #+include'd files, you can use the normal TOC generation as described in 13.3 Table of Contents section of the Org manual. Hope it helps. -- Ihor Radchenko, Org mode contributor, Learn more about Org mode at https://orgmode.org/. Support Org development at https://liberapay.com/org-mode, or support my work at https://liberapay.com/yantar92 ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <fa280d29-36db-8f94-c360-92366ebbeb64@housseini.me>]
* Re: Extract toc from org file [not found] ` <fa280d29-36db-8f94-c360-92366ebbeb64@housseini.me> @ 2022-09-27 6:51 ` reza 2022-09-27 7:08 ` Ihor Radchenko 0 siblings, 1 reply; 11+ messages in thread From: reza @ 2022-09-27 6:51 UTC (permalink / raw) To: Ihor Radchenko; +Cc: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 774 bytes --] > I presume that you are attempting to export multiple org files at the > same time. Yes. > Such functionality is covered by Org publish. > Org publish allows generating a sitemap, which is another word for TOC > in a multifile export. See 14.1.7 Generating a sitemap section of Org > manual. I'm using org publish, but the sitemap does only collect the titles from org files but I want the complete toc of each file and as far as I undesrand this is not possible with sitemap? > If you are exporting a single Org file that is using contents of > multiple #+include'd files, you can use the normal TOC generation as > described in 13.3 Table of Contents section of the Org manual. But this forces all the content into a single file, no? Thanks for the suggestions! [-- Attachment #2: OpenPGP_0xC375C6AF05125C52.asc --] [-- Type: application/pgp-keys, Size: 15557 bytes --] [-- Attachment #3: OpenPGP_signature --] [-- Type: application/pgp-signature, Size: 499 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-27 6:51 ` reza @ 2022-09-27 7:08 ` Ihor Radchenko [not found] ` <0ce13d8e-aea6-64af-86e5-da4f88be5d9c@housseini.me> 0 siblings, 1 reply; 11+ messages in thread From: Ihor Radchenko @ 2022-09-27 7:08 UTC (permalink / raw) To: reza; +Cc: emacs-orgmode@gnu.org reza <reza@housseini.me> writes: > I'm using org publish, but the sitemap does only collect the titles from > org files but I want the complete toc of each file and as far as I > undesrand this is not possible with sitemap? You just need a custom :sitemap-function. The default `org-publish-sitemap-default' flattens the hierarchy. From the manual: ‘:sitemap-function’ Plug-in function to use for generation of the sitemap. It is called with two arguments: the title of the site-map and a representation of the files and directories involved in the project as a nested list, which can further be transformed using ‘org-list-to-generic’, ‘org-list-to-subtree’ and alike. Default value generates a plain list of links to all files in the project. You may create a function similar to `org-publish-sitemap-default' but using `org-list-to-subtree' instead of `org-list-to-org' >> If you are exporting a single Org file that is using contents of >> multiple #+include'd files, you can use the normal TOC generation as >> described in 13.3 Table of Contents section of the Org manual. > > But this forces all the content into a single file, no? Yes, it will. It is indeed not something you want in your use case. -- Ihor Radchenko, Org mode contributor, Learn more about Org mode at https://orgmode.org/. Support Org development at https://liberapay.com/org-mode, or support my work at https://liberapay.com/yantar92 ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <0ce13d8e-aea6-64af-86e5-da4f88be5d9c@housseini.me>]
* Re: Extract toc from org file [not found] ` <0ce13d8e-aea6-64af-86e5-da4f88be5d9c@housseini.me> @ 2022-09-27 8:19 ` reza 2022-09-27 12:47 ` Ihor Radchenko 0 siblings, 1 reply; 11+ messages in thread From: reza @ 2022-09-27 8:19 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 1028 bytes --] > You just need a custom :sitemap-function. > The default `org-publish-sitemap-default' flattens the hierarchy. > > From the manual: > > ‘:sitemap-function’ > Plug-in function to use for generation of the sitemap. It is > called with two arguments: the title of the site-map and a > representation of the files and directories involved in the project > as a nested list, which can further be transformed using > ‘org-list-to-generic’, ‘org-list-to-subtree’ and alike. Default > value generates a plain list of links to all files in the project. > > You may create a function similar to `org-publish-sitemap-default' but > using `org-list-to-subtree' instead of `org-list-to-org' Thanks for the pointers, but I can't figure out how to get from there to a toc? As I understand, `list' is a list of files from my project and `org-list-to-subtree' does add stars to this list. But how do I get all sections and subsections from my file to appear here? [-- Attachment #2: OpenPGP_0xC375C6AF05125C52.asc --] [-- Type: application/pgp-keys, Size: 15557 bytes --] [-- Attachment #3: OpenPGP_signature --] [-- Type: application/pgp-signature, Size: 499 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Extract toc from org file 2022-09-27 8:19 ` reza @ 2022-09-27 12:47 ` Ihor Radchenko 0 siblings, 0 replies; 11+ messages in thread From: Ihor Radchenko @ 2022-09-27 12:47 UTC (permalink / raw) To: reza; +Cc: emacs-orgmode@gnu.org reza <reza@housseini.me> writes: >> You may create a function similar to `org-publish-sitemap-default' but > >> using `org-list-to-subtree' instead of `org-list-to-org' > > Thanks for the pointers, but I can't figure out how to get from there to > a toc? As I understand, `list' is a list of files from my project and > `org-list-to-subtree' does add stars to this list. But how do I get all > sections and subsections from my file to appear here? Hmm. You are right. Currently, only links to files inside published project are in the sitemap. Adding TOC cross-links will not be trivial. One way could be publishing TOC in individual files and later moving those TOCs into sitemap. But, say, in html the TOC entries are internal html links... So things are going to be tricky. Or you may reuse the code for site index (org-publish-collect-index and org-publish-index-generate-theindex) but to collect your TOC entries. If you manage to get something useful about this problem, please let us know. This kind of feature sounds like something we could add to ox-publish. -- Ihor Radchenko, Org mode contributor, Learn more about Org mode at https://orgmode.org/. Support Org development at https://liberapay.com/org-mode, or support my work at https://liberapay.com/yantar92 ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-09-27 14:39 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <100cb12a-b3f1-739a-84f1-847f5e86a8bc@housseini.me> 2022-09-26 11:53 ` Extract toc from org file reza 2022-09-26 15:21 ` Max Nikulin 2022-09-26 16:02 ` Max Nikulin [not found] ` <bb5ed7b1-e281-39b1-d7e7-659a5317ad98@housseini.me> 2022-09-27 6:57 ` reza 2022-09-26 15:39 ` Juan Manuel Macías [not found] ` <a5365480-d7b7-5015-7eb1-34e9bc215abf@housseini.me> 2022-09-27 6:54 ` reza 2022-09-27 1:28 ` Ihor Radchenko [not found] ` <fa280d29-36db-8f94-c360-92366ebbeb64@housseini.me> 2022-09-27 6:51 ` reza 2022-09-27 7:08 ` Ihor Radchenko [not found] ` <0ce13d8e-aea6-64af-86e5-da4f88be5d9c@housseini.me> 2022-09-27 8:19 ` reza 2022-09-27 12:47 ` Ihor Radchenko
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).