install.packages("tinytex")
tinytex::install_tinytex()6 Quarto
Quarto ist ein Open-Source-Publishing-System, das speziell für wissenschaftliche Dokumentation, Berichte und interaktive Notebooks entwickelt wurde. Es bietet viele Funktionen für die Erstellung professioneller, reproduzierbarer, dynamischer Dokumente.
6.1 Was ist Quarto?
Quarto ermöglicht das Schreiben von Dokumenten mit einer Mischung aus Text, Code und mathematischen Formeln. Aber auch das Erstellen von einfachen Tabellen oder das Einbinden von Grafiken ist ohne Weiteres möglich. Es unterstützt verschiedene Programmiersprachen, darunter R, Python und Julia. Quarto eignet sich besonders gut für:
- Technische Berichte: Formatierte Dokumente mit wissenschaftlichen Berechnungen und Visualisierungen.
- Wissenschaftliche Arbeiten: Integration von Zitaten, Bibliographien und formatierten Texten.
- Präsentationen: Erstellung von HTML-, PDF- und PowerPoint-Präsentationen.
- Blogs: Unterstützung für statische Websites mit integriertem Code.
- Interaktive Dokumente: Möglichkeit, Widgets und dynamische Elemente in HTML-Dokumenten einzubinden.
Und wieso Quarto?
Einerseits ist es recht einfach Quarto zu nutzen. Es basiert auf R-Markdown und kann ‘einfach so’, also ohne weitere Kenntnisse genutzt werden um Dokumente zu erzeugen. Anders als bei Word oder vergleichbaren Textverarbeitungsprogrammen können wir in Quarto sofort R-Coder einbinden und diesen – sofern wir wollen – ausführen und das Ergebnis anzeigen lassen. Außerdem können Ergebnisse aus Rechnungen, die mit R gemacht wurden direkt in einen Text eingearbeitet werden. Andererseits ist eine Dokumentation von R-Code einfacher als in einer reinen .R-Datei.
Damit ist Quarto bestens geeignet um Übungsaufgaben oder Mitschriften während der Übung und/oder der Vorlesung zu machen.
Ein weiterer großer Vorteil ist, dass Quarto auch bestens geeignet ist um komplexere Dokumente wie Präsentationen oder gar Bachelorarbeiten zu schreiben, insbesondere wenn Daten verarbeitet und Ergebnisse, die auf den Daten basieren, gezeigt werden sollen.
6.2 Installation von Quarto
6.2.1 Windows & Mac
Lade das Installationsprogramm von der offiziellen Quarto-Website herunter.
Installiere Quarto mit den Standardoptionen.
-
Überprüfe die Installation im Terminal oder der Eingabeaufforderung mit:
quarto --version Falls RStudio bereits installiert ist, erkennt es Quarto automatisch.
6.2.2 Linux
Lade das Installationspaket von quarto.org herunter.
-
Installiere das Paket entsprechend deiner Distribution:
sudo dpkg -i quarto-*.deb # Debian/Ubuntu sudo rpm -i quarto-*.rpm # Fedora/RHEL -
Überprüfe die Installation:
quarto --version
6.3 Quarto in RStudio nutzen
Wenn Quarto installiert ist, kann Quarto in RStudio benutzt werden.
6.3.1 Erstellen eines neuen Quarto-Dokuments
Man kann mit RStudio direkt Quarto-Dateien erstellen. Diese haben immer die Endung .qmd, was für Quarto MarkDown steht:
- Öffne RStudio und wähle
File>New File>Quarto Document. - Wähle ein Ausgabeformat (HTML, PDF, Word, etc.). Um ein pdf-Dokument zu erstellen muss das R-Paket
tinytexinstalliert sein oder alternativ eine LaTeX-Distribution. - Klicke auf
Create, um das Dokument zu öffnen. - Das Dokument enthält eine Kopfzeile (YAML-Header), in der Metadaten wie Titel, Autor und Ausgabeformat definiert werden, sowie ein paar Beispielzeilen.
6.4 Aufbau eines Quarto-Dokuments
Ein typisches Quarto-Dokument besteht aus:
- YAML-Header: Enthält Metadaten wie Titel, Autor, Datum und Ausgabeformat.
- Markdown-Text: Normaler Text mit Markdown-Formatierung für Überschriften, Listen, Tabellen und mehr.
- Code-Blöcke: Integration von R-, Python- oder Julia-Code zur Analyse und Visualisierung.
- Mathematische Formeln: Unterstützung für LaTeX-Formeln und Gleichungen.
6.4.1 Der YAML-Header
Der YAML-Header enthält alle wichtigen Informationen über das Dokument:
- Metadaten, wie Autor, Titel, Datum, E-Mailadresse etc.
- Ausgabeformat (html, doc, pdf, …)
- Ausgabeoptionen,
Zwei Beispiele für einen YAML-Header
Ein einfacher YAML-Header (html)
---
title: "Meine Demo" # Titel des Dokuments
author: "Max Mustermann" # Name des Autors
date: "2025-11-18" # aktuelles Datum mit R generiert,
# alternativ in der Form "YYYY-MM-DD"
output: html_document # Ausgabe ist eine html-Datei
---Ein etwas umfangreicherer Header (pdf und doc)
---
title: "Mein Bericht" # Titel des Dokuments
subtitle: "Eine kleine Demonstration" # Untertitel des Dokuments
author: # Autor
- name: "Max Mustermann" # mit Organisation
affiliation: "TH Beispielstadt" # und E-Mail
email: "max@uni.de"
date: "18.11.2025" # Datum in Form DD.MM.YYYY
output:
pdf_document: # pdf-Format
toc: true # mit Inhaltsverzeichnis
toc_depth: 2 # Tiefe im Inhalsverzeichnis: 2
number_sections: true # Kapitel werden nummeriert
latex_engine: xelatex # Latex-Engine
word_document: # für doc-Format
toc: true # mit Inhaltsverzeichnis
reference_docx: "mein_template.docx" # Einbinden eines doc-Templates
geometry: "margin=2.5cm" # Seitenrand
fontsize: 11pt # Schriftgröße
linestretch: 1.2 # Zeilenabstand
---Für ein pdf-Dokument muss eine Latex-Distribution wie MikTeX (Windows), Tex Live (Linux) oder MacTeX (macOS) installiert sein. Alternativ kann man eine kompakte (nicht ganz so mächtige, aber vermutlich ausreichende) Version über R installieren:
revels.js (Vortrag)
Als letztes Beispiel noch ein Beispiel für einen Vortrag
---
title: "Vortragstitel"
subtitle: "Der Untertitel"
author: "Max Mustermann"
lang: de
date: 2025-08-31
format:
revealjs:
date-format: "DD.MM.YYYY" # Format des Datums
smaller: true # Schriftgröße ein wenig kleiner
theme: default # hier gibt es 10 verschiedene Layouts
slide-number: true # Seiten sind numeriert
chalkboard: true # ein Tafel kann eingeblendet werden
menu: true # Menu
toc: false # Kein Inhaltsverzeichnis
preview-links: auto # Vorschau bei Links
logo: Logo.png # Logo unten rechts
css: styles.css # ein css-Datei in denen Farben, Größen etc.
# definiert werden
footer: "Titel des Vortrags" # Mitte unten auf jeder Seite eingeblendet
---In dieser Reveal.js Demo kann man sehen, was das Format alles kann. Neue Folien werden mit # oder ## gefolgt von der Überschrift der Folie gestartet.
In dieser Gallerie kann man sich sowohl die Möglichkeiten von Quarto als auch die zugehörigen Codes anschauen (und sich inispirieren lassen).
6.4.2 Markdown
Nach dem YAML-Header beginnt das eigentliche Dokument. In diesem kann einfacher Text geschrieben werden. Wir wollen in dem Kapitel einige der häufig vorkommenden Markdown
Texthervorhebungen
| Markdown-Syntax | Ausgabe |
|---|---|
|
kursiv, fett, fett kursiv |
|
hochgestellt2 / tiefgestellt2 |
|
|
|
Code im Text |
Überschriften
| Markdown-Syntax | Ausgabe |
|---|---|
|
Überschrift 1 |
|
Überschrift 2 |
|
Überschrift 3 |
|
Überschrift 4 |
|
Überschrift 5 |
|
Überschrift 6 |
Links & Bilder
Das Einbinden von Links geht
|
Link zu Webseite |
und analog das Einbinden eines Bildes mittels
Listen
| Markdown-Syntax | Ausgabe |
|---|---|
|
|
|
|
|
|
|
|
|
Hinweise:
Anders als bei anderen Markdown-Renderern (z. B. Jupyter oder GitHub) benötigen Listen in Quarto eine Leerzeile vor der Liste. Andernfalls wird sie als normaler Text in einer Zeile dargestellt.
Eine noch ausfürhlichere Liste findet man auf der Quarto-Seite
6.4.3 R-Code
Man kann R-Code (und analog auch Python, Julia oder Observable) in ein Quarto-Dokument einbauen. Die sogenannten Chunks werden wie folgt geschrieben
```{r}
#| echo: false
library(pacman)
p_load(tidyverse, palmerpenguins)
penguins |> ggplot(aes(x=bill_length_mm,
y=body_mass_g ,
color = species)) +
geom_point()
```Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).

