2014-08-31 18 views
9

Ich habe mit Pandoc gespielt.Pandoc - Einfügen von Seiten vor dem Generieren Inhaltsverzeichnis

Gibt es trotzdem Seiten vor dem generierten Inhaltsverzeichnis einzufügen?

Zum Beispiel:

  • Titel Seite
  • einfügen Benutzerdefinierte Seite 001
  • einfügen Benutzerdefinierte Seiten 002
  • (generiert) Inhaltsverzeichnis

Vielen Dank im Voraus!

+3

ja, haben Sie einen Blick auf http://johnmacfarlane.net/pandoc/README.html#templates – mb21

Antwort

7

Für diese Antwort werde ich davon ausgehen, dass Sie Markdown generieren, obwohl der Prozess für andere Dateiformate genauso ist.

Die wichtigste Erkenntnis ist, dass Pandoc Vorlagen verwendet, um die endgültige Platzierung zu bestimmen. Es hat Standardvorlagen und wenn Sie sie ändern, können Sie die Reihenfolge der Abschnitte ändern.

  1. Finden Sie die Standardvorlage

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

    Sie dies nicht für den nächsten Schritt brauchen, aber wenn Sie neugierig sind, wo diese Dateien leben, für ein Unsinn Dateityp Werke zu fragen (obwohl ich m sicher, dass es einen besseren Weg):

    > pandoc -D nonsense 
    pandoc: Could not find data file /usr/local/.../templates/default.nonsense 
    
  2. Kopieren und die Standardvorlage

    ändern

    Mit Ihrem bevorzugten Texteditor können Sie "modified.markdown" öffnen, um die $body$ vor die zu setzen.

    $body$ 
    $if(toc)$ 
    $toc$ 
    $endif$ 
    
  3. Verwenden Sie die geänderte Vorlage

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

Ich bin mir nicht sicher, ob dies das ist, wonach das OP fragt: Sie wollen einige benutzerdefinierte Seiten vor dem Inhaltsverzeichnis hinzufügen, aber nicht den ganzen Körper, der danach noch erscheinen sollte. – scoa

+1

Ja, diese Antwort berücksichtigt nicht wirklich, dass der Körper noch ** nach ** dem TOC kommen soll. Ich möchte in Markdown eine Titelseite erstellen, die vor dem Inhaltsverzeichnis stehen sollte. Ist das möglich? –

1

ich Ihnen raten möchte eine HTML-Datei mit Titelseite oder Kopfinformationen erstellen. Die Lösung besteht darin, es in mehr als einem Schritt zu tun.

Zuerst kompilieren Sie die Titelseite zusammen mit anderen Seiten zu einem HTML. .

pandoc \ 01_HEADER.markdown -o header.html

Dann sind Sie, dass header.html vor dem Körper:

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

Fertig.


Die pandoc Hilfe heißt es, Möglichkeiten des mehrteiligen Dokumenten möglich zu machen, sowohl -B und -H Arbeit, aber ich denke, -B in meinem Fall mehr korrekt ist.

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

In meinem Fall ich tue es mit einem Stylesheet und bekommen ein perfektes Dokument:

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