조직 모드 : 내보낼 때 TOC에서 특정 헤드 라인 제외


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 거의 원하는 것을 수행하지만 하위 트리 만 내보낼 때만 가능합니다. 명확히하기 위해 섹션에 여전히 번호를 매기기를 \section*원합니까 , 아니면 LaTeX와 비슷한 것을 원 하십니까?
Sean Allred

@SeanAllred 섹션에 여전히 번호를 매기고 싶습니다. 더 일반적으로 개별 섹션을 내보내는 방법에 대해서는 아무것도 변경하고 싶지 않습니다. 나는 단지 그들 중 일부가 TOC에 나타나기를 원하지 않습니다.
itsjeyd

답변:


12

조직은 org-export-collect-headlinesTOC에 포함되어야 할 헤드 라인을 수집하는 데 사용 합니다. 이 기능에는 헤드 라인을 제외하기위한 두 가지 기준, 즉 헤드 라인 깊이와 "각주 섹션"(*) 여부가 이미 포함되어 있으므로 다른 것을 쉽게 추가 할 수 있습니다.

아래의 수정 된 버전을 org-export-collect-headlines참조하십시오. 이 버전에서는 NOTOC속성 을 설정하여 TOC에 헤드 라인이 표시되는 것을 방지 할 수 있습니다.

* 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 백엔드는 그렇지 않습니다.

이 조언을 추가하면 LaTeX 및 Beamer로 내보낼 때 TOC에서 제외하고 속성 내보내기로 org-export-numbered-headline-p헤드 라인을 만들 수 있습니다 .UNNUMBERED\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월 3일 20시 6분 34초는 번호없는의 (GMT) 검사가 있습니다 내장 이미


1
감사합니다. 이것은 HTML 내보내기에 적합합니다. LaTeX / Beamer에서 작동하려면 실제로 이것이 필요합니다. 나는 모든 (또는 적어도 대부분) 수출 백엔드에서 작동하는 일반적인 솔루션이 필요하다고 가정했기 때문에 처음에 언급하지 않았습니다 ... LaTeX 수출을 위해이 문제를 해결하는 방법에 대해 알고 있습니까? 내보낼 때 생성되는 파일 .html과 비교할 때 주된 문제는 HTML에 대해 TOC를 수동으로 빌드하지만 파일에 일반 을 덤프하는 것 같습니다 . .texorg-modeorg-mode\tableofcontents.tex
itsjeyd

@itsjeyd : 일반적인 솔루션은 가능하지 않다고 생각합니다. LaTeX (및 beamer 및 Texinfo) 내보내기 백엔드는 기본 명령을 사용하여 TOC를 빌드하고 다른 백엔드는 TOC를 수동으로 빌드합니다. 이다 할 수 라텍스 TOC에서 섹션을 제외 ,하지만 난으로 지역 사회에서 허용되는 솔루션을 발견하지 않았습니다 맞은 것을 . org-mode내보내기 코드 에서 링크 된 아이디어를 사용 하려면에 큰 변경이 필요합니다 org-latex-headline. 백업 된 Texinfo에서 이것을 구현하는 것에 관해서는, 나는 어디서부터 시작 해야할지 모른다.
콘스탄틴

알겠습니다. 후속 조치를 해주셔서 감사합니다. Beamer의 경우 TOC에 번호를 표시하지 않으려는 섹션을 번호 매기기만드는 것만으로 생각 합니다. 경우 폐쇄. :)
itsjeyd

@itsjeyd : org-export-numbered-headline-p번호 없는 섹션으로 바꾸는 것이 옵션 인 경우이 동작을 거의 자동으로 수행하도록 수정할 수 있습니다 . 관심이 있으시면 자세히 설명하겠습니다.
콘스탄틴

항상 솔루션 단순화에 관심이 있으십시오!
itsjeyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.