Pandoc - Inserting pages before generated Table of Contents

五迷三道 提交于 2019-12-18 04:35:24

问题


I've been playing around with Pandoc.

Is there anyway to insert pages before the generated Table of Contents?

For example:

  • Title Page
  • Insert Custom Page 001
  • Insert Custom Page 002
  • (Generated) Table of Contents

Many thanks in advance!


回答1:


For this answer, I'm going to assume you are generating markdown, though the process is the same for other file formats as well.

The key insight is that Pandoc uses templates to determine the final placement. It has default templates and if you modify them, you can change the order of sections.

  1. Find the default template

    > pandoc -D markdown
    $if(titleblock)$
    $titleblock$
    
    $endif$
    $for(header-includes)$
    $header-includes$
    
    $endfor$
    $for(include-before)$
    $include-before$
    
    $endfor$
    $if(toc)$
    $toc$
    
    $endif$
    $body$
    $for(include-after)$
    
    $include-after$
    $endfor$
    

    You won't need this for the next step, but if you are curious where these files live, asking for a nonsense file type works (though I'm sure there is a better way):

    > pandoc -D nonsense
    pandoc: Could not find data file /usr/local/.../templates/default.nonsense
    
  2. Copy and modify the default template

    > pandoc -D markdown > modified.markdown
    

    Using your favorite text editor, you can open modified.markdown to put the $body$ before the $toc$.

    $body$
    $if(toc)$
    $toc$
    $endif$
    
  3. Use the modified template

    > pandoc --template modified.markdown <... rest of your command ...>
    



回答2:


I am guessing you want to create a HTML File with Title Page or Header Information. The solution is to do it in more than one Step.

First you compile the Title Page together any other pages to one html.

pandoc .\01_HEADER.markdown -o header.html

Then you include that header.html before the body:

pandoc -s -S --toc -B .\header.html .\02_Document.markdown -o complete_doc.html

Done.


The pandoc help states it's possibilities to make multi-part documents possible, both -B and -H work, but i think -B is more correct in my case.

  -H FILENAME           --include-in-header=FILENAME                    
  -B FILENAME           --include-before-body=FILENAME                  
  -A FILENAME           --include-after-body=FILENAME                  

In my case i do it with a stylesheet and get a perfect document:

pandoc -s -S -c .\res\github-pandoc.css .\01_HEADER.markdown -o header.html
pandoc -s -S --toc --toc-depth=2 -c .\res\github-pandoc.css -B .\header.html .\02_Document.markdown -o complete_document.html


来源:https://stackoverflow.com/questions/25591517/pandoc-inserting-pages-before-generated-table-of-contents

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!