web-dev-qa-db-fra.com

Que puis-je contrôler avec les options d'en-tête YAML dans pandoc?

Ce n'est que par hasard que j'ai vu un exemple de document utilisant le toc: true ligne dans leurs options d'en-tête YAML dans un fichier Markdown à traiter par Pandoc. Et les Pandoc docs n'ont pas mentionné cette option pour contrôler la table des matières en utilisant l'en-tête YAML. De plus, je vois des lignes quelque peu arbitraires dans des exemples de documents sur le même site Lisez-moi Pandoc.

Question principale:

  • Quelles options Pandoc sont disponibles en utilisant l'en-tête YAML?

Méta-question:

  • Qu'est-ce qui détermine les options Pandoc disponibles qui peuvent être définies à l'aide de l'en-tête YAML?

Remarque: mon flux de travail consiste à utiliser des fichiers Markdown (.md) et les traiter via Pandoc pour obtenir des fichiers PDF. Il a une écriture manuscrite hiérarchiquement organisée avec des mathématiques. Tels que:

pandoc --standalone --smart \
    --from=markdown+yaml_metadata_block \
    --filter pandoc-citeproc \
    my_markdown_file.md \
    -o my_pdf_file.pdf
34
Kalin

En fait, tout est contenu dans le manuel [~ # ~] de Pandoc [~ # ~] . Plus précisément:

Les modèles peuvent contenir des variables.

Par exemple, dans votre modèle HTML , vous pouvez écrire:

<title>$title$</title>

Ces variables de modèle peuvent être définies avec le --variable KEY[=VAL] option.

Cependant, ils sont également définis à partir des métadonnées du document, qui à leur tour peuvent être définies à l'aide de:

Le --variable options insère des chaînes textuellement dans le modèle, tandis que --metadata échappe les chaînes. Chaînes dans les métadonnées YAML (également lors de l'utilisation de --metadata-file) sont interprétés comme des démarques, que vous pouvez contourner en utilisant les attributs génériques bruts de pandoc markdown . Par exemple pour la sortie HTML:

`<script>alert()</script>`{=html}

Voir ce tableau pour un schéma de --variable contre --metadata par rapport aux métadonnées YAML .

Pour répondre à votre question: le modèle détermine quels champs du bloc de métadonnées YAML ont un effet. Pour afficher, par exemple, le modèle latex, utilisez:

$ pandoc -D latex

Pour voir certaines variables définies automatiquement par pandoc, voir le manuel . Enfin, d'autres comportements de pandoc (tels que les extensions de démarques, etc.) ne peuvent être définis que comme options de ligne de commande (sauf lors de l'utilisation d'un script wrapper ).

24
mb21

Il s'agit d'une liste assez longue que vous pouvez parcourir en exécutant man pandoc dans la ligne de commande et en accédant à la section "Variables définies par pandoc" sous "MODÈLES".

Le haut de la liste comprend les options suivantes parmi de nombreuses autres options:

Variables set by pandoc
   Some variables are set automatically by pandoc.  These vary somewhat depending  on  the
   output format, but include metadata fields as well as the following:

   title, author, date
          allow identification of basic aspects of the document.  Included in PDF metadata
          through LaTeX and ConTeXt.  These can be set through a pandoc title block, which
          allows for multiple authors, or through a YAML metadata block:

                 ---
                 author:
                 - Aristotle
                 - Peter Abelard
                 ...

   subtitle
          document subtitle; also used as subject in PDF metadata

   abstract
          document summary, included in LaTeX, ConTeXt, AsciiDoc, and Word docx

   keywords
          list  of  keywords  to  be  included in HTML, PDF, and AsciiDoc metadata; may be
          repeated as for author, above

   header-includes
          contents specified by -H/--include-in-header (may have multiple values)

   toc    non-null value if --toc/--table-of-contents was specified

   toc-title
          title of table of contents (works only with EPUB and docx)

   include-before
          contents specified by -B/--include-before-body (may have multiple values)

   include-after
          contents specified by -A/--include-after-body (may have multiple values)

   body   body of document

`` ''

13
denten

Vous pouvez voir la documentation de pandoc pour un indice: http://pandoc.org/getting-started.html

Mais pour savoir exactement où il sera utilisé, vous pouvez rechercher des sources de modèles de pandoc: https://github.com/jgm/pandoc-templates

Par exemple, pour la sortie html5, le fichier est: https://github.com/jgm/pandoc-templates/blob/master/default.html5

Voici une section du code:

<title>$if(title-prefix)$$title-prefix$ - $endif$$pagetitle$</title>

Comme vous pouvez le voir, il a title-prefix et pagetitle.

Vous pouvez consulter la documentation, mais la meilleure solution consiste à rechercher le code source de la version que vous utilisez.

3
Eduardo Santana