組織モード:エクスポート時に目次から特定の見出しを除外する


13

Q:org-modeエクスポート時に目次から特定の見出しを除外するように指示するにはどうすればよいですか?

たとえば、エクスポート

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

HTMLへの生成

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

しかし、私はそれが生産したい

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

コンテンツの表のセクションorg-modeのマニュアルは、この上の任意の情報を持っていません。

また、()経由でキーワードをorg-mode設定するか、でタグ付けすることにより、見出しをエクスポートしないようにすることができます。これにより、影響を受ける見出しがTOCに表示されなくなりますが、その結果、結果のドキュメントからそのコンテンツが省略されますが、これは私が望んでいるものではありません。COMMENTC-c ;org-toggle-comment:noexport:


1
これはあなたが探している答えではありませんが、別の行き止まりのメモとしてだけです:EXPORT_OPTIONS: toc:nil ほとんどあなたが望むことをしますが、サブツリーだけをエクスポートするときだけです。明確にするために、セクションにまだ番号を付けたいですか、それともLaTeXに似たものが必要ですか\section*
ショーンオールレッド

@SeanAllredセクションにはまだ番号を付けてほしい。より一般的には、個々のセクションのエクスポート方法については何も変更したくありません。TOCにそれらの一部を表示させたくないのです。
itsjeyd 14年

回答:


12

組織はorg-export-collect-headlines、目次に含める必要がある見出しを収集するために使用します。この関数には、見出しを除外するための2つの基準が既に含まれています。見出しの深さと、「脚注セクション」(*)かどうかです。したがって、別の基準を簡単に追加できます。

org-export-collect-headlines以下の修正版をご覧ください。このバージョンでは、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.

(*)しかし、「脚注セクション」とは何なのかわかりません。

これは、TOCを手動でビルドするエクスポートバックエンドで機能します。LaTeX、Beamer、およびTexinfoバックエンドはサポートしていません。

このアドバイスを追加することorg-export-numbered-headline-pで、LaTeXおよびBeamerにエクスポートするときにTOCから除外するUNNUMBEREDプロパティexport as を使用してヘッドラインを作成できます\section*{...}

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

2014-10-03 20:06:34(GMT)現在、UNNUMBEREDのチェックは既に組み込まれていることに注意してください。


1
おかげで、これはHTMLエクスポートでうまく機能します。実際に、LaTeX / Beamerで動作するためにもこれが必要です。すべての(または少なくともほとんどの)エクスポートバックエンドで機能する一般的なソリューションが必要であると仮定したため、最初にこれについて言及しませんでした。エクスポート時に生成されるファイルと比較する.htmlと、主な問題はHTMLのTOCを手動でビルドすることですが、単にファイルにジェネリックをダンプすることです。.texorg-modeorg-mode\tableofcontents.tex
itsjeyd

@itsjeyd:一般的な解決策は考えられません:あなたが言ったように、LaTeX(およびbeamer、Texinfo)エクスポートバックエンドはネイティブコマンドを使用してTOCを構築し、他のバックエンドはTOCを手動で構築します。LaTeXのTOCからセクション除外すること可能ですが、私は正しいものとしてコミュニティによって受け入れられる解決策を見つけていません。エクスポートコードでリンクしたアイデアを使用するには、に大きな変更が必要です。バックアップされたTexinfoでこれを実装することに関しては、どこから始めればよいかさえわかりません。org-modeorg-latex-headline
コンスタンティン14年

OK、フォローアップしてくれてありがとう。Beamerの場合、TOCに表示したくないセクションをunnumberedするだけに頼るつもりです。ケースは閉じられました。:)
itsjeyd 14年

@itsjeyd:あなたは変更することができorg-export-numbered-headline-p、ほぼ自動的にこの動作を取得する-アンナンバードのセクションにそれを回すことは場合あるオプション、。興味があれば詳しく説明できます。
コンスタンティン14年

してください-常にソリューションの簡素化に興味があります!
itsjeyd 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.