org-mode – Modo de organización: excluya títulos específicos de la tabla de contenido al exportar

Pregunta:

P: ¿Cómo puedo decirle org-mode que excluya títulos específicos de la tabla de contenido al exportar?

Por ejemplo, exportando

* Headline 1: Put me in TOC
* Headline 2: Put me in TOC
* Headline 3: DO NOT put me in TOC

a HTML produce

...
<div id="text-table-of-contents">
  <ul>
    <li><a href="#sec-1">1. Headline 1: Put me in TOC</a></li>
    <li><a href="#sec-2">2. Headline 2: Put me in TOC</a></li>
    <li><a href="#sec-3">3. Headline 3: DO NOT put me in TOC</a></li>
  </ul>
</div>
...

pero quiero que produzca

...
<div id="text-table-of-contents">
  <ul>
    <li><a href="#sec-1">1. Headline 1: Put me in TOC</a></li>
    <li><a href="#sec-2">2. Headline 2: Put me in TOC</a></li>
  </ul>
</div>
...

La sección Tabla de contenido del manual del org-mode no tiene información sobre esto.

Además, sé que puedo evitar que org-mode exporte titulares estableciendo la palabra clave COMMENT través de Cc; ( org-toggle-comment ) o etiquetándolos con :noexport: Si bien esto evita que los titulares afectados aparezcan en el TOC, también hace que su contenido se omita del documento resultante, que no es lo que quiero.

Respuesta:

Org utiliza org-export-collect-headlines para recopilar los titulares que deberían estar en la tabla de contenido. Esta función ya incluye dos criterios para excluir títulos: la profundidad del título y si se trata de una "sección de nota al pie" (*), por lo que es fácil agregar otro.

Vea la versión modificada de org-export-collect-headlines continuación. Esta versión permite evitar que aparezca un título en la tabla de contenido mediante la configuración de la propiedad NOTOC .

* Section 1: shows up in the TOC

* Section 2: modified Org code (not in the TOC)
  :PROPERTIES:
  :NOTOC:    t
  :END:

  This is the modified =org-export-collect-headlines=:

  #+BEGIN_SRC elisp
  (defun org-export-collect-headlines (info &optional n)
    "Collect headlines in order to build a table of contents. [...]

  Return a list of all exportable headlines as parsed elements.
  Footnote sections, if any, will be ignored."
    (let ((limit (plist-get info :headline-levels)))
      (setq n (if (wholenump n) (min n limit) limit))
      (org-element-map (plist-get info :parse-tree) 'headline
        #'(lambda (headline)
            (unless (or (org-element-property :NOTOC headline)               ; new condition
                        (org-element-property :footnote-section-p headline)) ; old condition
              (let ((level (org-export-get-relative-level headline info)))
                (and (<= level n) headline))))
        info)))
  #+END_SRC

** Sub-section
   This shows up in the TOC: property inheritance is off by default.

(*) Sin embargo, no sé qué son las "secciones de notas al pie".

Esto funciona para exportar backends que construyen el TOC manualmente. Los backends LaTeX, Beamer y Texinfo no lo hacen.

Al agregar este consejo a org-export-numbered-headline-p uno puede crear titulares con la propiedad UNNUMBERED export como \section*{...} , excluyéndolos de TOC al exportar a LaTeX y Beamer:

(advice-add 'org-export-numbered-headline-p :around
            (lambda (orig headline info)
              (and (funcall orig headline info)
                   (not (org-element-property :UNNUMBERED headline)))))

Tenga en cuenta que a partir de 2014-10-03 20:06:34 (GMT) la verificación de UNNUMBERED ya está incorporada

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım