Conversione da Markdown a LaTeX con un preambolo personalizzato usando Pandoc


16

So che posso usare i comandi -Ho --include-in-headerper includere un preambolo personalizzato nell'output generato. Il problema ora è che Pandoc include il mio preambolo ma ne pone un altro preambolo:

\documentclass{article}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\ifxetex
  \usepackage{fontspec,xltxtra,xunicode}
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\else
  \ifluatex
    \usepackage{fontspec}
    \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \else
    \usepackage[utf8]{inputenc}
  \fi
\fi
\ifxetex
  \usepackage[setpagesize=false, % page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex]{hyperref}
\else
  \usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true, pdfborder={0 0 0}}
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\setcounter{secnumdepth}{0}

[... my preamble ...]

So che questo è il preambolo LaTeX predefinito ( default.latex) che Pandoc carica dalla sua templatescartella. La stessa cosa succede quando uso --include-after-bodycon \end{document}.

Questo è il comando che sto usando:

pandoc -o output.tex input.txt --include-before-body=header.tex --include-after-body=footer.tex

Risposte:


20

Come hai scoperto, --include-in-headeraggiunge del testo nel preambolo specificato nel modello LaTeX di Pandoc. Ci sono alcuni modi per fare ciò che stai cercando di fare.

  1. Se desideri un preambolo completamente personalizzato, devi specificare un file modello usando

    pandoc -o output.tex --template=FILE input.txt
    

    Il modello può avere variabili (come $title$e, soprattutto, $body$) e condizionali. Se desideri un po 'di ispirazione, puoi controllare il modello predefinito utilizzando il comando

    pandoc -D latex
    
  2. Se si desidera utilizzare un nuovo modello una volta per tutte, è possibile crearne uno, chiamarlo default.latexe inserirlo nella directory dei modelli ( ~/.pandoc/templates/su un computer unix). In questo caso, è necessario specificare che si desidera utilizzare un modello chiamando

    pandoc -o output.tex --standalone input.txt
    
  3. Se preferisci non gestire affatto i modelli, puoi semplicemente eseguire

    pandoc -o output.tex input.txt
    

    e il risultato sarà un documento LaTeX nudo, cioè senza un preambolo, \begin{document}o \end{document}. Quindi puoi aggiungere un preambolo tu stesso. Si noti che eventuali metadati (titolo, autore) andranno persi quando si utilizza questo metodo.

I dettagli completi su come creare e utilizzare i modelli sono disponibili nell'eccellente pagina man di Pandoc .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.