Chế độ Org: Loại trừ các tiêu đề cụ thể khỏi TOC khi xuất


13

H: Làm thế nào tôi có thể nói org-modeđể loại trừ các tiêu đề cụ thể khỏi mục lục khi xuất khẩu?

Ví dụ: xuất

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

để HTML sản xuất

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

nhưng tôi muốn nó sản xuất

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

Các Mục lục phần của org-modethủ công không có bất kỳ thông tin về vấn đề này.

Ngoài ra, tôi biết rằng tôi có thể tránh org-modexuất các tiêu đề bằng cách đặt COMMENTtừ khóa thông qua C-c ;( org-toggle-comment) hoặc bằng cách gắn thẻ chúng với :noexport:. Mặc dù điều này không khiến các tiêu đề bị ảnh hưởng hiển thị trong TOC, nhưng điều đó cũng khiến nội dung của chúng bị bỏ qua khỏi tài liệu kết quả, đây không phải là điều tôi muốn.


1
Đây không phải là câu trả lời mà bạn đang tìm kiếm, mà giống như một ghi chú của một ngõ cụt khác: EXPORT_OPTIONS: toc:nil gần như làm những gì bạn muốn, nhưng chỉ khi bạn chỉ xuất ra cây con. Để làm rõ, bạn có muốn phần này vẫn được đánh số hoặc bạn muốn một cái gì đó giống với LaTeX \section*?
Sean Allred

@Sean ALLred Tôi muốn phần vẫn được đánh số. Nói chung, tôi không muốn thay đổi bất cứ điều gì về cách xuất khẩu từng phần riêng lẻ. Tôi chỉ không muốn một số trong số họ xuất hiện trong TOC.
itjeyd

Câu trả lời:


12

Org sử dụng org-export-collect-headlinesđể thu thập các tiêu đề nên có trong TOC. Hàm này đã bao gồm hai tiêu chí để loại trừ các tiêu đề: độ sâu của tiêu đề và liệu đó có phải là "phần chú thích" (*) hay không, vì vậy thật dễ dàng để thêm một tiêu đề khác.

Xem phiên bản sửa đổi org-export-collect-headlinesdưới đây. Phiên bản này cho phép ngăn tiêu đề hiển thị trong TOC bằng cách đặt thuộc NOTOCtính.

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

(*) Tuy nhiên, tôi không biết "phần chú thích" là gì.

Điều này hoạt động để xuất phụ trợ xây dựng TOC bằng tay. Các phụ trợ LaTeX, Beamer và Texinfo không.

Bằng cách thêm lời khuyên này vào org-export-numbered-headline-pmột người có thể tạo tiêu đề với UNNUMBEREDxuất bất động sản \section*{...}, loại trừ chúng khỏi TOC khi xuất sang LaTeX và Beamer:

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

Lưu ý rằng kể từ 2014-10-03 20:06:34 (GMT) kiểm tra UNNUMBERED đã được tích hợp sẵn


1
Cảm ơn, điều này hoạt động tốt cho xuất khẩu HTML. Tôi thực sự cũng cần điều này để làm việc cho LaTeX / Beamer; Tôi đã không đề cập đến vấn đề này ban đầu bởi vì tôi cho rằng phải có một giải pháp chung có thể hoạt động cho tất cả (hoặc ít nhất là) xuất khẩu back-end ... Bạn có biết làm thế nào để giải quyết vấn đề này cho xuất khẩu LaTeX không? So sánh .html.texcác tệp org-modetạo ra khi xuất, vấn đề chính dường như là org-modexây dựng TOC theo cách thủ công cho HTML, nhưng chỉ đơn giản là bỏ một cái chung \tableofcontentsvào .textệp.
itjeyd

@itsjeyd: Tôi không nghĩ rằng một giải pháp chung là có thể: như bạn đã nói, các phụ trợ xuất khẩu LaTeX (và Beamer và Texinfo) sử dụng các lệnh gốc để xây dựng TOC trong khi các phụ trợ khác xây dựng TOC theo cách thủ công. Nó thể loại trừ một phần từ TOC trong LaTeX , nhưng tôi đã không tìm thấy một giải pháp mà được chấp nhận bởi cộng đồng là một trong những quyền . Sử dụng ý tưởng tôi liên kết đến trong org-modemã xuất khẩu sẽ yêu cầu thay đổi lớn org-latex-headline. Về việc thực hiện điều này trong Texinfo được hỗ trợ, tôi thậm chí không biết bắt đầu từ đâu.
Constantine

OK, cảm ơn rất nhiều vì đã theo dõi. Đối với Beamer, tôi nghĩ rằng tôi sẽ chỉ sử dụng để làm cho các phần tôi không muốn hiển thị trong TOC không bị lẫn lộn . Trường hợp đóng cửa. :)
itjeyd

@itsjeyd: Bạn có thể sửa đổi org-export-numbered-headline-pđể có được hành vi này gần như tự động - nếu biến nó thành một phần không bị đánh cắp một tùy chọn, đó là. Tôi có thể giải thích nếu bạn quan tâm.
Constantine

Hãy làm - luôn quan tâm đến việc đơn giản hóa các giải pháp!
itjeyd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.