Prof. Dr.-Ing. Oliver Radfelder
Informatik / Wirtschaftsinformatik
Hochschule Bremerhaven
Kurz und Knapp: LaTeX

Loggen Sie sich auf hopper ein. Öffnen Sie den Editor vim mit dem Dateinamen dokument.tex.

$ vim dokument.tex
und geben Sie langsam und mit korrekter Formatierung den folgenden ersten LaTeX-Code ein:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}

\begin{document}
Hello World
\end{document}

Verlassen Sie den Editor, übersetzen Sie das Dokument mit latexmk und kopieren Sie das resultierende pdf-Dokument in Ihr Webverzeichnis:

$ latexmk dokument.tex && cp dokument.pdf /var/www/html/IHR-ACCOUNT/ 

Mit dem Browser finden Sie dann das Dokument unter https://informatik.hs-bremerhaven.de/IHR-ACCOUNT/dokument.pdf

Ihr Dokument strukturieren Sie mit \section{..} und \subsection{..}. Ein Inhaltsverzeichnis erzeugen Sie mit dem Kommando \tableofcontents

\documentclass[parskip=half]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{lmodern}

\begin{document}
\tableofcontents
\section{Ein Abschnitt}

Hello World
\section{Noch ein Abschnitt}
text text text

\subsection{Unterabschnitt}
text text text

\subsection{Noch ein Unterabschnitt}
text text text

\end{document}

Grafiken binden Sie mit dem Paket graphicx ein, das vor dem Dokumentenbeginn importiert wird, und dem Befehl \includegraphics[width=\linewidth]{thecircle.png}.

\documentclass[parskip=half]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=\linewidth]{thecircle.png}
\end{document}

Einfache Tabellen können Sie mit einer tabular-Umgebung einbinden, in der die Einträge mit einem kaufmännischen Und-Zeichen getrennt werden und die Zeilen mit einem doppelten Backslash beendet werden. Als Argument findet sich noch die jeweilige Ausrichtung der Spalten als einzelne Buchstaben (l, c oder r für left, center oder right) in geschweiften Klammern nach dem Öffnen der Umgebung:

\documentclass[parskip=half]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage{booktabs}
\begin{document}

\begin{tabular}{lcr}
 Spalte 1 &  Spalte 2 & Spalte 3\\
Linksbündig & Zentriert & Rechtsbündig\\
linksbündig & zentriert & rechtsbündig\\
\end{tabular}

\end{document}

Wenn Sie dynamisch im Docker-Container ein pdf erzeugen wollen, denken Sie daran, dass das der User www-data durchführt. Sie sollten also in einem jeweils neuen Verzeichnis arbeiten. Denn es kann durchaus sein, dass mehrere Prozesse gleichzeitig laufen. Um gegenseitige Beeinflussung auszuschließen, ist die Umgebungsvariable $$ - die aktuelle Prozess-ID - hilfreich. Zudem sollten Sie dafür sorgen, dass latexmk auch bei Fehlern ohne zu warten durchläuft:

#!/bin/bash
echo "Content-Type: application/pdf"
echo
# Home wird im cgi-Kontext nicht gesetzt,
# daher muss hier TEXMFVAR explizit auf ein
# schreibbares Verzeichnis gesetzt werden
export TEXMFVAR=/var/www/

mkdir -p /tmp/latex-$$ && rm -rf /tmp/latex-$$/*
cp -r /var/www/html/latextemplate/* /tmp/latex-$$
cd /tmp/latex-$$

latexmk -interaction=nonstopmode doc.tex &> latexmk.log
cat doc.pdf

rm -rf /tmp/latex-$$

Aber Achtung: LaTeX ist eine Turing-vollständige Sprache. Es gibt also jede Menge Tricks, um auf Dateien zuzugreifen oder sogar zu schreiben. Wenn Sie also Eingaben aus dem Web entgegennehmen, um sie in das LaTeX-Dokument zu integrieren, kommt eine Menge Arbeit auf Sie zu. Unter Links finden Sie "hacking with latex" - dort sollten Sie einmal hineinschauen. Das Zauberwort ist wie so häufig Whitelisting ...

Für die Abgaben in vielen Veranstaltungen wird bei uns an der Hochschule erwartet, dass Ihr mit LaTeX arbeitet. Wir haben gemeinsam mit Fabian Lignitz eine Vorlage erstellt für Abgaben und Poster. In den Links findet Ihr den Verweis auf die aktuelle Version.

Links