\chapter{\latex im Detail}

\section{Post-Installation von \TeX Live in Linux}

Nach der Installation muss man den \verb:PATH:-Variable anpassen:
In der Datei \verb:$HOME/.profile: folgendes ergänzen:

\begin{minted}{bash}
TEX_HOME="/usr/local/texlive/2020"
if [ -d $TEX_HOME ] ; then    
    PATH=$TEX_HOME/bin/x86_64-linux:$PATH
    MANPATH="${TEX_HOME}/texmf/doc/man":$MAN_PATH
    INFOPATH="${TEX_HOME}/texmf/doc/info":$INFOPATH
    export PATH
    export MANPATH
    export INFOPATH
fi
\end{minted}

Wobei die Variable \verb:$TEX_HOME: ist der Ordner wo die \TeX Live installiert sind.
Die Abbildung~\ref{fig:tl-structure} zeigt den Inhalt des Ordner \verb:$TEX_HOME:.

\begin{figure}[t]
  \centering
  \includegraphics{img/tl-dir.png}
  \caption{Ordner-Struktur von \TeX Live Installation}
  \label{fig:tl-structure}
\end{figure}

\TeX Live bietet ein sehr detailliertes Dokument-System. Um die Dokumentation eines Paket
aufzurufen muss man nur den Befehl 

\begin{minted}{bash}
texdoc <paket-name>
\end{minted}

in der Konsole oder Termin absetzen. Zum Beispiel: Der Befehl

\begin{minted}{bash}
texdoc biblatex
\end{minted}

zeigt die Anleitung der Paket \verb:biblatex: an. Der Befehl \verb:texdoc: funktioniert
zuverlässig in Linux und MacOS. In Windows weiß ich leider nicht.

\section{Code Auszug}

Code Auszug spielt in Dokumentation in der Informatik eine wichtige Rolle. In \latex 
hat man viel Möglichkeiten, Code Auszug zu setzen. Die einfachste Möglichkeit
ist, die eingebaute Umgebung \texttt{verbatim} zu nutzen. Diese Umgebung
druckt den Inhalt wie die Source Code in PDF Ausgabe:


\begin{verbatim}
Hier Ist der Code Auszüge!!!
\end{verbatim}

Ein weitere Möglichkeit ist das Paket \verb:listings:. Das Paket \verb:listings: 
in vollständig in \TeX implementiert. Es bedeutet dass man kein zusätzliche Software
braucht um das Paket zu benutzen. Der Nachteil ist, das Paket \verb:listings: bietet
eine sehr überschaubares Anzahl von Lexer. Die Seite~\autocite{wikibooks:Source_Code_Listings}
bietet eine gutes Tutorium im Bezug auf das Paket \verb:listings: an.

Im Gegensatz zum Paket \verb:listings: benutzt das Paket \verb:minted: das external Lexer-Programm
Pygmentize um die Token in Code-Auszug zu klassifizieren. Das Paket \verb:minted: setzt voraus,
dass das Lexer-Programm Pygmentize bereits in System installiert ist. Das Programm Pygmentize 
kann man in \url{http://pygments.org/} finden. Da das Programm in Python geschrieben ist, muss man 
den Python-Interpreter auch im System installieren. In ein Debian-basiertes Linux-System kann man 
die Installation in einem Befehl erledigen:

\begin{minted}{bash}
sudo aptitude install python-pygments
\end{minted}

In Windows muss man zuerst den Python-Interpreter installieren, dann das Python-Paket Pygments
installieren. Hier wäre eine Hausaufgabe für die Informatik-Studenten.

\section{Makefile}

Man kann das Programm make benutzen um den Compilierungsprozess von \latex-Dateien, die Bib-Dateien
in PDF-Datei zu automatisieren. Ein Makefile Template sieht etwa so aus:

\begin{minted}{makefile}
#latex compiler
LATEX = lualatex
LATEX_OPT :=-shell-escape -interaction=nonstopmode --synctex=1

#bibtex
BIBTEX := biber
BIBTEX_OPT := 

# latexmk setting
LATEXMK = latexmk
LATEXMK_OPT :=
LATEXMK_INTERACTIVE_OPT := -pvc

# interactive TARGET
INTERACTIVE_TARGET = zusammenfassung.pdf

########################################################
# file variables 
pdf = zusammenfassung.pdf
main_tex = zusammenfassung.tex
chapter = $(wildcard chap/*.tex)


.PHONY: all
all: $(pdf)


$(pdf): $(main_tex)
        $(LATEX) $(LATEX_OPT) $<
        $(BIBTEX) $(BIBTEX_OPT) $(<:.tex=)
        $(LATEX) $(LATEX_OPT) $<
        $(LATEX) $(LATEX_OPT) $<

$(main_tex): $(chapter)
        touch $@


.PHONY: interactive
interactive: $(INTERACTIVE_TARGET)
        $(LATEXMK) $(LATEXMK_INTERACTIVE_OPT) $(<:.pdf=.tex)

.PHONY: mostlyclean clean
mostlyclean:
        rm -fv *.aux *.out *.bbl *.blg *.pytxcode *.toc *.nav 
        rm -rf *.bcf *.log *.run.xml *.snm *.vrb *.synctex.gz
        rm -fv chap/*.aux

clean:
        make mostlyclean
        rm -fv *.pdf
        rm -rfv pythontex-files-*
        rm -rfv _minted-*
        rm -rf *.fdb_latexmk *.fls
\end{minted}

Der Makefile-Template geht davon aus, dass die Hauptdatei \texttt{zusammenfassung.tex} ist,
die einzelnen Kapitel werden im Unterordner \texttt{chap}.


\section{Konfiguration von anderen \latex Editoren}

\subsection{Texmaker}

\begin{enumerate}
  \item \menu{Optionen} → \menu{Texmaker Konfigurieren}
  \item \menu{Befehle} →
  \begin{enumerate}
    \item \menu{PdfLaTeX}: \verb:lualatex -shell-escape -synctex=1 -interaction=nonstopmode %.tex: 
    \item \menu{Bib(la)tex}:	 \verb:biber %:
  \end{enumerate}
  \item \menu{Schnelles Übersetzen} → \menu{PdfLaTeX + PDF anzeigen}
\end{enumerate}
