Org-Modus: Beim Exportieren bestimmte Überschriften aus dem Inhaltsverzeichnis ausschließen

13

F: Wie kann ich festlegen org-mode, dass beim Exportieren bestimmte Überschriften aus dem Inhaltsverzeichnis ausgeschlossen werden?

Zum Beispiel exportieren

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

zu HTML erzeugt

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

aber ich möchte, dass es produziert

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

Der Abschnitt Inhaltsverzeichnis des org-modeHandbuchs enthält hierzu keine Informationen.

Außerdem weiß ich, dass ich org-modeÜberschriften nicht exportieren kann, indem ich das COMMENTSchlüsselwort über C-c ;( org-toggle-comment) einstelle oder sie mit einem Tag versehen :noexport:. Dies verhindert zwar, dass betroffene Überschriften im Inhaltsverzeichnis angezeigt werden, führt jedoch auch dazu, dass deren Inhalt aus dem resultierenden Dokument entfernt wird. Dies ist nicht das, was ich möchte.

itsjeyd
quelle
1
Dies ist nicht die Antwort, nach der Sie suchen, sondern nur eine Anmerkung zu einer anderen Sackgasse: EXPORT_OPTIONS: toc:nil fast das, was Sie wollen, aber nur, wenn Sie nur den Teilbaum exportieren. Möchten Sie zur Verdeutlichung, dass der Abschnitt noch nummeriert ist, oder möchten Sie etwas Ähnliches wie bei LaTeX \section*?
Sean Allred
@SeanAllred Ich möchte, dass der Abschnitt noch nummeriert wird. Im Allgemeinen möchte ich nichts an der Art und Weise ändern, in der einzelne Abschnitte exportiert werden. Ich möchte nur nicht, dass einige von ihnen im Inhaltsverzeichnis erscheinen.
Es ist der

Antworten:

12

Org org-export-collect-headlinessammelt Überschriften, die im Inhaltsverzeichnis enthalten sein sollen. Diese Funktion enthält bereits zwei Kriterien zum Ausschließen von Überschriften: die Überschriftentiefe und ob es sich um einen "Fußnotenabschnitt" (*) handelt, so dass es einfach ist, einen weiteren hinzuzufügen.

Siehe die modifizierte Version von org-export-collect-headlinesunten. Mit dieser Version kann verhindert werden, dass eine Überschrift im Inhaltsverzeichnis angezeigt wird, indem die NOTOCEigenschaft festgelegt wird.

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

(*) Ich weiß allerdings nicht, was "Fußnotenabschnitte" sind.

Dies funktioniert für Export-Backends, die das Inhaltsverzeichnis manuell erstellen. LaTeX-, Beamer- und Texinfo-Backends tun dies nicht.

Durch Hinzufügen dieses Hinweises org-export-numbered-headline-pkönnen beim Exportieren von UNNUMBEREDEigenschaften als Überschriften gemacht werden, die \section*{...}beim Exportieren nach LaTeX und Beamer aus dem Inhaltsverzeichnis ausgeschlossen werden:

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

Beachten Sie, dass ab dem 03.10.2014 20:06:34 (GMT) die Überprüfung von UNNUMBERED bereits integriert ist

Konstantin
quelle
1
Danke, das funktioniert gut für HTML-Exporte. Ich brauche das eigentlich auch für LaTeX / Beamer; Ich habe dies anfangs nicht erwähnt, weil ich davon ausgegangen bin, dass es eine generische Lösung geben muss, die für alle (oder zumindest die meisten) Export-Back-Ends funktioniert. Der Vergleich .htmlund die .texDateien, org-modedie beim Exportieren erstellt werden, scheinen das Hauptproblem zu sein, dass org-modedas Inhaltsverzeichnis manuell für HTML erstellt wird, aber einfach eine generische Datei \tableofcontentsin die .texDatei kopiert wird.
Es ist der
@itsjeyd: Ich glaube nicht, dass eine generische Lösung möglich ist: Wie Sie sagten, verwenden LaTeX- (und Beamer- und Texinfo-) Export-Backends native Befehle, um das Inhaltsverzeichnis zu erstellen, während andere Backends das Inhaltsverzeichnis manuell erstellen. Es ist möglich , einen Abschnitt in LaTeX aus dem Inhaltsverzeichnis auszuschließen , aber ich habe keine Lösung gefunden, die von der Community als die richtige akzeptiert wird . Die Verwendung der Idee, mit der ich im org-modeExportcode verknüpft war, würde größere Änderungen an erforderlich machen org-latex-headline. Was die Implementierung in Texinfo angeht, weiß ich nicht einmal, wo ich anfangen soll.
Constantine
OK, vielen Dank für das Follow-up. Für Beamer denke ich, dass ich nur darauf zurückgreifen werde , die Abschnitte, die nicht im Inhaltsverzeichnis angezeigt werden sollen, unnummeriert zu machen . Fall abgeschlossen. :)
itsjeyd
@itsjeyd: Sie können ändern org-export-numbered-headline-pdieses Verhalten fast automatisch zu bekommen - wenn es in einen nicht nummerierten Abschnitt Drehen ist eine Option, das ist. Ich kann näher darauf eingehen, wenn Sie interessiert sind.
Konstantin
Bitte tun - immer daran interessiert, Lösungen zu vereinfachen!
15.