Kuruluş modu: Dışa aktarırken belirli başlıkları TOC'den hariç tutun


13

S:org-mode Dışa aktarma sırasında belirli başlıkları içindekiler tablosundan hariç tutmayı nasıl söyleyebilirim ?

Örneğin, dışa aktarma

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

HTML üretir

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

ama üretmesini istiyorum

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

Kılavuzun İçindekiler bölümünde org-modebununla ilgili herhangi bir bilgi yoktur.

Ayrıca, anahtar kelimeyi ( ) kullanarak veya etiketleyerek org-modebaşlıkları dışa aktarabileceğimi biliyorum . Bu, etkilenen başlıkların İçindekiler'de görünmesini engellemesine rağmen, içeriğinin sonuçta ortaya çıkan belgeden çıkarılmasına neden olur, bu da istediğim şey değildir.COMMENTC-c ;org-toggle-comment:noexport:


1
Aradığınız cevap bu değil, sadece başka bir çıkmazın notu olarak: EXPORT_OPTIONS: toc:nil neredeyse istediğinizi yapar, ancak sadece sadece alt ağacı dışa aktardığınızda. Açıklığa kavuşturmak için, bölümün hala numaralandırılmasını mı istiyorsunuz, yoksa LaTeX'lere benzer bir şey mi istiyorsunuz \section*?
Sean Allred

@SeanAllred Bölümün hala numaralandırılmasını istiyorum. Daha genel olarak, bireysel bölümlerin dışa aktarılma şekli hakkında hiçbir şey değiştirmek istemiyorum. Sadece bir kısmının TOK'da görünmesini istemiyorum.
itsjeyd

Yanıtlar:


12

Kuruluş org-export-collect-headlines, İçindekiler bölümünde olması gereken başlıkları toplamak için kullanır . Bu işlev , başlıkları hariç tutmak için zaten iki ölçüt içerir : başlık derinliği ve bunun bir "dipnot bölümü" (*) olup olmadığından başka bir başlık eklemek kolaydır.

org-export-collect-headlinesAşağıdaki değiştirilmiş sürüme bakın. Bu sürüm NOTOCözelliği ayarlayarak bir başlığın İçindekiler bölümünde görünmesini engeller .

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

(*) Yine de "dipnot bölümlerinin" ne olduğunu bilmiyorum.

Bu, İçindekiler'i manuel olarak oluşturan dışa aktarma arka uçları için geçerlidir. LaTeX, Beamer ve Texinfo arka uçları yok.

Bu tavsiyeyi org-export-numbered-headline-pbirine ekleyerek LaTeX ve Beamer'a dışa aktarırken TOK dışında bırakarak UNNUMBEREDmülk dışa aktarma ile manşetlere başlayabilirsiniz \section*{...}:

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

Not bu kadar içinde 2014/10/03 20:06:34 numarasız (GMT) onay olan yerleşik zaten


1
Teşekkürler, HTML dışa aktarma için bu iyi çalışır. Aslında LaTeX / Beamer için çalışmak için buna ihtiyacım var; Başlangıçta bundan bahsetmedim, çünkü tüm (veya en azından çoğu) ihracat arka uçları için genel bir çözüm olması gerektiğini varsaydım ... LaTeX dışa aktarımı için bu sorunu nasıl çözeceğiniz hakkında bir fikriniz var mı? Karşılaştırma .htmlve .texdosyalar org-modedışa aktarırken üretir, asıl sorun o gibi görünüyor org-modeHTML elle TOC oluşturur fakat sadece jenerik döker \tableofcontentsiçine .texdosyası.
itsjeyd

@itsjeyd: Genel bir çözümün mümkün olduğunu düşünmüyorum: Dediğiniz gibi, LaTeX (ve beamer ve Texinfo) ihracat arka uçları TOC oluşturmak için yerel komutlar kullanırken diğer arka uçlar TOC'yi manuel olarak oluşturur. İse mümkün LaTeX'te TOC bir bölümü çıkarıp , ama ben toplum tarafından kabul edilen bir çözüm bulamadı doğru biri . org-modeİhracat kodunda bağlandığım fikri kullanmak büyük değişiklikler gerektiriyor org-latex-headline. Bunu Texinfo destekli olarak uygulamaya gelince, nereden başlayacağımı bile bilmiyorum.
Konstantin

Tamam, takip ettiğiniz için çok teşekkürler. Beamer için, sanırım TOC'de göstermek istemediğim bölümleri numarasız yapmak için başvuracağım . Dava kapandı. :)
itsjeyd

@itsjeyd: değiştirebilirsiniz.NEWLINENEWLINEAşağıdaki org-export-numbered-headline-pneredeyse otomatik olarak bu davranışı elde etmek - bir numarasız bölüme çevirerek eğer olduğunu bir seçenek olmasıdır. İlgileniyorsanız ayrıntılandırabilirim.
Konstantin

Lütfen yapın - daima çözümleri basitleştirmekle ilgilenin!
itsjeyd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.