Modo organizacional: excluir títulos específicos do sumário ao exportar


13

P: Como posso saber org-modepara excluir títulos específicos do índice ao exportar?

Por exemplo, exportando

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

para HTML produz

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

mas eu quero que ele produza

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

A seção Índice do org-modemanual não possui nenhuma informação sobre isso.

Além disso, sei que não posso org-modeexportar títulos definindo a COMMENTpalavra-chave via C-c ;( org-toggle-comment) ou marcando-os com :noexport:. Embora isso evite que as manchetes afetadas apareçam no sumário, também faz com que o conteúdo seja omitido no documento resultante, o que não é o que eu quero.


1
Esta não é a resposta que você está procurando, mas apenas como uma nota de outro beco sem saída: EXPORT_OPTIONS: toc:nil quase faz o que deseja, mas apenas quando você exporta apenas a subárvore. Para esclarecer, você deseja que a seção ainda seja numerada ou deseja algo semelhante ao LaTeX \section*?
— Sean Allred

@SeanAllred Gostaria que a seção ainda estivesse numerada. De maneira mais geral, não quero alterar nada sobre a maneira como as seções individuais são exportadas. Só não quero que alguns deles apareçam no sumário.
— itsjeyd

Respostas:


12

A organização usa org-export-collect-headlinespara coletar manchetes que devem estar no sumário. Essa função já inclui dois critérios para excluir títulos: a profundidade do título e se é uma "seção de nota de rodapé" (*), portanto é fácil adicionar outro.

Veja a versão modificada org-export-collect-headlinesabaixo. Esta versão permite impedir que um título apareça no sumário definindo a NOTOCpropriedade

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

(*) Não sei o que são "seções de notas de rodapé".

Isso funciona para back-ends de exportação que criam o sumário manualmente. Os back-ends LaTeX, Beamer e Texinfo não.

Ao adicionar esse conselho a org-export-numbered-headline-palguém pode ser manchete com a UNNUMBEREDexportação de propriedades como \section*{...}, excluindo-as do TOC ao exportar para o LaTeX e Beamer:

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

Observe que, a partir de 2014-10-03 20:06:34 (GMT), a verificação de UNNUMBERED já está embutida


1
Obrigado, isso funciona bem para exportações de HTML. Na verdade, eu também preciso que isso funcione para o LaTeX / Beamer; Não mencionei isso inicialmente porque supus que deveria haver uma solução genérica que funcionaria para todos (ou pelo menos a maioria) dos back-ends de exportação ... Você tem alguma idéia de como resolver esse problema para a exportação do LaTeX? Comparando .htmle .texarquivos org-modeproduzidos durante a exportação, o principal problema parece ser que org-modecria o sumário manualmente para HTML, mas simplesmente despeja um genérico \tableofcontentsno .texarquivo.
— itsjeyd

@itsjeyd: Eu não acho que uma solução genérica seja possível: como você disse, os back-ends de exportação do LaTeX (e beamer e Texinfo) usam comandos nativos para criar o TOC, enquanto outros back-ends criam o TOC manualmente. Ele é possível excluir uma seção de TOC em LaTeX , mas eu não encontrei uma solução que seja aceite pela comunidade como o caminho certo . Usar a idéia a que vinculei no org-modecódigo de exportação exigiria grandes alterações org-latex-headline. Quanto à implementação disso no Texinfo, nem sei por onde começar.
— Constantine

OK, muito obrigado pelo acompanhamento. Para Beamer, acho que vou apenas recortar as seções que não quero que apareçam no sumário . Caso encerrado. :)
— itsjeyd

@itsjeyd: Você pode modificar org-export-numbered-headline-ppara obter esse comportamento quase automaticamente - se transformá-lo em uma seção não numerada, é uma opção. Eu posso elaborar se você estiver interessado.
— Constantine

Por favor, sempre interessado em simplificar soluções!
— itsjeyd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.