35  quarto

35.1 eigene \(\LaTeX\) Vorlagen erstellen

Quarto ermöglicht es, zusätzlichen LaTeX-Code einzufügen (siehe https://quarto.org/docs/output-formats/pdf-basics.html#latex-includes) oder nur einzelne Teile des Templates auszutauschen (siehe https://quarto.org/docs/journals/templates.html#template-partials).

Es können aber auch eigene vollständige \(\LaTeX\)-Vorlagen erzeugt werden.

Folgende Punkte sind dabei zu beachten:

  • Möchten Sie alle Funktionen von quarto verfügbar und Ihre Vorlage so flexibel wie möglich machen, sollten Sie die quarto-Vorlage kopieren (siehe https://github.com/quarto-dev/quarto-cli/tree/main/src/resources/formats/pdf/pandoc) und Ihre Änderungen direkt dort einfügen.

  • Möchten Sie sich z.B. eine Briefvorlage erstellen, deren wesentlichen Parameter (Dokumentenklasse, Schriftgröße, Geomtery, etc.) sich eh nie ändern werden, ist es durchaus legitim, eine eigene “rudimentäre” \(\LaTeX\)-Datei zu erstellen.

35.1.1 .tex-Datei

Ich habe mir einen “zentralen” Ordner erstellt (z.B. Dokumente/Vorlagen/quarto), in welchem ich alle Vorlagendateien ablege. So kann ich sie später bequem in jeder .qmd-Datei einbinden.

Die \(\LaTeX\)-Vorlage sollte mindestens folgende Werte enthalten, damit die rudimentären quarto-Funktionen unterstützt werden.

\documentclass[a4paper, 10pt]{scrartcl} % Dokumentenklasse wählen
\usepackage[utf8]{inputenc}              
\usepackage[ngerman]{babel}             % deutsche Sprache harcoded
\usepackage{lmodern}
\usepackage[numbered]{bookmark}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{calc}
\usepackage{lastpage}
\usepackage{geometry}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{float}
\usepackage{amsmath}
\usepackage{hhline}
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage[normalem]{ulem}

\definecolor{linkblue}{RGB}{17, 40, 73}

\hypersetup{
colorlinks,
linkcolor=linkblue,
urlcolor=blue,
bookmarks=true,
plainpages=false,
hypertexnames=true,
pdftitle={$title$},
pdfauthor={$author$}
}

\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}

%% Callout-Boxen
\makeatletter
\@ifpackageloaded{tcolorbox}{}{\usepackage[many]{tcolorbox}}
\@ifpackageloaded{fontawesome5}{}{\usepackage{fontawesome5}}
\definecolor{quarto-callout-color}{HTML}{909090}
\definecolor{quarto-callout-note-color}{HTML}{0758E5}
\definecolor{quarto-callout-important-color}{HTML}{CC1914}
\definecolor{quarto-callout-warning-color}{HTML}{EB9113}
\definecolor{quarto-callout-tip-color}{HTML}{00A047}
\definecolor{quarto-callout-caution-color}{HTML}{FC5300}
\definecolor{quarto-callout-color-frame}{HTML}{acacac}
\definecolor{quarto-callout-note-color-frame}{HTML}{4582ec}
\definecolor{quarto-callout-important-color-frame}{HTML}{d9534f}
\definecolor{quarto-callout-warning-color-frame}{HTML}{f0ad4e}
\definecolor{quarto-callout-tip-color-frame}{HTML}{02b875}
\definecolor{quarto-callout-caution-color-frame}{HTML}{fd7e14}
\makeatother

$if(highlighting-macros)$
$highlighting-macros$
$endif$

\begin{document}

$body$

\end{document}

Die Variable $body$ fügt den Inhalte der qmd-Datei (alles unterhalb des YAML-Headers) ein.

35.1.2 Vorlage einbinden

Die Vorlage wird wie folgt im YAML-Header eingebunden:

---
format:
  pdf:
    template: /pfad/zur/vorlage.tex
---

35.1.3 YAML-Variablen

Im YAML-Header können Variablen gesetzt werden, welche in der .tex-Datei abgerufen werden können.

---
title: Meine Vorlage
variable1: "Test"
variable2: "Noch ein Test"

format:
  pdf:
    template: /pfad/zur/vorlage.tex
---

In der .tex-Datei sind die oben definierten Variablen verfügbar per $variable1$ und $variable2$.

\begin{document}

$title$
  
$body$

Dies ist ein $variable1$.
Und dies ist $variable2$.
  
\end{document}

Eine Beispiel für die oben erwähnte Briefvorlage finden Sie unter https://www.produnis.de/blog/post/quarto-briefvorlage/.