latex-workshop/workshop.tex

360 lines
12 KiB
TeX

\documentclass[presentation,aspectratio=169]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\graphicspath{{./graphics/}}
\usepackage[ngerman]{babel}
\usepackage{longtable,capt-of,fvextra,csquotes}
\usepackage{wrapfig,rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath,amssymb}
\usepackage{hyperref}
\usepackage{listings,minted}
\usepackage[duration=20]{pdfpc}
\usetheme{metropolis}
\author{Julius Freudenberger}
\date{Hackathon Sommersemester 2022}
\title{WYSIWYAF with \LaTeX}
\mode<presentation>{\usetheme{metropolis}}
\mode<beamer|handout>{\metroset{sectionpage=progressbar}}
\mode<beamer|handout>{\metroset{subsectionpage=progressbar}}
\mode<beamer|handout>{\metroset{block=fill}}
\institute[Hochschule Esslingen]{Hochschule Esslingen}
\hypersetup{
pdfauthor={Julius Freudenberger},
pdftitle={WYSIWYAF with LaTeX},
pdfkeywords={},
pdfsubject={},
pdflang={German}}
\usepackage{biblatex}
\begin{document}
\maketitle
\begin{frame}[fragile]{Bevor wir beginnen: Was brauche ich?}
\begin{itemize}
\item \LaTeX-Distribution: \TeX{}Live
\begin{itemize}
\item Windows: \href{https://tug.org/texlive/windows.html}{https://tug.org/texlive/windows.html} %TODO MikTeX?
\item Mac: \href{https://tug.org/mactex/}{https://tug.org/mactex/}
\item Linux: Installation über den Paketmanager
\begin{itemize}
\item deb: \verb|texlive-base| (deb), \verb|texlive texlive-latex| (rpm)
\item Arch Linux: \verb|texlive-core|
\item NixOS: \verb|nixpkgs.texlive.combined.scheme-basic|
\end{itemize}
\item Docker: \verb|texlive/texlive|
\end{itemize}
\item Texteditor
\begin{itemize}
\item VSCode mit \LaTeX-Workshop, vim mit vimtex
\item \TeX{}Maker
\end{itemize}
\item Alternativ: Online-Editoren
\begin{itemize}
\item Overleaf (\href{https://www.overleaf.com}{https://www.overleaf.com}, Registrierung erforderlich)
\item \TeX{}Viewer (\href{https://texviewer.herokuapp.com}{https://texviewer.herokuapp.com}, direkt nutzbar)
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Was ist \LaTeX?}
\pdfpcnote{ - Entwicklung seit Anfang der 1980er
- What you see is what you get --> What you see is what you asked for}
\begin{itemize}
\item Textsatzsystem
\item setzt vorgegebenen Text und weitere Anweisungen automatisch
\item versucht automatisch bestmögliches Layout
\item kein WYSIWYG, sondern WYSIWYAF
\item Quellcode wird \glqq{}kompiliert\grqq{}
\item Dokument wird als PDF, PS, DVI oder sogar HTML ausgegeben
\end{itemize}
\end{frame}
\begin{frame}{Warum \LaTeX?}
\pdfpcnote{ Vergleich zu Word
- schöner Blocksatz, bestmögliche Zeilenumbrüche und Worttrennungen
- Inhaltsverzeichnis und Verzeichnisse für Abbildungen, Stichworte, Abkürzungen und Literatur
- Abbildungen und weitere Referenzelemente werden automatisch an der bestmöglichen Stelle eingefügt
- Deutlich mehr Automatisierungen als bei Word, "Layoutarbeit" am Ende einer Arbeit deutlich geringer}
\begin{itemize}
\item Automatischer Textsatz
\item Automatische Referenzen
\item Automatisches Layout
\end{itemize}
\end{frame}
\begin{frame}{Wie sieht \LaTeX-Code aus?}
\pdfpcnote{
- Befehle werden mit \ angegeben
- Parameter mit {}
- Einrückung hilft bei Lesbarkeit, ist nicht notwendig
- Beginn und Ende
- normaler Text
}
\inputminted{latex}{codebeispiele/beispiel.tex}
\end{frame}
\begin{frame}{Grundlegender Aufbau}
\pdfpcnote{
- Dokumentenklasse (book, article, beamer)
- Präambel
- Metadaten (Titel, Autor, Datum)
- Zusätzliche Pakete
- Einstellungen
- Eigentliches Dokument
}
\inputminted{latex}{codebeispiele/aufbau.tex}
\end{frame}
\begin{frame}{Vorlage herunterladen}
\begin{itemize}
\item \href{https://www2.hs-esslingen.de/~jufrit00/latex/}{https://www2.hs-esslingen.de/\textasciitilde{}jufrit00/latex/}
\item \href{https://gitlab.hs-esslingen.de/jufrit00/latex-workshop}{https://gitlab.hs-esslingen.de/jufrit00/latex-workshop}
\item \href{https://github.com/JuliusFreudenberger/latex-workshop}{https://github.com/JuliusFreudenberger/latex-workshop}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Projekt kompilieren}
\begin{itemize}
\item Im Projektverzeichnis \verb|pdflatex file.tex|
\item automatisierter mit \verb|latexmk -pdf file.tex|
\item In \TeX{}Maker \glqq{}Schnelles Übersetzen\grqq{}
\item mittels Docker und Docker Compose: %TODO
\item Outputfile \verb|file.pdf| als PDF-Datei im gleichen Verzeichnis
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Erste eigene Änderungen}
\pdfpcnote{
- Stärke von LaTeX: Änderungen wirken sich konsistent auf das gesamte Dokument aus.
- Keine manuelle Anpassung an mehreren Stellen nötig.
- Niedrigste Stufe: subsubsection
- Bei Text am Besten ein Satz in eine Zeile.
}
\begin{itemize}
\item Eigener Text, Absätze
\item Textformatierung: \textbf{fett} und \textit{kursiv} mit \verb|\textbf{fett}|, \verb|\textit{kursiv}|
\item Eigene Abschnitte mit \verb|\section{} und \subsection{}|
\item Metadaten ändern
\begin{itemize}
\item Titel des Dokuments ändern mit \verb|\title{}|
\item Eigener Name als Autor mit \verb|\author{}|
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Umgebungen}
\begin{itemize}
\item kennzeichnen besondere Bereiche im Dokument
\item beginnen mit \verb|\begin{}| und enden mit \verb|\end{}|
\item können verschachtelt werden, aber nicht geschnitten
\item Aufzählungen \verb|enumerate| (nummeriert) und \verb|itemize| (unnummeriert)
\end{itemize}
\begin{center}
\centering
\begin{minted}{latex}
\begin{itemize}
\item Erster Punkt
\item Zweiter Punkt
\end{itemize}
\end{minted}
\end{center}
\end{frame}
\begin{frame}[fragile]{Wichtige besondere Zeichen}
\begin{tabular}{c|c|c}
Schrägstrich & \textbackslash & \verb|\textbackslash| \\
\hline
Tilde & \textasciitilde & \verb|\textasciitilde| \\
\hline
geschütztes Leerzeichen (ohne Zeilenumbruch) & ~ & \verb|~| \\
\hline
schmales geschütztes Leerzeichen & z.\,B. & \verb|z.\,B.| \\
\hline
Gedankenstrich (Halbgeviertstrich) & -- & \verb|--| \\
\hline
Geviertstrich & --- & \verb|---|
\end{tabular}
\end{frame}
\begin{frame}[fragile]{Verweise}
\begin{itemize}
\item Label setzen: \verb|\label{<name>}|
\item Abschnitt referenzieren: \verb|\ref{<name>}|
\item Seite referenzieren: \verb|\pageref{<name>}|
\item Referenz nutzt immer aktuellste Abschnittnummer und Seitenzahl
\item zur Aktualisierung doppelte Durchläufe notwendig
\end{itemize}
\end{frame}
\begin{frame}{Mathematik}
\begin{itemize}
\item \TeX{} ist für seine gute Formeleingabe bekannt
\item verschiedene Modi, in denen Formeln gesetzt werden können
\begin{itemize}
\item inline
\item Block
\item Gleichung
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Mathematik --- inline}
\begin{itemize}
\item setzt die Gleichung in einen Fließtext ein
\item keine Referenzierung
\item Beginn und Ende mit \verb|$|
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/math-inline}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/math-inline.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Mathematik --- block}
\begin{itemize}
\item setzt die Gleichung als Block mit Absätzen
\item keine Referenzierung
\item Beginn mit \verb|\[|, Ende mit \verb|\]|
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/math-block}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/math-block.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Mathematik --- Gleichung}
\begin{itemize}
\item setzt die Gleichung als Block mit Absätzen
\item Referenzierung über Nummerierung
\item Beginn mit \verb|\begin{equation}| Ende mit \verb|\end{equation}|
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/math-equation}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/math-equation.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Abbildungen und Graphiken}
\begin{itemize}
\item Paket \verb|graphicx|
\item Unterstützung von jpg, png und pdf, Dateiendung kann weggelassen werden
\item Höhe und Breite als optionale Parameter
\begin{itemize}
\item \verb|\textwidth| oder \verb|textheight|
\end{itemize}
\item
\begin{minted}{latex}
\includegraphics[width=.5\textwidth]{<filename>}
\end{minted}
\end{itemize}
\begin{center}
\includegraphics[height=.5\textheight]{katze}
\end{center}
\end{frame}
\begin{frame}{Graphiken als Gleitobjekt}
\begin{itemize}
\item Automatische Positionierung im Text
\item Referenzierung mit Nummerierung über Label
\end{itemize}
\begin{minipage}[c]{.4\textwidth}
\input{codebeispiele/graphics-figure}
\end{minipage}
\hfill
\begin{minipage}[c]{.5\textwidth}
\inputminted{latex}{codebeispiele/graphics-figure.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Codelistings}
\begin{itemize}
\item Abdrucken von Codezeilen
\item Syntaxhighlighting und Zeilennummern
\item mögliche Pakete
\begin{itemize}
\item \verb|verbatim|
\item \verb|listings|
\item \verb|minted|
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Die verbatim-Umgebung}
\begin{itemize}
\item kein Syntaxhighlighting und Zeilennummern
\item Monospacefont
\item Befehle werden nicht ausgeführt
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/listings-verbatim.tex}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/listings-verbatim.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Die lstlistings-Umgebung}
\begin{itemize}
\item Syntaxhighlighting bestimmter Sprachen und Zeilennummern
\item Customization mit Schriftgröße und Farben
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/listings-lstlistings.tex}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/listings-lstlistings.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Die minted-Umgebung}
\begin{itemize}
\item Syntaxhighlighting vieler Sprachen
\item Farben direkt voreingestellt
\item benötigt \verb|pygmentize| und \verb|shell-escape|-Option beim Kompilieren
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/listings-minted.tex}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/listings-minted.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Code aus Datei einbinden}
\begin{itemize}
\item besonders geeignet für längere Codeauszüge
\end{itemize}
\begin{minipage}{.4\textwidth}
\input{codebeispiele/listings-from-file.tex}
\end{minipage}
\hfill
\begin{minipage}{.5\textwidth}
\inputminted{latex}{codebeispiele/listings-from-file.tex}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{Weitere Verzeichnisse}
\begin{itemize}
\item automatisch aktualisierendes Inhaltsverzeichnis sowie Verzeichnisse für Abbildungen, Codelistings (Abkürzungen, Stichwörter, Bibliographie, \dots)
\end{itemize}
\inputminted{latex}{codebeispiele/list-of-everything.tex}
\end{frame}
\end{document}