Konwersja na LaTeX z niestandardową preambułą za pomocą Pandoc

16

Wiem, że mogę użyć poleceń -Hlub --include-in-headerdo włączenia niestandardowej preambuły do ​​generowanego wyniku. Problem polega na tym, że Pandoc zawiera moją preambułę, ale umieszcza przed nią kolejną preambułę:

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

Wiem, że jest to domyślna preambuła LaTeX ( default.latex), którą Pandoc ładuje ze swojego templatesfolderu. To samo dzieje się, gdy korzystam --include-after-bodyz \end{document}.

Oto polecenie, którego używam:

pandoc -o output.tex input.txt --include-before-body=header.tex --include-after-body=footer.tex
Jan
źródło

Odpowiedzi:

20

Jak --include-in-headerodkryłeś , dodaje tekst do preambuły określonej w szablonie LaTeX Pandoc. Istnieje kilka sposobów na zrobienie tego, co próbujesz zrobić.

  1. Jeśli chcesz całkowicie niestandardową preambułę, musisz określić plik szablonu za pomocą

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

    Szablon może mieć zmienne (takie jak $title$i, co ważniejsze $body$) i warunkowe. Jeśli potrzebujesz inspiracji, możesz sprawdzić domyślny szablon za pomocą polecenia

    pandoc -D latex
    
  2. Jeśli chcesz raz na zawsze użyć nowego szablonu, możesz go utworzyć, wywołać default.latexi umieścić w katalogu szablonów ( ~/.pandoc/templates/na komputerze z systemem Unix). W takim przypadku musisz określić, że chcesz użyć szablonu, dzwoniąc

    pandoc -o output.tex --standalone input.txt
    
  3. Jeśli wolisz nie zajmować się szablonami, możesz po prostu uruchomić

    pandoc -o output.tex input.txt
    

    a wynikiem będzie nagi dokument LaTeX, to znaczy bez preambuły \begin{document}lub \end{document}. Następnie możesz samodzielnie dodać preambułę. Pamiętaj, że wszelkie metadane (tytuł, autor) zostaną utracone podczas korzystania z tej metody.

Szczegółowe informacje na temat tworzenia i używania szablonów można znaleźć na doskonałej stronie podręcznika Pandoc .

Nathan Grigg
źródło