39  quarto

39.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.

39.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.

39.1.2 Vorlage einbinden

Die Vorlage wird wie folgt im YAML-Header eingebunden:

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

39.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/.

39.2 quarto am Handy oder Tablet

Am Handy oder am Tablet sind quarto und \(\LaTeX\) nicht verfügbar.

Eine Möglichkeit, dennoch .qmd-Dateien zu rendern, besteht darin, das Rendern an einen Server auszulagern. Wenn Sie zu Hause einen kleinen Linux-Heimserver betreiben, könnten Ihnen diese beiden Bots weiterhelfen. Beide setzen voraus, dass quarto auf dem Server installiert ist. Ebenfalls sollte \(\LaTeX\) via quarto install tool tinytex installiert worden sein, damit eventuell benötigte Pakete automatisch nachgeladen werden.

  1. quarto-Bot für Nextcloud
    • Der Bot ist ein kleines Shell-Script.
    • Der Bot mountet ein Nextcloud-Verzeichnis per Webdav und schaut nach, ob in dem Verzeichnis eine .qmd-Datei enthalten ist.
    • Sollte dies der Fall sein, führt der Bot den Befehl quarto render DATEI.qmd aus.
    • Da die erzeugt PDF-Datei im selben Verzeichnis liegt, ist sie über die Nextcloud-Dateiansicht verfügbar und wird ebenfalls an alle Clients synchronisiert.
    • https://www.produnis.de/blog/post/simpler-quarto-bot-fuer-nextcloud/
  2. quarto-matrix-bot
    • Der Bot ist in python geschrieben.
    • Der Bot lauscht in vorher angegebenen Matrix-Räumen.
    • Wird eine .qmd-Datei in den Raum gesendet, führt der Bot den Befehl quarto render DATEI.qmd aus.
    • Wenn eine PDF-Datei erzeugt wurde, sendet der Bot diese Datei in den Matrix-Raum.
    • Sollte das Rendern fehlschlagen, postet der Bot die Fehlermeldungen in den Raum.
    • https://github.com/rgomez90/matrix-bot