Modalità Org: esclude titoli specifici dal sommario durante l'esportazione


13

D: Come posso dire org-modedi escludere titoli specifici dal sommario durante l'esportazione?

Ad esempio, esportazione

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

in 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>
...

ma voglio che produca

...
<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 sezione Sommario delorg-mode manuale non contiene informazioni al riguardo.

Inoltre, so che posso evitare org-modedi esportare i titoli impostando la COMMENTparola chiave via C-c ;( org-toggle-comment) o tagtoli con :noexport:. Sebbene ciò impedisca che i titoli interessati vengano visualizzati nel sommario, fa sì che i loro contenuti vengano omessi dal documento risultante, che non è quello che voglio.


1
Questa non è la risposta che stai cercando, ma solo come una nota di un altro vicolo cieco: fa EXPORT_OPTIONS: toc:nil quasi quello che vuoi, ma solo quando esporti solo la sottostruttura. Per chiarire, vuoi che la sezione sia ancora numerata o vuoi qualcosa di simile a LaTeX \section*?
Sean Allred,

@SeanAllred Vorrei che la sezione fosse ancora numerata. Più in generale, non voglio cambiare nulla sul modo in cui vengono esportate le singole sezioni. Non voglio che alcuni di loro si presentino nel sommario.
giovedì

Risposte:


12

Org utilizza org-export-collect-headlinesper raccogliere titoli che dovrebbero essere nel sommario. Questa funzione include già due criteri per escludere i titoli: la profondità del titolo e se si tratta di una "sezione a piè di pagina" (*), quindi è facile aggiungerne un altro.

Vedi la versione modificata di org-export-collect-headlinesseguito. Questa versione consente di impedire la visualizzazione di un titolo nel sommario impostando la NOTOCproprietà.

* 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.

(*) Non so quali siano le "sezioni a piè di pagina".

Questo funziona per i back-end di esportazione che creano manualmente il sommario. I backend di LaTeX, Beamer e Texinfo no.

Aggiungendo questo consiglio a org-export-numbered-headline-puno si può fare notizia con l' UNNUMBEREDesportazione della proprietà come \section*{...}, escludendoli dal sommario quando si esporta in LaTeX e Beamer:

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

Si noti che dal 03/10/2014 alle 20:06:34 (GMT) il controllo di UNNUMBERED è già integrato


1
Grazie, questo funziona benissimo per le esportazioni HTML. In realtà ho anche bisogno che funzioni per LaTeX / Beamer; Inizialmente non ho parlato di questo perché ho pensato che ci fosse una soluzione generica che avrebbe funzionato per tutti (o almeno la maggior parte) back-end di esportazione ... Hai idea di come affrontare questo problema per l'esportazione LaTeX? Confronto .htmle .texfile che org-modeproduce durante l'esportazione, il problema principale sembra essere quello di org-modecreare manualmente il sommario per HTML, ma semplicemente scaricare un generico \tableofcontentsnel .texfile.
itsjeyd

@itsjeyd: Non credo che sia possibile una soluzione generica: come hai detto, i backend di esportazione LaTeX (e beamer e Texinfo) usano i comandi nativi per creare TOC mentre altri backend creano TOC manualmente. E ' è possibile escludere una sezione dalla TOC in LaTeX , ma non ho trovato una soluzione che è accettato dalla comunità come quella giusta . L'uso dell'idea a cui mi sono collegato nel org-modecodice di esportazione richiederebbe importanti modifiche org-latex-headline. Per quanto riguarda l'implementazione di questo nel supporto Texinfo, non so nemmeno da dove cominciare.
Costantino

OK, grazie mille per il follow-up. Per Beamer, penso che ricorrerò semplicemente per rendere inalterate le sezioni che non voglio mostrare nel sommario . Caso chiuso. :)
itsjeyd

@itsjeyd: è possibile modificare org-export-numbered-headline-pper ottenere questo comportamento quasi automaticamente - se trasformandolo in una sezione non numerata è un'opzione, che è. Posso elaborare se sei interessato.
Costantino,

Per favore, fatti sempre interessato a semplificare le soluzioni!
È il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.