Charles Berry <ccbe...@ucsd.edu> writes: > RG Williams <rgwills <at> gmail.com> writes: > >> >> Hi, >> I know you can generate a table of contents when exporting, but can you do >> it just within org? For context, I'm uploading an .org file to github and I >> don't need to export it to another format because github recognizes and >> displays it just fine. It's long so a ToC would be nice. Do I just have to >> write it myself? >> >> > > AFAIK, you do have to write it yourself, but org-mode provides decent tools > for doing it. Here is an example. Run the src-block and a table of contents > will appear near the top. Change the content and rerun the src-block and > the t-o-c will change accordingly. > > It doesn't deal with rules for omitting headlines like > COMMENT, :noexport:, etc, but if you are simply copying the .org file, > maybe it is good enough. > > > #+RESULTS: Table_of_Contents > > * h > lower H > * i > lower I > * j > lower J > ** 1 > one > ** 2 > two > > #+NAME: Table_of_Contents > #+BEGIN_SRC emacs-lisp :wrap example > (mapconcat 'identity > (org-element-map > (org-element-parse-buffer 'headline) 'headline > (lambda (hl) (let > ((lev > (org-element-property :level hl)) > (htitle (org-element-property :title hl))) > (concat (make-string lev ? ) "- " htitle )))) "\n") > #+END_SRC > >
Another more manual way: export to text and cut-and-paste the TOC into a noexport top-level section. Nick