Links ist der Code in der .qmd-Datei zu sehen. Rechts sieht man die Ausgabe: in diesem Fall ist es nur die erzeugte Grafik, da mit #| echo: false die Ausgabe des Codes unterdrückt wird. Allerdings wird noch eine Warnung ausgegeben, da Punkte im Streudiagramm aufgrund von fehlenden Werten (NAs) nicht eingezeichnett werden können. Ob der Code angezeigt oder ausgeführt wird, ob Warnungen oder Fehlermeldungen gezeigt werden oder nicht, welche Größe die ausgegebene Grafik hat, etc. kann mit Hilfe von Chunk-Optionen gesteuert werden. Möchte im im obigen Beispiel die Grafik, den Code, aber keine Warnung angezeigt haben und soll die Grafik auch noch breiter und weniger hoch dargestellt werden, so kann man beispielsweise angeben. Desweiteren bekommt die Grafik einen Namen, so dass man auf diese im Text verweisen kann und eine Caption.
```{r}
#| warning: false
#| fig.width: 9
#| fig.height: 3
#| label: PinguineStreudiagramm
#| fig.cap: Streudiagramm zu den Palmer-Pinguinen.
library(pacman)
p_load(tidyverse, palmerpenguins)
penguins |> ggplot(aes(x=bill_length_mm,
y=body_mass_g ,
color = species)) +
geom_point()
```Dies liefert:
library(pacman)
p_load(tidyverse, palmerpenguins)
penguins |> ggplot(aes(x=bill_length_mm,
y=body_mass_g ,
color = species)) +
geom_point()
Die wichtigsten Optionen sind:
| Option | Beschreibung | Standard |
|---|---|---|
echo |
Code anzeigen (TRUE / FALSE / "fenced" / "code"). |
TRUE |
eval |
Code ausführen oder überspringen. | TRUE |
include |
Ob das Ergebnis im Output enthalten ist (Code + Ausgabe). | TRUE |
error |
Fehler anzeigen oder unterdrücken. | FALSE |
warning |
Warnungen anzeigen. | TRUE |
message |
Nachrichten anzeigen. | TRUE |
cache |
Ergebnisse zwischenspeichern (macht Rendering schneller). | FALSE |
fig.show |
Kontrolle über die Anzeige der Figuren ("asis", "hold", "animate"). |
"asis" |
fig.width |
Plotbreite in Zoll. | 7 |
fig.height |
Plothöhe in Zoll. | 5 |
fig.asp |
Seitenverhältnis (Höhe = fig.width * fig.asp). |
– |
fig.align |
Ausrichtung: "default", "left", "center", "right". |
"default" |
fig.cap |
Bildunterschrift. | – |
fig.alt |
Alternativtext (z. B. für Barrierefreiheit). | – |
out.width |
Ausgabegröße, z. B. "70%" oder "300px". |
– |
out.height |
Ausgabehöhe. | – |
results |
Kontrolle über Textausgabe ("markup", "asis", "hold", "hide"). |
"markup" |
collapse |
Code + Ausgabe zusammenfassen. | FALSE |
comment |
Präfix für Ausgabezeilen. | "##" |
tbl-cap |
Tabellenüberschrift (statt fig.cap). |
|
code-fold |
Code einklappbar machen (TRUE, "show", "hide"). |
|
code-summary |
Text für einklappbaren Codeblock. | – |
code-overflow |
Scrollverhalten ("scroll", "wrap"). |
"scroll" |
code-line-numbers |
Zeilennummern im Code anzeigen. | FALSE |
code-tools |
Buttons für „Copy“, „Collapse“ usw. einblenden. | |
label |
Chunk-Name (für Referenzen / Caching). | - |
6.5 Rendern des Dokuments
Nachdem Erstellen eines Dokuments muss das Dokument erzeugt werden. Dies kann auf verschiedene Arten geschehen:
- Bearbeitet man eine
.qmd-Datei, so gibt es im RStudio die TasteRenderoberhalb des Texteditors. Drückt man diese, so wird das Dokument gespeichert und das Dokument wird erzeugt.
- Es gibt ein Paket
quarto, das die Bedienung ein wenig vereinfacht, insbesondere wenn mann komplexere Dokumente erstellt, die aus vielen Quarto-Dateien bestehen.
install.packages("quarto")Alternativ kann das Paket natürlich auch über Packages > Install im RStudio installiert werden. In der R Konsole kann nachdem man das Paket geladen hat eine Datei gerendert werden:
library(quarto)
quarto_render("mein_dokument.qmd")- In einer Shell kann Quarto auch direkt ausgeführt werden
quarto render mein_dokument.qmdJe nach gewähltem Ausgabeformat wird eine html-, pdf-, Word-Datei, etc. generiert.
6.6 Erweiterte Funktionen von Quarto
Neben den oben aufgeführten Funktionen gibt es unzählige weitere Möglichkeiten, die Quarto zur Verfügung stellt, allerdings sprengt das den Rahmen dieser Einführung:
- Tabellen
- Zitieren und Bibliographien: Quarto ermöglicht das Einfügen von Literaturverweisen durch BibTeX-Dateien:
- Erzeugen von Spalten
- Callouts (zum Beispiel sind in diesem Skript die Definitionen und Sätze mit Hilfe von callouts gemacht)
- Referenzen innerhalb eines Dokuments
und vieles mehr.
Außerdem können mathematische Formeln durch Latex-Code erzeugt werden.
6.7 Nützliche Ressourcen
- Offizielle Quarto-Dokumentation: https://quarto.org/docs/
- Quarto in RStudio: https://quarto.org/docs/tools/rstudio.html
- Beispielvorlagen: https://quarto.org/docs/get-started/
- Einführung in Quarto-Videos: https://quarto.org/docs/tutorials/
6.8 Vorlagen
- für eine Vorlesungsmitschrift / Hausaufgaben
- für eine Präsentation