Debian-basierte Distros: Führt sudo apt install texlive-full aus
-
Andere Distributionen: Folgt den anweisungen auf der TEXLive-Website
-
-
-
-
-
Bitte achtet darauf, die full version mit allen Paketen zu installieren, wenn ihr die Auswahl habt!
-
-
-
-
-
-
-
-
-
-
Installieren des Editors
-
-
-
Ein Editor kann heruntergeladen werden, sobald die Installation des Compilers fertig ist
-
Es funktioniert jeglicher Text-Editor, wie etwa Notepad++ oder VSCode
-
-
Für Anfänger:innen empfehlen wir jedoch TEXstudio, da es LaTeX-spezifische Features bietet
-
Ladet TEXstudio herunter und installiert es
-
-
-
-
-
-
-
-
-
-
Kompilieren des Skriptes
-
-
-
Ladet das Projektarchiv aus dem VC herunter
-
Entpackt das Archiv
-
Öffnet die Datei main-exercises.tex in TeXstudio. Ihr findet es im Wurzelverzeichnis des Archivs
-
Kompiliert die Datei, indem ihr ⏩ klickt
-
Einige neue Dateien sollten nun durch das Kompilieren generiert werden
-
-
-
Windows-Nutzer:innen: Um Dateiendungen zu aktivieren, klickt auf das Ansichts-Tab im Dateiexplorer und wählt Dateiendungen. So könnt ihr besser zwischen den einzelnen main-Files unterscheiden.
-
-
-
-
-
-
-
-
-
-
-
-
LATEX-Wochenende
-
-
-
Ein Workshop der Fachschaft WIAI. Präsentiert von Evelyn Fradtschuk, Jessica Klarmann, Florian Knoch, Theresa Knoll, Christian Kremitzl, Bernhard Luedtke und Jochen Mehlich.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-.
- Was ist LATEX?
-
-
-
-
-
-
-
-
-
-
Entstehung
-
-
-
Donald Knuth, 1977–1986: Textsatzsystem TeXτεχ → /tɛç/ für The Art of Computer Programming
-
Leslie Lamport, ab 1980er: Softwarepaket LaTeX zur einfacheren Benutzung von TeX
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☺ Kurz und eng
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Normale Länge und enger Zeilenabstand
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Lange Zeilen und enger Zeilenabstand
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Kurz und normal
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☺ Normale Länge und Zeilenabstand
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Lange Zeilen und normaler Zeilenabstand
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Kurz und weit
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☹ Normale Länge und weiter Zeilenabstand
-
-
-
Dieser Absatz soll zeigen, wie sich unterschiedliche Zeilenabstände bei unterschiedlichen Satzbreiten auswirken. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht. Dazu ist hier noch ein bisschen mehr Text nötig, damit das auch wirklich nach einem Absatz aussieht.
-
-
☺ Lange Zeilen und weiter Zeilenabstand
-
-
-
-
-
-
-
-
-
-
Gründe für LaTeX: Mikrotypografie
-
-
-
-
-
-
☹ schräg (verzerrt)
-
-
-
-
☺ gerade
-
-
-
-
☺ kursiv (eigener Schnitt)
-
-
-
-
☹ kleine Schrift vergrößert
-
-
-
-
☺ jeweils passender Schriftgrad
-
-
-
-
☹ große Schrift verkleinert
-
-
-
-
-
-
-
-
-
-
Gründe für LaTeX: Plaintext
-
-
-
zuverlässiges Undo
-
einfache Versionierung
-
unabhängig von proprietären Programmen
-
Quelltext langfristig lesbar
-
einfache Zusammenarbeit mit anderen Programmen
-
keine Ablenkung durch Formatierung oder eingebettete Medien
-
-
-
-
-
-
-
-
-
-
Ablauf des Workshops
-
-
Ziel: Wir arbeiten zusammen unser LaTeX-Skript durch, das ihr nach dem Workshop als kompakte Referenz verwenden könnt.
\newpage% fügt eine neue Seite ein
-\textbf{fetter Text} % schreibt den übergebenen Text fett
-\documentclass[10pt,a5paper,landscape]{article} % konfiguriert die Dokumentenklasse
-\frac{1}{4} % fügt den mathematischen Bruch ein
-
-
-
-
-
-
-
-
-
Backslash
-
-
Den Backslash erzeugt ihr mit folgender Tastenkombination:
-
AltGr + ß (Windows/Linux)
-
Alt + Shift + 7 (MacOS)
-
-
-
-
-
-
-
-
-
-
-
- 3
-.
- Grundstruktur eines LATEX-Dokuments
-
-
-
-
-
-
-
-
-
-
Präambel & Dokumentumgebung
-
-
-👁 Ein mit LaTeX gesetztes Dokument besteht aus:
-
Die Zeichenkodierung bestimmt, welche Zeichen verfügbar sind.
-
-ASCII enthält kaum Sonderzeichen wie deutsche Umlaute.
-
-UTF-8 ist eine universelle Kodierung.
-
-
-
-
-
-
-
-
-
-
Sprache
-
-
\usepackage[ngerman]{babel}
-
-
Das Paket babel stellt sprachspezifische Informationen (z. B. Silbentrennung, Sonderzeichen, Wechsel zwischen Fonts, Übersetzung von Labels wie ›Kapitel‹, ›Inhaltsverzeichnis‹ oder ›Abbildung‹) bereit.
-
-ngerman steht für die neue deutsche Rechschreibung.
-
-
-
-
-
-
-
-
-
-
Fließtext
-
-
Fließtext kann direkt in den Quelltext ↲
-geschrieben werden. ↲
-Einfache Zeilenumbrüche ↲
-werden dabei ignoriert, ↲
-genau wie mehrere Leerzeichen. ↲
-↲
-Leerzeilen erzeugen einen neuen Absatz,↲
-standardmäßig mit Einzug. ↲
-Manuelle Zeilenumbrüche können mit ↲
-zwei Backslashes erzwungen werden, ↲
-haben in Fließtext aber eigentlich \\ ↲
-nichts verloren.
-
-
-
-
-
-
-
-
-
-
-
-
-
Kommentare
-
-
Nach einem Prozentzeichen wird der Rest der Zeile vom Compiler ignoriert. Der Kommentartext erscheint also nicht im fertigen Dokument.
-
% Beginn Steckbrief
-Name: Donald Knuth \\
-Geburtsdatum: \\ % TODO: einfügen
-Geburtsort: Milwaukee, Wisconsin
-% Ende Steckbrief
-
Tastenkombinationen: Strg + T und Strg + U
-
-
-
-
-
-
-
-
-
-
-
-
-
Reservierte Zeichen
-
-
Bestimmte Zeichen lösen in LaTeX Dinge aus:
-
# $ % ^ & _ { } ~ \
-
50% sind die Hälfte.
-
Lösung: »\« voranstellen:
-
50\% sind die Hälfte.
-
Funktioniert nicht mit »\\«, nutzt \textbackslash stattdessen.
-
-
-
-
-
-
-
-
-
-
-
-
-
Abschnitte und Kapitel
-
-
Texte werden durch Überschriften in Abschnitte und Kapitel unterteilt. Immer verfügbar:
\section{Dies ist Abschnitt 1}
-Hier ein Absatz zum
-Inhalt von Abschnitt 1.
-
-% …
-
\section{Dies ist Abschnitt 2}
-Hier ein Absatz zum
-Inhalt von Abschnitt 2.
-
-% …
-
-
-
-
-
-
-
-
-
-
-
-
-
Dateipfade angeben 👣
-
-
-
wichtig für \input{} sowie später für das Einbinden von Bildern und anderen Medien
-
Datei- und Ordnerstruktur = Baumstruktur 🌳
-
-
bei \input{} kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden
-
-
-Bei LaTeX muss stets die Unix-Syntax für Pfadangaben verwendet werden. Pfadelemente werden durch einen Schrägstrich getrennt: pfad/zur/datei. Deshalb werden wir im Folgenden diese Schreibweise verwenden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Dateipfade angeben 👣
-
-
-main-exercises.tex → praeamble.tex
-
-
-
./praeamle.tex
-
Der einfache Punkt ».« bezieht sich bei relativen Pfaden auf den aktuellen Ordner (hier: latex-skript). Er ist optional, es könnte also auch nur praeamble.tex geschrieben werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Dateipfade angeben 👣
-
-
-main-exercises.tex → basic-document-structure.tex (in einem Unterordner)
-
-
-
./content/basic-document-structure.tex
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Dateipfade angeben 👣
-
-
-basic-functionality.tex → graphics.raw.tex
-
-
-(wenn basic-functionality.tex von main-exercises.tex importiert wird)
-
-
-
./exercises/graphics/graphics.raw.tex
-
-Pfade sind immer relativ zum Wurzelelement, auch wenn dieses noch andere Dateien einbindet, die wiederum andere Dateien referenzieren.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Kompilieren des Projekts
-
-
-
-Nur die Hauptdatei wird kompiliert, um das fertige PDF-Dokument zu erhalten.
-
Fehlermeldungen enthalten dann Verweis, in welcher Unterdatei sie aufgetreten sind.
-
Die Unterdateien können wegen ihrer fehlenden Präambel nicht selbstständig kompiliert werden.
-
-
-
Von nun an kompilieren wir die Datei main-exercises.tex im Wurzelverzeichnis des Projektordners. Klickt hierzu in TeXstudio mit der rechten Maustaste auf die Datei und wählt „Explizit als Root-Dokument setzen“. Anschließend könnt ihr wie gewohnt kompilieren.
-
-
-
-
-
-
-
-
-
-
-
Ein strukturiertes Projekt
-
-
Im Ordner exercises/project-structure findet ihr eine Datei namens main.tex.
-
-
Erstellt neue Dateien (z. B. section1.tex und section2.tex und verschiebt die Abschnitte in diese.
-
Importiert die Fragmente anschließend mit Hilfe des \input-Befehls.
-
Lagert die Präambel auf demselben Weg in eine eigene Datei aus.
-
Schaut euch abschließend die Gesamtstruktur unseres Projektarchivs an, beginnend mit main-exercises.tex im Wurzelverzeichnis. Wie binden wir hier die einzelnen Abschnitte ein?
-
-
-
-
-
-
-
-
-
-
-
-
- 5
-.
- Sonderzeichen
-
-
-
-
-
-
-
-
-
-
Leerzeichen
-
-
-
Nutzt schmale Leerzeichen (\,) und geschützte Leerzeichen (~) an den geeigneten Stellen.
-
-
Schmale Leerzeichen werden z.\,B. in
-Abkürzungen und zwischen Zahlen und
-Einheiten verwendet: 10\,s.
-Normalbreite, aber geschützte
-Leerzeichen können u.\,a.
-dabei helfen, Titel und Namen in
-einer Zeile zu halten: Dr.~Fooboar.
-
-
Nutzt French Spacing (\frenchspacing), um riesige Freiräume nach Satzzeichen zu verhindern.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Striche
-
-
-
-
-
-
-Name
-
-
-Verwendung
-
-
-Code
-
-
-
-
--
-
-
-Bindestrich (hypen)
-
-
-LaTeX-Wochenende
-
-
--
-
-
-
-
-–
-
-
-Halbgeviertstrich (en dash)
-
-
-als Gedankenstrich – oder als Bis-Strich: 10 – 12 Uhr.
-
-
---
-
-
-
-
-—
-
-
-Geviertstrich (em dash)
-
-
-a dash — mostly in American English
-
-
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Zitate
-
-
Das Paket csquotes stellt u. a. den Befehl \enquote zur Verfügung:
-
\enquote{Ein \enquote{verschachteltes}
-Zitat.}
-
Wenn das Paket mit autostyle=true eingebunden wird, werden bei fremdsprachigen Zitaten die entsprechenden Anführungszeichen verwendet:
Kompiliert von nun an immer die Datei main-exercises.tex, um eure Änderungen im Übungsskript zu sehen (in diesem Fall im Abschnitt zu Übung 5).
-
-
-
Ersetzt die Leerzeichen innerhalb der Abkürzungen in exercises/special-characters.tex durch schmale Leerzeichen.
-
Die Bindestriche bei den Öffnungszeiten der ERBA sollen durch Halbgeviertstriche ersetzt werden, optional mit schmalen Leerzeichen außenrum.
-
Nutzt den Befehl \enquote, um die Wörter Studi-Ticket und Studi-Karte in Anführungszeichen zu setzen.
-
-
-
-
-
-
-
-
-
-
English spacing
-
-
In englischsprachigen Dokumenten verwendet LaTeX das traditionelle English spacing, also doppelte Leerzeichen nach dem Satzende.
-
Das kann mit \frenchspacing vor dem ersten Absatz verhindert werden. \nonfrenchspacing schaltet wieder zurück.
-
Bei English spacing versucht LaTeX, nach Abkürzungen trotzdem normale Wortzwischenräume zu setzen. Das sollte aber kontrolliert werden. Eingreifen können wir mit
-
-
erzwungenen Wortzwischenräumen: .\␣
-
-
erzwungenen Satzenden: \@.␣
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Silbentrennung
-
-
LaTeX trennt Wörter im Normalfall automatisch richtig, wenn die richtige Sprache konfiguriert ist. Manchmal muss aber auch manuell eingegriffen werden.
-
-
-
-Ausschließliche Trennung
-
-
-\-
-
-
-
-
-Zusätzliche Trennstelle
-
-
-"-
-
-
-
-
-Bindestrich (verbietet andere Trennstellen)
-
-
--
-
-
-
-
-Bindestrich (erlaubt andere Trennstellen)
-
-
-"=
-
-
-
-
-Trennstelle ohne Strich
-
-
-""
-
-
-
-
-Strich ohne Trennstelle
-
-
-"~
-
-
-
-
-Einige der Codes funktionieren nur mit eingebundenem babel-Paket.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Anführungszeichen
-
-
-
-
-Sprache
-
-
-Befehl
-
-
-Ergebnis
-
-
-
-
-Deutsch
-
-
-\glqq … \grqq
-
-
-„ … “
-
-
-
-
- 2. Ebene
-
-
-\glq … \grq
-
-
-‚ … ‘
-
-
-
-
-Deutsch altern.
-
-
-\frqq … \flqq
-
-
-» … «
-
-
-
-
- 2. Ebene
-
-
-\frq … \flq
-
-
-› … ‹
-
-
-
-
-Englisch (A. E.)
-
-
-``…''
-
-
-“ … ”
-
-
-
-
- 2. Ebene
-
-
- `…'
-
-
-‘ … ’
-
-
-
-
-Englisch (B. E.)
-
-
- `…'
-
-
-‘ … ’
-
-
-
-
- 2. Ebene
-
-
-``…''
-
-
-“ … ”
-
-
-
-
Für andere Sprachen können andere Regeln gelten, meistens aber mit den gleichen Zeichen, nur in anderer Zusammensetzung.
-
-
-
-
-
-
-
-
-
Diakritika
-
-
Buchstaben mit Diakritika können entweder direkt über die Tastatur eingegeben werden oder über Escape-Codes:
-
-
-
-\`{o}
-
-
-ò
-
-
-\c{c}
-
-
-ç
-
-
-\d{u}
-
-
-ụ
-
-
-
-
-\'{o}
-
-
-ó
-
-
-\k{a}
-
-
-ą
-
-
-\r{a}
-
-
-å
-
-
-
-
-\^{o}
-
-
-ô
-
-
-\l{}
-
-
-ł
-
-
-\u{o}
-
-
-ŏ
-
-
-
-
-\"{o}
-
-
-ö
-
-
-\={o}
-
-
-ō
-
-
-\v{s}
-
-
-š
-
-
-
-
-\H{o}
-
-
-ő
-
-
-\b{o}
-
-
-o
-
-
-\t{oo}
-
-
-o͡o
-
-
-
-
-\~{o}
-
-
-õ
-
-
-\.{o}
-
-
-ȯ
-
-
-\o
-
-
-ø
-
-
-
-
-
-
-
-
-
-
-
-
Sonderzeichen & Symbole
-
-
Auch andere Sonderzeichen können entweder direkt eingegeben werden oder per Befehl:
-
-
-
-¿
-
-
-?`
-
-
-¡
-
-
-!`
-
-
-
-
-^
-
-
-\textasciicircum
-
-
-~
-
-
-\textasciitilde
-
-
-
-
-*
-
-
-\textasteriskcentered
-
-
-\
-
-
-\textbackslash
-
-
-
-
-|
-
-
-\textbar
-
-
-∙
-
-
-\textbullet
-
-
-
-
-ⓒ
-
-
-\textcopyright
-
-
-†
-
-
-\textdagger
-
-
-
-
-‡
-
-
-\textdaggerdbl
-
-
-…
-
-
-\textellipsis
-
-
-
-
-<
-
-
-\textless
-
-
->
-
-
-\textgreater
-
-
-
-
-‰
-
-
-\textperthousand
-
-
-§
-
-
-\textsection
-
-
-
-
… und so ziemlich alles andere.
-
-
-
-
-
-
-
-
-
-
-
- 6
-.
- Textauszeichnung
-
-
-
-
-
-
-
-
-
-
Semantische und optische Hervorhebungen
-
-
Semantische Hervorhebungen durch \emph{}:
-
\emph{Super wichtiger Text \emph{mit noch
-wichtigerem Text} im Text.}
-
Optische Auszeichnungsmöglichkeiten:
-
-
-
-Bezeichnung
-
-
-Befehl
-
-
-
-
-fett (bold face)
-
-
-\textbf{wichtig}
-
-
-
-
-kursiv (italics)
-
-
-\textit{wichtig}
-
-
-
-
-Kapitälchen (small caps)
-
-
-\textsc{wichtig}
-
-
-
-
-dicktengleich (teletype)
-
-
-\texttt{wichtig}
-
-
-
-
-unterstrichen
-
-
-\underline{wichtig}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Better Call LaTeX!
-
-
-
Ein gutgemeinter Rat
-
Konsistentes Aussehen über das gesamte Dokument hinweg gewünscht?
-
Voreinstellungen von LaTeX zur Schriftgröße verschiedener Textelemente (Titel, Fließtext, Fußnoten) vertrauen!
-
Das heißt im Umkehrschluss: Möglichst wenig manuell an Schriftgrößen herumschrauben.
-
-
-
-
-
-
-
-
-
-
URLs
-
-
Das Paket hyperref stellt den Befehl \url{} bereit, der URLs
-
-
zeichentreu
-
mit bindestrichlosen Umbrüchen
-
mit gut unterscheidbaren Zeichen
-
im PDF anklickbar
-
-
wiedergibt.
-
\url{https://www.latex-project.org/}
-
-
-
-
-
-
-
-
-
-
-
-
-
Text hervorheben
-
-
-
-Betont in der Datei exercises/text-markup/markup.tex die Wörter Recursion und recursive mit \emph{…}.
Formatiert das Rezept in lists.tex im Ordner exercises/lists als ungeordnete Liste mit den Elementen Ingredients und Instructions. Nutzt dafür den Befehl \itemize.
-
Benutzt innerhalb dieser Liste für die Zutaten eine ungeordnete Liste und für die Arbeitsschritte eine geordnete Liste.
-
-
-
-
-
-
-
-
-
-
Kompakte Listen
-
-
Das Paket paralist stellt Aufzählungen ohne riesige Zwischenräume zur Verfügung.
Mathematische Formeln können nur im sogenannten Mathmode gesetzt werden, der inline durch zwei Dollarzeichen aktiviert wird. Außerdem gibt es eine Blockumgebung:
Die Nummerierung kann bei align und equation durch durch ein Sternchen nach dem Umgebungsnamen (z. B. \begin{align*} und \end{align*}) unterdrückt werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Formeln setzen
-
-
-
Setzt die folgenden Formeln in der Datei exercises/maths/math-formulas.tex.
Mit dem Befehl \limits lassen sich die Grenzen von Integralen unter und über dem Integralzeichen darstellen. Bei Summen, Produkten und Grenzwerten geschieht das automatisch.
-Der Einsatz von \limits sollte im Fließtext vermieden werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Mengenschreibweise
-
-
Manchmal ist es notwendig, im Zusammenhang mit der Mengenschreibweise Prädikate unter Verwendung von textuellen Beschreibungen oder längeren Funktionsnamen zu definieren.
-
Für diesen Fall gibt es den Befehl \text{}.
-
-\(\left\lbrace x \mid tiefe(x) \geq 20\right\rbrace\)
-
-
-\(\left\lbrace x \mid \text{tiefe}(x) \geq 20\right\rbrace\)
-
-
$\left\lbrace x \mid \text{tiefe}(x) …
-
-
-
-
-
-
-
-
-
-
-
- 9
-.
- Grafiken
-
-
-
-
-
-
-
-
-
-
Grafiken abbilden 🖼️
-
-
Um Grafiken darzustellen, muss das Paket graphicx eingebunden werden.
Die Nummerierung erfolgt automatisch und ist fortlaufend, unabhängig davon, ob ein neuer Abschnitt beginnt.
-
Eber, beim Hausschwein insbesondere
-oberdeutsch Saubär, beim Wildschwein
-Keiler, bezeichnet das männliche
-Geschlecht des Schweins.
-\footnote{\url{https://de.wikipedia.org/
-wiki/Eber}}
-
-
-
-
-
-
-
-
-
-
-
-
-
Querverweise
-
-
Manuell (Just don’t!)
-
Wie man in Abbildung 23 sieht, …
-
Mit dem Befehl \ref:
-
\begin{figure}[H]
- \includegraphics % …
- \caption{Unser Maskottchen Fooboar}
- \label{img:fooboar}
-\end{figure}
-
-Wie man in Abbildung \ref{img:fooboar} …
-
-
-
-
-
-
-
-
-
-
-
-
-
Referenzen
-
-
Mit dem Paket cleveref (mit einem ›r‹!):
-
\begin{figure}[H]
- \includegraphics % …
- \caption{Unser Maskottchen Fooboar}
- \label{img:fooboar}
-\end{figure}
-
-Fooboar ist ein sehr engagierter
-Jungeber (siehe \Cref{img:fooboar}).
-
Der Befehl \cref fügt selbstständig die passende Abkürzung ein.
-
-
-
-
-
-
-
-
-
-
-
-
-
Label vergeben
-
-
Beide Referenzierungsbefehle funktionieren mit Abschnitten, Bildern, Tabellen, Listings und Gleichungen, sofern die richtigen Label vergeben wurden.
-
Label müssen eindeutig sein. Zur Strukturierung ist das Voranstellen von Kürzeln üblich, denn einige Pakete ziehen aus den Kürzeln Informationen.
-
-
-
-fig: Abbildungen
-
-
-tbl: Tabellen
-
-
-
-
-sec: Abschnitte
-
-
-subsec: Unterabschnitte
-
-
-
-
-ch: Kapitel
-
-
-itm: Aufzählungselemente
-
-
-
-
-eq: Gleichungen
-
-
-lst: Quelltextlistings
-
-
-
-
-
-
-
-
-
-
-
-
Dinge, die zu beachten sind
-
-
-
-
Durch \cref eingefügte Passagen tauchen in einigen Dokumentklassen erst dann auf Deutsch auf, wenn bereits in der Dokumentklasse die Sprache festgelegt wurde:
-
\documentclass[ngerman]{article}
-
-
Beschriftungen (\caption{…}) müssen, von Abschnitten abgesehen, immer und vor dem Label vergeben werden.
-
-
Bei Abschnitten wird das Label direkt hinter dem Befehl angefügt.
-
\section{Hinweise}\label{sec:hinweise}
-
-
-
-
-
-
-
-
-
-
-
Fußnoten einfügen
-
-
-
Pack den Text March 2023 in der Datei exercises/footnotes/footnotes.tex in eine Fußnote.
-
Fügt zusätzlich eine klickbare URL, die zur Download-Seite des Java Development Kit führt (https://www.oracle.com/java/technologies/javase-downloads.html), als Fußnote ein.
-
-
-
-
-
-
-
-
-
-
Referenzen einfügen
-
-
-
Ersetzt im Text in der Datei references.tex im Ordner exercises/referencesIn the figure und The following source code listing durch eine Referenz auf das Bild bzw. auf das Quelltext-Listing.
-
Nutzt dafür den Befehl \Cref.
-
Achtet darauf, zuerst Labels für die Elemente, die ihr referenzieren wollt, zu vergeben.
-
Bei Quelltext-Listings funktioniert die Angabe von Labels und Captions leicht anders. Nutzt euer bisheriges Wissen und das Internet, um herauszufinden, wie ihr den Befehl \lstinputlisting anpassen müsst, um beides zu vergeben.
-
-
-
-
-
-
-
-
-
-
Konfiguration von Fußnoten
-
-
Das Paket footmisc stellt verschiedene weitere Optionen für die Darstellung von Fußnoten zur Verfügung, die als optionale Parameter an den Befehl \usepackage übergeben werden können.
-
% Zählung auf jeder Seite neu beginnen:
-\usepackage[perpage]{footmisc}
-
-% Fußnoten inline anzeigen lassen:
-\usepackage[para]{footmisc}
-
-% Symbole statt Nummerierung verwenden:
-\usepackage[symbol]{footmisc}
-
-
-
-
-
-
-
-
-
-
-
-
-
Weiterführend
-
-
-
Wurde vor dem Paket cleveref das Paket hyperref eingebunden, entsteht ein klickbarer Link im fertigen PDF.
-
Mehrere Referenzen können in \cref kommagetrennt angegeben werden.
-
-
\section{Ein Einstieg}
-\label{sec:section1}
-% …
-Hier sei verwiesen auf
-\cref{sec:section1,sec:section2,
-sec:section3,sec:section5}.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 12
-.
- Literaturverwaltung
-
-
-
-
-
-
-
-
-
-
Was brauchen wir dafür?
-
-
-
eine Bibliographiedatei (nachfolgend .bib-Datei) zur Speicherung von Literaturverweisen
-
-BibTeX als Schnittstelle zwischen der Literatur und LaTeX
-
-
-
-
-
-
-
-
-
-
Was ist diese ominöse .bib-Datei?
-
-
-
Sammlung von Literatureinträgen im BibTeX-Format
-
Beispielhafter Literatureintrag:
-
-
@article{turing1990, % Art des Dokuments und Bezeichner für den \cite Befehl
- title={The chemical basis of morphogenesis}, % Titel
- author={Turing, Alan Mathison}, % Autor
- journal={Bulletin of mathematical biology}, % Titel des Journals
- volume={52}, % Band des Journals
- pages={153--197}, % Seitenzahl im Journal
- year={1990}, % Erscheinungsjahr
- publisher={Springer} % Verleger des Journals
-}
-
-
-
-
-
-
-
-
-
Wie wird das verwendet?
-
-
Durch BibTeX wird LaTeX um einige Befehle zum Zitieren erweitert. Außerdem benötigt wird das Paket natbib.
-
-
Zitieren eines Autors: \citeauthor{<quelle>}
-
-
Zitieren einer Quelle: \cite{<quelle>}
-
-
Zitieren einer Seite: \cite[S. 15]{<quelle>}
-
-
Zitieren mit weiteren Zusätzen: \cite[<präfix>][<suffix>]{<quelle>}
-
-
Verweis auf die genutzte .bib-Datei: \bibliography{<.bib-datei>}
-
-
Angabe des genutzten Zitierstils: \bibliographystyle{<zitierstil>}
-
-
-
-
Zwei Dinge sind unendlich. Das Universum und die Auswahl an Zitierstilen.Unbekannt
Im Ordner exercises/source-code-listings findet ihr eine Datei namens Source.java.
-
-Bindet den Java-Quelltext in der Datei source-code-listings.texein. (Beachtet, dass der Dateipfad relativ zu main-exercises.tex ist.)
-
Erlaubt die Verwendung von Sonderzeichen durch Angabe der literate-Option.
-
Aktiviert das Syntax-Highlighting durch Angabe der Sprache Java.
-
-Nummeriert die Zeilen und aktiviert Umbrüche.
-
Setzt mit dem Parameter basicstyle eine dicktengleiche Schrift (\ttfamily \small).
-
Ändert die Schlüsselwortfarbe zu Blau.
-
Verbergt die Sonderzeichen, die Leerzeichen in Zeichenketten markieren.
-
-
Seht bei Fragen in der Dokumentation des Paketes listings nach.
-
-
-
-
-
-
-
-
-
-
-
- 14
-.
- Paket in Sicht!
-
-
-
-
-
-
-
-
-
-
Stichwortverzeichnis anlegen
-
-
\usepackage{makeidx}
-\makeindex
-\begin{document}
-\maketitle
-\section{Was ist LaTeX\index{LaTeX}?}
-LaTeX\index{LaTeX} ist ein
-Textsatzsystem\index{Textsatzsystem}.
-\newpage \section{TeX\index{TeX} vs.
-LaTeX\index{LaTeX}} Es basiert auf
-TeX\index{TeX}, einer Erfindung von
-Donald Knuth\index{Knuth, Donald}.
-Da TeX\index{TeX} in seiner Syntax sehr
-viel komplexer als LaTeX\index{LaTeX}
-ist, ist LaTeX\index{LaTeX} wesentlich
-weiter verbreitet.
-\printindex
-
-
-
-
-
-
-
-
-
-
-
-
-
Präsentationen gestalten
-
-
Für Präsentationen gibt es die Dokumentenklasse beamer sowie zahlreiche Vorlagen und Themes.
-
\documentclass{beamer}
-\usetheme{Frankfurt}
-\usecolortheme{seahorse}
-\usepackage[utf8]{inputenc}
-
-\begin{document}
-\begin{frame}
- \frametitle{Zitronensorbet}
- \framesubtitle{Inkarnation des Guten?}
- \begin{definition}
- Ein Zitronensorbet ist eine
- halbgefrorene \textbf{Speiseeiscreme}
- auf Basis von \textit{Zitronen}.
- \end{definition}
-\end{frame}
-\end{document}
-
-
-
-
-
-
-
-
-
-
-
-
-
Grafiken erstellen
-
-
TikZ (»TikZ ist kein Zeichenprogramm«) ist ein umfangreiches Paket zur Erstellung von Vektorgrafiken.
-
% …
-\tikzstyle{every node}=[draw=black,thick,anchor=west]
-\tikzstyle{selected}=[draw=red,fill=red!30]
-\tikzstyle{dir}=[fill=gray!50]
-\tikzstyle{relativeTo}=[fill=blue!70]
-\begin{tikzpicture}[%
-grow via
-three points={one child at (0.5,-0.7) and
-two children at
-(0.5,-0.7) and (0.5,-1.4)},
-edge from
-parent path={(\tikzparentnode.south)
- |- (\tikzchildnode.west)}]
-\node {/ oder C:}
-child { node {home}
- child { node {knut}
- child { node {pictures}}
- child { node {docs}
- child { node [dir] {latex}
- child { node [relativeTo] {main.tex}
- child { node [selected] {part1.tex}
- }
- }
- }
-};
-\end{tikzpicture}
-
-
-
-
-
-
-
-
-
-
-
-
-
Linguistik
-
-
Mit dem Paket qtree lassen sich Konstituentenbäume erstellen:
-
\Tree [.S [.NP LaTeX ]
-[.VP [.V is ] [.NP fun ] ] ]
-
-
-
-
-
-
-
-
-
-
-
-
-
Mathematische Beweisführung
-
-
Beweisbäume lassen sich mit dem Paket prftree einwandfrei darstellen.
Ein Online-LaTeX-Editor, der das kollaboratives Arbeiten an Dokumenten ermöglicht.
-
Außerdem findest du auf der Seite verschiedene Tutorials und unter »Templates« LaTeX-Vorlagen für viele Gelegenheiten (Lebenslauf, Abschlussarbeiten, …).
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/latex-workshop/js/lazyload-images.js b/latex-workshop/js/lazyload-images.js
deleted file mode 100644
index 1f84044..0000000
--- a/latex-workshop/js/lazyload-images.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// credit: https://www.sitepoint.com/five-techniques-lazy-load-images-website-performance/
-
-// create config object: rootMargin and threshold
-// are two properties exposed by the interface
-// more information: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
-const config = {
- // margin around the root element defaulting to the viewport
- rootMargin: '500px 0px 500px 0px',
- // how much of the image has to be on screen to load the image
- threshold: 0
-};
-
-// register the config object with an instance
-// of intersectionObserver
-let observer = new IntersectionObserver(onCloseToVisibleArea, config);
-
-window.addEventListener("load", function () {
- const imgs = document.querySelectorAll('img[data-src]');
- imgs.forEach(img => {
- observer.observe(img);
- });
-})
-
-function onCloseToVisibleArea(entries, self) {
- // iterate over each entry
- entries.forEach(entry => {
- // process just the images that are intersecting.
- // isIntersecting is a property exposed by the interface
- if (entry.isIntersecting) {
- // custom function that copies the path to the img
- // from data-src to src
- preloadImage(entry.target);
- // the image is now in place, stop watching
- self.unobserve(entry.target);
- }
- });
-}
-
-function preloadImage(imgTag) {
- imgTag.setAttribute("src", imgTag.getAttribute("data-src"));
-}
\ No newline at end of file
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-Bold.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-Bold.ttf
deleted file mode 100644
index 1ac9cc3..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-Bold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-BoldItalic.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-BoldItalic.ttf
deleted file mode 100644
index 60711b2..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-BoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBold.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBold.ttf
deleted file mode 100644
index 00431e7..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBoldItalic.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBoldItalic.ttf
deleted file mode 100644
index 118ead9..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-ExtraBoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic-VariableFont_wght.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic-VariableFont_wght.ttf
deleted file mode 100644
index 8d37412..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic-VariableFont_wght.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic.ttf
deleted file mode 100644
index 1e5eb2c..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-Italic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-Medium.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-Medium.ttf
deleted file mode 100644
index 18cda5d..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-Medium.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-MediumItalic.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-MediumItalic.ttf
deleted file mode 100644
index f2f55a2..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-MediumItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-Regular.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-Regular.ttf
deleted file mode 100644
index 80a857b..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-Regular.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBold.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBold.ttf
deleted file mode 100644
index 9c63ead..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBoldItalic.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBoldItalic.ttf
deleted file mode 100644
index c51801c..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-SemiBoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EBGaramond-VariableFont_wght.ttf b/latex-workshop/lib/font/eb-garamond/EBGaramond-VariableFont_wght.ttf
deleted file mode 100644
index 1a5eb19..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EBGaramond-VariableFont_wght.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/EB_Garamond.zip b/latex-workshop/lib/font/eb-garamond/EB_Garamond.zip
deleted file mode 100644
index 4ddbcfd..0000000
Binary files a/latex-workshop/lib/font/eb-garamond/EB_Garamond.zip and /dev/null differ
diff --git a/latex-workshop/lib/font/eb-garamond/OFL.txt b/latex-workshop/lib/font/eb-garamond/OFL.txt
deleted file mode 100644
index 1fb3e84..0000000
--- a/latex-workshop/lib/font/eb-garamond/OFL.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12)
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/latex-workshop/lib/font/eb-garamond/README.txt b/latex-workshop/lib/font/eb-garamond/README.txt
deleted file mode 100644
index f8a74e7..0000000
--- a/latex-workshop/lib/font/eb-garamond/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-EB Garamond Variable Font
-=========================
-
-This download contains EB Garamond as both variable fonts and static fonts.
-
-EB Garamond is a variable font with this axis:
- wght
-
-This means all the styles are contained in these files:
- EBGaramond-VariableFont_wght.ttf
- EBGaramond-Italic-VariableFont_wght.ttf
-
-If your app fully supports variable fonts, you can now pick intermediate styles
-that aren’t available as static fonts. Not all apps support variable fonts, and
-in those cases you can use the static font files for EB Garamond:
- static/EBGaramond-Regular.ttf
- static/EBGaramond-Medium.ttf
- static/EBGaramond-SemiBold.ttf
- static/EBGaramond-Bold.ttf
- static/EBGaramond-ExtraBold.ttf
- static/EBGaramond-Italic.ttf
- static/EBGaramond-MediumItalic.ttf
- static/EBGaramond-SemiBoldItalic.ttf
- static/EBGaramond-BoldItalic.ttf
- static/EBGaramond-ExtraBoldItalic.ttf
-
-Get started
------------
-
-1. Install the font files you want to use
-
-2. Use your app's font picker to view the font family and all the
-available styles
-
-Learn more about variable fonts
--------------------------------
-
- https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
- https://variablefonts.typenetwork.com
- https://medium.com/variable-fonts
-
-In desktop apps
-
- https://theblog.adobe.com/can-variable-fonts-illustrator-cc
- https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
-
-Online
-
- https://developers.google.com/fonts/docs/getting_started
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
- https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
-
-Installing fonts
-
- MacOS: https://support.apple.com/en-us/HT201749
- Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
- Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
-
-Android Apps
-
- https://developers.google.com/fonts/docs/android
- https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
-
-License
--------
-Please read the full license text (OFL.txt) to understand the permissions,
-restrictions and requirements for usage, redistribution, and modification.
-
-You can use them freely in your products & projects - print or digital,
-commercial or otherwise.
-
-This isn't legal advice, please consider consulting a lawyer and see the full
-license for all details.
diff --git a/latex-workshop/lib/font/fira-code/FiraCode-Bold.otf b/latex-workshop/lib/font/fira-code/FiraCode-Bold.otf
deleted file mode 100644
index cea3cbd..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode-Bold.otf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode-Light.otf b/latex-workshop/lib/font/fira-code/FiraCode-Light.otf
deleted file mode 100644
index d6bb94b..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode-Light.otf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode-Medium.otf b/latex-workshop/lib/font/fira-code/FiraCode-Medium.otf
deleted file mode 100644
index 04bf819..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode-Medium.otf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode-Regular.otf b/latex-workshop/lib/font/fira-code/FiraCode-Regular.otf
deleted file mode 100644
index 4770d16..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode-Regular.otf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode-Retina.otf b/latex-workshop/lib/font/fira-code/FiraCode-Retina.otf
deleted file mode 100644
index 6316cff..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode-Retina.otf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Bold.eot b/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Bold.eot
deleted file mode 100644
index e661db7..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Bold.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Light.eot b/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Light.eot
deleted file mode 100644
index 387cb65..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Light.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Medium.eot b/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Medium.eot
deleted file mode 100644
index 8713972..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Medium.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Regular.eot b/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Regular.eot
deleted file mode 100644
index cef458e..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/eot/FiraCode-Regular.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/fira_code.css b/latex-workshop/lib/font/fira-code/FiraCode_1.206/fira_code.css
deleted file mode 100644
index f8e4a5b..0000000
--- a/latex-workshop/lib/font/fira-code/FiraCode_1.206/fira_code.css
+++ /dev/null
@@ -1,43 +0,0 @@
-@font-face{
- font-family: 'Fira Code';
- src: url('eot/FiraCode-Light.eot');
- src: url('eot/FiraCode-Light.eot') format('embedded-opentype'),
- url('woff2/FiraCode-Light.woff2') format('woff2'),
- url('woff/FiraCode-Light.woff') format('woff'),
- url('ttf/FiraCode-Light.ttf') format('truetype');
- font-weight: 300;
- font-style: normal;
-}
-
-@font-face{
- font-family: 'Fira Code';
- src: url('eot/FiraCode-Regular.eot');
- src: url('eot/FiraCode-Regular.eot') format('embedded-opentype'),
- url('woff2/FiraCode-Regular.woff2') format('woff2'),
- url('woff/FiraCode-Regular.woff') format('woff'),
- url('ttf/FiraCode-Regular.ttf') format('truetype');
- font-weight: 400;
- font-style: normal;
-}
-
-@font-face{
- font-family: 'Fira Code';
- src: url('eot/FiraCode-Medium.eot');
- src: url('eot/FiraCode-Medium.eot') format('embedded-opentype'),
- url('woff2/FiraCode-Medium.woff2') format('woff2'),
- url('woff/FiraCode-Medium.woff') format('woff'),
- url('ttf/FiraCode-Medium.ttf') format('truetype');
- font-weight: 500;
- font-style: normal;
-}
-
-@font-face{
- font-family: 'Fira Code';
- src: url('eot/FiraCode-Bold.eot');
- src: url('eot/FiraCode-Bold.eot') format('embedded-opentype'),
- url('woff2/FiraCode-Bold.woff2') format('woff2'),
- url('woff/FiraCode-Bold.woff') format('woff'),
- url('ttf/FiraCode-Bold.ttf') format('truetype');
- font-weight: 700;
- font-style: normal;
-}
\ No newline at end of file
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/specimen.html b/latex-workshop/lib/font/fira-code/FiraCode_1.206/specimen.html
deleted file mode 100644
index 4ee2cf9..0000000
--- a/latex-workshop/lib/font/fira-code/FiraCode_1.206/specimen.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
- Fira Code Specimen
-
-
-
-
-
-
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Bold.ttf b/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Bold.ttf
deleted file mode 100644
index 0d78eef..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Bold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Light.ttf b/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Light.ttf
deleted file mode 100644
index 18b9e9a..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Light.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Medium.ttf b/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Medium.ttf
deleted file mode 100644
index d106632..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Medium.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Regular.ttf b/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Regular.ttf
deleted file mode 100644
index 0fb0817..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Regular.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Retina.ttf b/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Retina.ttf
deleted file mode 100644
index 5bbb74b..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/ttf/FiraCode-Retina.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Bold.woff b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Bold.woff
deleted file mode 100644
index dd7abb6..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Bold.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Light.woff b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Light.woff
deleted file mode 100644
index 2ecc26d..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Light.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Medium.woff b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Medium.woff
deleted file mode 100644
index 0623267..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Medium.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Regular.woff b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Regular.woff
deleted file mode 100644
index 5e4106f..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff/FiraCode-Regular.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Bold.woff2 b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Bold.woff2
deleted file mode 100644
index 5151301..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Bold.woff2 and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Light.woff2 b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Light.woff2
deleted file mode 100644
index 82c9850..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Light.woff2 and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Medium.woff2 b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Medium.woff2
deleted file mode 100644
index 8f58744..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Medium.woff2 and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Regular.woff2 b/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Regular.woff2
deleted file mode 100644
index df544dc..0000000
Binary files a/latex-workshop/lib/font/fira-code/FiraCode_1.206/woff2/FiraCode-Regular.woff2 and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Black.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Black.ttf
deleted file mode 100644
index b40cf62..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Black.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-BlackItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-BlackItalic.ttf
deleted file mode 100644
index 30aa806..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-BlackItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Bold.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Bold.ttf
deleted file mode 100644
index f5bf9bc..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Bold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-BoldItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-BoldItalic.ttf
deleted file mode 100644
index 7ac379f..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-BoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBold.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBold.ttf
deleted file mode 100644
index f477455..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBoldItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBoldItalic.ttf
deleted file mode 100644
index 31b7404..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraBoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLight.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLight.ttf
deleted file mode 100644
index faf1cfb..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLight.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLightItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLightItalic.ttf
deleted file mode 100644
index 3b35322..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-ExtraLightItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Italic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Italic.ttf
deleted file mode 100644
index f8d4e7e..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Italic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Light.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Light.ttf
deleted file mode 100644
index 63be25f..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Light.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-LightItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-LightItalic.ttf
deleted file mode 100644
index ee8ba59..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-LightItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Medium.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Medium.ttf
deleted file mode 100644
index efa2e0c..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Medium.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-MediumItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-MediumItalic.ttf
deleted file mode 100644
index 817ed64..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-MediumItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Regular.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Regular.ttf
deleted file mode 100644
index 159ccfd..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Regular.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-SemiBold.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-SemiBold.ttf
deleted file mode 100644
index 535a650..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-SemiBold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-SemiBoldItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-SemiBoldItalic.ttf
deleted file mode 100644
index 0d134e5..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-SemiBoldItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-Thin.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-Thin.ttf
deleted file mode 100644
index 162ea86..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-Thin.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/fira-sans/FiraSans-ThinItalic.ttf b/latex-workshop/lib/font/fira-sans/FiraSans-ThinItalic.ttf
deleted file mode 100644
index 6febc77..0000000
Binary files a/latex-workshop/lib/font/fira-sans/FiraSans-ThinItalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/league-gothic/LICENSE b/latex-workshop/lib/font/league-gothic/LICENSE
deleted file mode 100644
index 29513e9..0000000
--- a/latex-workshop/lib/font/league-gothic/LICENSE
+++ /dev/null
@@ -1,2 +0,0 @@
-SIL Open Font License (OFL)
-http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL
diff --git a/latex-workshop/lib/font/league-gothic/league-gothic.css b/latex-workshop/lib/font/league-gothic/league-gothic.css
deleted file mode 100644
index 44a33a1..0000000
--- a/latex-workshop/lib/font/league-gothic/league-gothic.css
+++ /dev/null
@@ -1,10 +0,0 @@
-@font-face {
- font-family: 'League Gothic';
- src: url('league-gothic.eot');
- src: url('league-gothic.eot?#iefix') format('embedded-opentype'),
- url('league-gothic.woff') format('woff'),
- url('league-gothic.ttf') format('truetype');
-
- font-weight: normal;
- font-style: normal;
-}
\ No newline at end of file
diff --git a/latex-workshop/lib/font/league-gothic/league-gothic.eot b/latex-workshop/lib/font/league-gothic/league-gothic.eot
deleted file mode 100755
index f62619a..0000000
Binary files a/latex-workshop/lib/font/league-gothic/league-gothic.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/league-gothic/league-gothic.ttf b/latex-workshop/lib/font/league-gothic/league-gothic.ttf
deleted file mode 100755
index baa9a95..0000000
Binary files a/latex-workshop/lib/font/league-gothic/league-gothic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/league-gothic/league-gothic.woff b/latex-workshop/lib/font/league-gothic/league-gothic.woff
deleted file mode 100755
index 8c1227b..0000000
Binary files a/latex-workshop/lib/font/league-gothic/league-gothic.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/LICENSE b/latex-workshop/lib/font/source-sans-pro/LICENSE
deleted file mode 100644
index 71b7a02..0000000
--- a/latex-workshop/lib/font/source-sans-pro/LICENSE
+++ /dev/null
@@ -1,45 +0,0 @@
-SIL Open Font License
-
-Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-
-—————————————————————————————-
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-—————————————————————————————-
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
-
-“Reserved Font Name” refers to any names specified as such after the copyright statement(s).
-
-“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).
-
-“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
-
-“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
-
-5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.eot b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.eot
deleted file mode 100755
index 32fe466..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.ttf b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.ttf
deleted file mode 100755
index f9ac13f..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.woff b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.woff
deleted file mode 100755
index ceecbf1..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-italic.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.eot b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.eot
deleted file mode 100755
index 4d29dda..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.ttf b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.ttf
deleted file mode 100755
index 00c833c..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.woff b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.woff
deleted file mode 100755
index 630754a..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-regular.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.eot b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.eot
deleted file mode 100755
index 1104e07..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.ttf b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.ttf
deleted file mode 100755
index 6d0253d..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.woff b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.woff
deleted file mode 100755
index 8888cf8..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibold.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot
deleted file mode 100755
index cdf7334..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf
deleted file mode 100755
index 5644299..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff b/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff
deleted file mode 100755
index 7c2d3c7..0000000
Binary files a/latex-workshop/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff and /dev/null differ
diff --git a/latex-workshop/lib/font/source-sans-pro/source-sans-pro.css b/latex-workshop/lib/font/source-sans-pro/source-sans-pro.css
deleted file mode 100644
index 0707a4f..0000000
--- a/latex-workshop/lib/font/source-sans-pro/source-sans-pro.css
+++ /dev/null
@@ -1,39 +0,0 @@
-@font-face {
- font-family: 'Source Sans Pro';
- src: url('source-sans-pro-regular.eot');
- src: url('source-sans-pro-regular.eot?#iefix') format('embedded-opentype'),
- url('source-sans-pro-regular.woff') format('woff'),
- url('source-sans-pro-regular.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'Source Sans Pro';
- src: url('source-sans-pro-italic.eot');
- src: url('source-sans-pro-italic.eot?#iefix') format('embedded-opentype'),
- url('source-sans-pro-italic.woff') format('woff'),
- url('source-sans-pro-italic.ttf') format('truetype');
- font-weight: normal;
- font-style: italic;
-}
-
-@font-face {
- font-family: 'Source Sans Pro';
- src: url('source-sans-pro-semibold.eot');
- src: url('source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'),
- url('source-sans-pro-semibold.woff') format('woff'),
- url('source-sans-pro-semibold.ttf') format('truetype');
- font-weight: 600;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'Source Sans Pro';
- src: url('source-sans-pro-semibolditalic.eot');
- src: url('source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'),
- url('source-sans-pro-semibolditalic.woff') format('woff'),
- url('source-sans-pro-semibolditalic.ttf') format('truetype');
- font-weight: 600;
- font-style: italic;
-}
\ No newline at end of file
diff --git a/latex-workshop/lib/font/twemoji/TwitterColorEmoji-SVGinOT.ttf b/latex-workshop/lib/font/twemoji/TwitterColorEmoji-SVGinOT.ttf
deleted file mode 100644
index f88c643..0000000
Binary files a/latex-workshop/lib/font/twemoji/TwitterColorEmoji-SVGinOT.ttf and /dev/null differ
diff --git a/latex-workshop/lib/highlightjs/highlight.pack.js b/latex-workshop/lib/highlightjs/highlight.pack.js
deleted file mode 100644
index 83ce62f..0000000
--- a/latex-workshop/lib/highlightjs/highlight.pack.js
+++ /dev/null
@@ -1,644 +0,0 @@
-/*!
- Highlight.js v11.6.0 (git: bed790f3f3)
- (c) 2006-2022 undefined and other contributors
- License: BSD-3-Clause
- */
-var hljs=function(){"use strict";var e={exports:{}};function t(e){
-return e instanceof Map?e.clear=e.delete=e.set=()=>{
-throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
-throw Error("set is read-only")
-}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]
-;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e}
-e.exports=t,e.exports.default=t;class n{constructor(e){
-void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
-ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
-return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")
-}function r(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
-;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}
-const s=e=>!!e.scope||e.sublanguage&&e.language;class o{constructor(e,t){
-this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
-this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=""
-;t=e.sublanguage?"language-"+e.language:((e,{prefix:t})=>{if(e.includes(".")){
-const n=e.split(".")
-;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
-}return`${t}${e}`})(e.scope,{prefix:this.classPrefix}),this.span(t)}
-closeNode(e){s(e)&&(this.buffer+="")}value(){return this.buffer}span(e){
-this.buffer+=``}}const a=(e={})=>{const t={children:[]}
-;return Object.assign(t,e),t};class c{constructor(){
-this.rootNode=a(),this.stack=[this.rootNode]}get top(){
-return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
-this.top.children.push(e)}openNode(e){const t=a({scope:e})
-;this.add(t),this.stack.push(t)}closeNode(){
-if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
-for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
-walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
-return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
-t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
-"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
-c._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}
-addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
-addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
-;n.sublanguage=!0,n.language=t,this.add(n)}toHTML(){
-return new o(this,this.options).value()}finalize(){return!0}}function g(e){
-return e?"string"==typeof e?e:e.source:null}function d(e){return p("(?=",e,")")}
-function u(e){return p("(?:",e,")*")}function h(e){return p("(?:",e,")?")}
-function p(...e){return e.map((e=>g(e))).join("")}function f(...e){const t=(e=>{
-const t=e[e.length-1]
-;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
-})(e);return"("+(t.capture?"":"?:")+e.map((e=>g(e))).join("|")+")"}
-function b(e){return RegExp(e.toString()+"|").exec("").length-1}
-const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
-;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
-;let i=g(e),r="";for(;i.length>0;){const e=m.exec(i);if(!e){r+=i;break}
-r+=i.substring(0,e.index),
-i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],
-"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}
-const x="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",O="\\b(0b[01]+)",v={
-begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",
-illegal:"\\n",contains:[v]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
-contains:[v]},M=(e,t,n={})=>{const i=r({scope:"comment",begin:e,end:t,
-contains:[]},n);i.contains.push({scope:"doctag",
-begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
-end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
-;const s=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
-;return i.contains.push({begin:p(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
-},S=M("//","$"),R=M("/\\*","\\*/"),j=M("#","$");var A=Object.freeze({
-__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:w,
-NUMBER_RE:y,C_NUMBER_RE:_,BINARY_NUMBER_RE:O,
-RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
-SHEBANG:(e={})=>{const t=/^#![ ]*\//
-;return e.binary&&(e.begin=p(t,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:t,
-end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
-BACKSLASH_ESCAPE:v,APOS_STRING_MODE:N,QUOTE_STRING_MODE:k,PHRASAL_WORDS_MODE:{
-begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
-},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:R,HASH_COMMENT_MODE:j,
-NUMBER_MODE:{scope:"number",begin:y,relevance:0},C_NUMBER_MODE:{scope:"number",
-begin:_,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:O,relevance:0},
-REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
-end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,
-contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:x,relevance:0},
-UNDERSCORE_TITLE_MODE:{scope:"title",begin:w,relevance:0},METHOD_GUARD:{
-begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
-"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
-t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function I(e,t){
-"."===e.input[e.index-1]&&t.ignoreMatch()}function T(e,t){
-void 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){
-t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
-e.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
-void 0===e.relevance&&(e.relevance=0))}function B(e,t){
-Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function D(e,t){
-if(e.match){
-if(e.begin||e.end)throw Error("begin & end are not supported with match")
-;e.begin=e.match,delete e.match}}function H(e,t){
-void 0===e.relevance&&(e.relevance=1)}const P=(e,t)=>{if(!e.beforeMatch)return
-;if(e.starts)throw Error("beforeMatch cannot be used with starts")
-;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
-})),e.keywords=n.keywords,e.begin=p(n.beforeMatch,d(n.begin)),e.starts={
-relevance:0,contains:[Object.assign(n,{endsParent:!0})]
-},e.relevance=0,delete n.beforeMatch
-},C=["of","and","for","in","not","or","if","then","parent","list","value"]
-;function $(e,t,n="keyword"){const i=Object.create(null)
-;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{
-Object.assign(i,$(e[n],t,n))})),i;function r(e,n){
-t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
-;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
-return t?Number(t):(e=>C.includes(e.toLowerCase()))(e)?0:1}const z={},K=e=>{
-console.error(e)},W=(e,...t)=>{console.log("WARN: "+e,...t)},X=(e,t)=>{
-z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
-},G=Error();function Z(e,t,{key:n}){let i=0;const r=e[n],s={},o={}
-;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=b(t[e-1])
-;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function F(e){(e=>{
-e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
-delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
-_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
-}),(e=>{if(Array.isArray(e.begin)){
-if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
-G
-;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
-G;Z(e,e.begin,{key:"beginScope"}),e.begin=E(e.begin,{joinWith:""})}})(e),(e=>{
-if(Array.isArray(e.end)){
-if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
-G
-;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
-G;Z(e,e.end,{key:"endScope"}),e.end=E(e.end,{joinWith:""})}})(e)}function V(e){
-function t(t,n){
-return RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
-}class n{constructor(){
-this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
-addRule(e,t){
-t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
-this.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
-;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(e,{joinWith:"|"
-}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
-;const t=this.matcherRe.exec(e);if(!t)return null
-;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
-;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){
-this.rules=[],this.multiRegexes=[],
-this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
-if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
-;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
-t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
-return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
-this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
-const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
-;let n=t.exec(e)
-;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
-const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
-return n&&(this.regexIndex+=n.position+1,
-this.regexIndex===this.count&&this.considerAll()),n}}
-if(e.compilerExtensions||(e.compilerExtensions=[]),
-e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
-;return e.classNameAliases=r(e.classNameAliases||{}),function n(s,o){const a=s
-;if(s.isCompiled)return a
-;[T,D,F,P].forEach((e=>e(s,o))),e.compilerExtensions.forEach((e=>e(s,o))),
-s.__beforeBegin=null,[L,B,H].forEach((e=>e(s,o))),s.isCompiled=!0;let c=null
-;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),
-c=s.keywords.$pattern,
-delete s.keywords.$pattern),c=c||/\w+/,s.keywords&&(s.keywords=$(s.keywords,e.case_insensitive)),
-a.keywordPatternRe=t(c,!0),
-o&&(s.begin||(s.begin=/\B|\b/),a.beginRe=t(a.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),
-s.end&&(a.endRe=t(a.end)),
-a.terminatorEnd=g(a.end)||"",s.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),
-s.illegal&&(a.illegalRe=t(s.illegal)),
-s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>r(e,{
-variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?r(e,{
-starts:e.starts?r(e.starts):null
-}):Object.isFrozen(e)?r(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{n(e,a)
-})),s.starts&&n(s.starts,o),a.matcher=(e=>{const t=new i
-;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
-}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
-}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
-return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
-constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
-const Y=i,Q=r,ee=Symbol("nomatch");var te=(t=>{
-const i=Object.create(null),r=Object.create(null),s=[];let o=!0
-;const a="Could not find the language '{}', did you forget to load/include a language module?",c={
-disableAutodetect:!0,name:"Plain text",contains:[]};let g={
-ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
-languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
-cssSelector:"pre code",languages:null,__emitter:l};function b(e){
-return g.noHighlightRe.test(e)}function m(e,t,n){let i="",r=""
-;"object"==typeof t?(i=e,
-n=t.ignoreIllegals,r=t.language):(X("10.7.0","highlight(lang, code, ...args) has been deprecated."),
-X("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
-r=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};k("before:highlight",s)
-;const o=s.result?s.result:E(s.language,s.code,n)
-;return o.code=s.code,k("after:highlight",o),o}function E(e,t,r,s){
-const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(S)
-;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(S),n=""
-;for(;t;){n+=S.substring(e,t.index)
-;const r=y.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,N.keywords[i]);if(s){
-const[e,i]=s
-;if(M.addText(n),n="",c[r]=(c[r]||0)+1,c[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{
-const n=y.classNameAliases[e]||e;M.addKeyword(t[0],n)}}else n+=t[0]
-;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(S)}var i
-;n+=S.substring(e),M.addText(n)}function d(){null!=N.subLanguage?(()=>{
-if(""===S)return;let e=null;if("string"==typeof N.subLanguage){
-if(!i[N.subLanguage])return void M.addText(S)
-;e=E(N.subLanguage,S,!0,k[N.subLanguage]),k[N.subLanguage]=e._top
-}else e=x(S,N.subLanguage.length?N.subLanguage:null)
-;N.relevance>0&&(R+=e.relevance),M.addSublanguage(e._emitter,e.language)
-})():l(),S=""}function u(e,t){let n=1;const i=t.length-1;for(;n<=i;){
-if(!e._emit[n]){n++;continue}const i=y.classNameAliases[e[n]]||e[n],r=t[n]
-;i?M.addKeyword(r,i):(S=r,l(),S=""),n++}}function h(e,t){
-return e.scope&&"string"==typeof e.scope&&M.openNode(y.classNameAliases[e.scope]||e.scope),
-e.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
-S=""):e.beginScope._multi&&(u(e.beginScope,t),S="")),N=Object.create(e,{parent:{
-value:N}}),N}function p(e,t,i){let r=((e,t)=>{const n=e&&e.exec(t)
-;return n&&0===n.index})(e.endRe,i);if(r){if(e["on:end"]){const i=new n(e)
-;e["on:end"](t,i),i.isMatchIgnored&&(r=!1)}if(r){
-for(;e.endsParent&&e.parent;)e=e.parent;return e}}
-if(e.endsWithParent)return p(e.parent,t,i)}function f(e){
-return 0===N.matcher.regexIndex?(S+=e[0],1):(I=!0,0)}function b(e){
-const n=e[0],i=t.substring(e.index),r=p(N,e,i);if(!r)return ee;const s=N
-;N.endScope&&N.endScope._wrap?(d(),
-M.addKeyword(n,N.endScope._wrap)):N.endScope&&N.endScope._multi?(d(),
-u(N.endScope,e)):s.skip?S+=n:(s.returnEnd||s.excludeEnd||(S+=n),
-d(),s.excludeEnd&&(S=n));do{
-N.scope&&M.closeNode(),N.skip||N.subLanguage||(R+=N.relevance),N=N.parent
-}while(N!==r.parent);return r.starts&&h(r.starts,e),s.returnEnd?0:n.length}
-let m={};function w(i,s){const a=s&&s[0];if(S+=i,null==a)return d(),0
-;if("begin"===m.type&&"end"===s.type&&m.index===s.index&&""===a){
-if(S+=t.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)
-;throw t.languageName=e,t.badRule=m.rule,t}return 1}
-if(m=s,"begin"===s.type)return(e=>{
-const t=e[0],i=e.rule,r=new n(i),s=[i.__beforeBegin,i["on:begin"]]
-;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return f(t)
-;return i.skip?S+=t:(i.excludeBegin&&(S+=t),
-d(),i.returnBegin||i.excludeBegin||(S=t)),h(i,e),i.returnBegin?0:t.length})(s)
-;if("illegal"===s.type&&!r){
-const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"")+'"')
-;throw e.mode=N,e}if("end"===s.type){const e=b(s);if(e!==ee)return e}
-if("illegal"===s.type&&""===a)return 1
-;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches")
-;return S+=a,a.length}const y=O(e)
-;if(!y)throw K(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
-;const _=V(y);let v="",N=s||_;const k={},M=new g.__emitter(g);(()=>{const e=[]
-;for(let t=N;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)
-;e.forEach((e=>M.openNode(e)))})();let S="",R=0,j=0,A=0,I=!1;try{
-for(N.matcher.considerAll();;){
-A++,I?I=!1:N.matcher.considerAll(),N.matcher.lastIndex=j
-;const e=N.matcher.exec(t);if(!e)break;const n=w(t.substring(j,e.index),e)
-;j=e.index+n}
-return w(t.substring(j)),M.closeAllNodes(),M.finalize(),v=M.toHTML(),{
-language:e,value:v,relevance:R,illegal:!1,_emitter:M,_top:N}}catch(n){
-if(n.message&&n.message.includes("Illegal"))return{language:e,value:Y(t),
-illegal:!0,relevance:0,_illegalBy:{message:n.message,index:j,
-context:t.slice(j-100,j+100),mode:n.mode,resultSoFar:v},_emitter:M};if(o)return{
-language:e,value:Y(t),illegal:!1,relevance:0,errorRaised:n,_emitter:M,_top:N}
-;throw n}}function x(e,t){t=t||g.languages||Object.keys(i);const n=(e=>{
-const t={value:Y(e),illegal:!1,relevance:0,_top:c,_emitter:new g.__emitter(g)}
-;return t._emitter.addText(e),t})(e),r=t.filter(O).filter(N).map((t=>E(t,e,!1)))
-;r.unshift(n);const s=r.sort(((e,t)=>{
-if(e.relevance!==t.relevance)return t.relevance-e.relevance
-;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
-;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,l=o
-;return l.secondBest=a,l}function w(e){let t=null;const n=(e=>{
-let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
-;const n=g.languageDetectRe.exec(t);if(n){const t=O(n[1])
-;return t||(W(a.replace("{}",n[1])),
-W("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
-return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
-;if(k("before:highlightElement",{el:e,language:n
-}),e.children.length>0&&(g.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
-console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
-console.warn("The element with unescaped HTML:"),
-console.warn(e)),g.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
-;t=e;const i=t.textContent,s=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
-;e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n
-;e.classList.add("hljs"),e.classList.add("language-"+i)
-})(e,n,s.language),e.result={language:s.language,re:s.relevance,
-relevance:s.relevance},s.secondBest&&(e.secondBest={
-language:s.secondBest.language,relevance:s.secondBest.relevance
-}),k("after:highlightElement",{el:e,result:s,text:i})}let y=!1;function _(){
-"loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(w):y=!0
-}function O(e){return e=(e||"").toLowerCase(),i[e]||i[r[e]]}
-function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
-r[e.toLowerCase()]=t}))}function N(e){const t=O(e)
-;return t&&!t.disableAutodetect}function k(e,t){const n=e;s.forEach((e=>{
-e[n]&&e[n](t)}))}
-"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
-y&&_()}),!1),Object.assign(t,{highlight:m,highlightAuto:x,highlightAll:_,
-highlightElement:w,
-highlightBlock:e=>(X("10.7.0","highlightBlock will be removed entirely in v12.0"),
-X("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{g=Q(g,e)},
-initHighlighting:()=>{
-_(),X("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
-initHighlightingOnLoad:()=>{
-_(),X("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
-},registerLanguage:(e,n)=>{let r=null;try{r=n(t)}catch(t){
-if(K("Language definition for '{}' could not be registered.".replace("{}",e)),
-!o)throw t;K(t),r=c}
-r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&v(r.aliases,{
-languageName:e})},unregisterLanguage:e=>{delete i[e]
-;for(const t of Object.keys(r))r[t]===e&&delete r[t]},
-listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
-autoDetection:N,inherit:Q,addPlugin:e=>{(e=>{
-e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
-e["before:highlightBlock"](Object.assign({block:t.el},t))
-}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
-e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)}
-}),t.debugMode=()=>{o=!1},t.safeMode=()=>{o=!0
-},t.versionString="11.6.0",t.regex={concat:p,lookahead:d,either:f,optional:h,
-anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t])
-;return Object.assign(t,A),t})({});return te}()
-;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `javascript` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict"
-;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s)
-;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/,
-end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
-const a=e[0].length+e.index,t=e.input[a]
-;if("<"===t||","===t)return void n.ignoreMatch();let s
-;">"===t&&(((e,{after:n})=>{const a=""+e[0].slice(1)
-;return-1!==e.input.indexOf(a,n)})(e,{after:a
-})||n.ignoreMatch()),(s=e.input.substring(a).match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch()
-}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c
-},u="\\.([0-9](_?[0-9])*)",m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={
-className:"number",variants:[{
-begin:`(\\b(${m})((${u})|\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
-begin:`\\b(${m})\\b((${u})\\b|\\.)?|(${u})\\b`},{
-begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
-begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
-begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
-begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{",
-end:"\\}",keywords:g,contains:[]},y={begin:"html`",end:"",starts:{end:"`",
-returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},N={
-begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
-contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"css"}},_={className:"string",
-begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,A]},f={className:"comment",
-variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
-begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
-begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
-excludeBegin:!0,relevance:0},{className:"variable",begin:b+"(?=\\s*(-)|$)",
-endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
-}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]
-},h=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,E];A.contains=h.concat({
-begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(h)})
-;const v=[].concat(f,A.contains),p=v.concat([{begin:/\(/,end:/\)/,keywords:g,
-contains:["self"].concat(v)}]),S={className:"params",begin:/\(/,end:/\)/,
-excludeBegin:!0,excludeEnd:!0,keywords:g,contains:p},w={variants:[{
-match:[/class/,/\s+/,b,/\s+/,/extends/,/\s+/,l.concat(b,"(",l.concat(/\./,b),")*")],
-scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{
-match:[/class/,/\s+/,b],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,
-match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
-className:"title.class",keywords:{_:[...t,...s]}},O={variants:[{
-match:[/function/,/\s+/,b,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],
-className:{1:"keyword",3:"title.function"},label:"func.def",contains:[S],
-illegal:/%/},k={
-match:l.concat(/\b/,(I=[...r,"super"],l.concat("(?!",I.join("|"),")")),b,l.lookahead(/\(/)),
-className:"title.function",relevance:0};var I;const x={
-begin:l.concat(/\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b,
-excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},T={
-match:[/get|set/,/\s+/,b,/(?=\()/],className:{1:"keyword",3:"title.function"},
-contains:[{begin:/\(\)/},S]
-},C="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",M={
-match:[/const|var|let/,/\s+/,b,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(C)],
-keywords:"async",className:{1:"keyword",3:"title.function"},contains:[S]}
-;return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{
-PARAMS_CONTAINS:p,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,
-contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{
-label:"use_strict",className:"meta",relevance:10,
-begin:/^\s*['"]use (strict|asm)['"]/
-},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,f,E,R,{className:"attr",
-begin:b+l.lookahead(":"),relevance:0},M,{
-begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
-keywords:"return throw case",relevance:0,contains:[f,o.REGEXP_MODE,{
-className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{
-className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{
-className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,
-excludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,
-relevance:0},{variants:[{begin:"<>",end:">"},{
-match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin,
-"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{
-begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},O,{
-beginKeywords:"while if switch catch for"},{
-begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
-returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:b,
-className:"title.function"})]},{match:/\.\.\./,relevance:0},x,{match:"\\$"+b,
-relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
-contains:[S]},k,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
-className:"variable.constant"},w,T,{match:/\$[(.]/}]}}})()
-;hljs.registerLanguage("javascript",e)})();/*! `bash` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/,
-end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{
-className:"variable",variants:[{
-begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={
-className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={
-begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,
-end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,
-contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$\(\(/,
-end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]
-},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10
-}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,
-contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{
-name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,
-keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],
-literal:["true","false"],
-built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]
-},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{
-className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})()
-;hljs.registerLanguage("bash",e)})();/*! `shell` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session",
-aliases:["console","shellsession"],contains:[{className:"meta.prompt",
-begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,
-subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `java` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict"
-;var e="\\.([0-9](_*[0-9])*)",a="[0-9a-fA-F](_*[0-9a-fA-F])*",n={
-className:"number",variants:[{
-begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
-},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{
-begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{
-begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
-},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{
-begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],
-relevance:0};function s(e,a,n){return-1===n?"":e.replace(a,(t=>s(e,a,n-1)))}
-return e=>{
-const a=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",i=t+s("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),r={
-keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed"],
-literal:["false","true","null"],
-type:["char","boolean","long","float","int","byte","short","double"],
-built_in:["super","this"]},l={className:"meta",begin:"@"+t,contains:[{
-begin:/\(/,end:/\)/,contains:["self"]}]},c={className:"params",begin:/\(/,
-end:/\)/,keywords:r,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0}
-;return{name:"Java",aliases:["jsp"],keywords:r,illegal:/<\/|#/,
-contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,
-relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{
-begin:/import java\.[a-z]+\./,keywords:"import",relevance:2
-},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,
-className:"string",contains:[e.BACKSLASH_ESCAPE]
-},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
-match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{
-1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{
-begin:[a.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type",
-3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword",
-3:"title.class"},contains:[c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
-beginKeywords:"new throw return else",relevance:0},{
-begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{
-2:"title.function"},keywords:r,contains:[{className:"params",begin:/\(/,
-end:/\)/,keywords:r,relevance:0,
-contains:[l,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE]
-},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,l]}}})()
-;hljs.registerLanguage("java",e)})();/*! `c` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{
-contains:[{begin:/\\\n/}]
-}),s="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={
-className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{
-match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{
-begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
-begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
-end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
-begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={
-className:"number",variants:[{begin:"\\b(0b[01']+)"},{
-begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
-},{
-begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
-}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
-keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
-},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"string"}),{
-className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={
-className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0
-},d=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={
-keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],
-type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],
-literal:"true false NULL",
-built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"
-},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{
-begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
-keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u,
-contains:g.concat(["self"]),relevance:0}]),relevance:0},p={
-begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
-keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
-keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{
-className:"title.function"})],relevance:0},{relevance:0,match:/,/},{
-className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,
-contains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\(/,end:/\)/,keywords:u,
-relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}]
-},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u,
-disableAutodetect:!0,illegal:"",contains:[].concat(m,p,g,[o,{
-begin:e.IDENT_RE+"::",keywords:u},{className:"class",
-beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{
-beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o,
-strings:i,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `latex` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict";return e=>{const n=[{begin:/\^{6}[0-9a-f]{6}/},{
-begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/},{begin:/\^{3}[0-9a-f]{3}/
-},{begin:/\^{2}[0-9a-f]{2}/},{begin:/\^{2}[\u0000-\u007f]/}],a=[{
-className:"keyword",begin:/\\/,relevance:0,contains:[{endsParent:!0,
-begin:e.regex.either(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])")))
-},{endsParent:!0,
-begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|"))
-},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{
-begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0,
-begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{
-className:"meta",begin:/% ?!(T[eE]X|tex|BIB|bib)/,end:"$",relevance:10
-},e.COMMENT("%","$",{relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,
-contains:["self",...a]},t=e.inherit(i,{relevance:0,endsParent:!0,
-contains:[i,...a]}),r={begin:/\[/,end:/\]/,endsParent:!0,relevance:0,
-contains:[i,...a]},s={begin:/\s+/,relevance:0},c=[t],l=[r],o=(e,n)=>({
-contains:[s],starts:{relevance:0,contains:e,starts:n}}),d=(e,n)=>({
-begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/,keyword:"\\"+e
-},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({
-begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{
-$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0
-},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/,
-end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({
-className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0,
-begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/,
-endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]}
-});return{name:"LaTeX",aliases:["tex"],
-contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{
-contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{
-contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")]
-}),d("href",o(l,{contains:[p("link")]
-})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a]
-}}})();hljs.registerLanguage("latex",e)})();/*! `xml` grammar compiled for Highlight.js 11.6.0 */
-(()=>{var e=(()=>{"use strict";return e=>{
-const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={
-className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},t={begin:/\s/,
-contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
-},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{
-className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={
-endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",
-begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
-className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{
-begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
-name:"HTML, XML",
-aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
-case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{
-className:"meta",begin://,contains:[t,i,l,c]}]}]
-},e.COMMENT(//,{relevance:10}),{begin://,
-relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,
-relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",
-begin:/