latex, beamer tikz und co.liinthw/vl-latex-co/k-11-algs-folien.pdflatex, beamer, tikz und co. 11....
TRANSCRIPT
LATEX, beamer, tikz und Co.
LATEX, beamer, tikz und Co.
11. �elltexte und Algorithmen
Thomas Worsch
Fakultät für Informatik
Karlsruher Institut für Technologie
Wintersemester 2017/2018
1 / 24
�elltexte und Algorithmen
man unterscheide den Textsatz von
I �elltexten in einer formalen Sprache
I for (i=0; i<n; i++)I Algorithmen in Pseudocode-Notation
I for i ← 0 to n − 1 do
2 / 24
�elltexte und Algorithmen
Wörtliches
Zwischen �elltext und Pseudocode
Pakete (nur) für Pseudocode
3 / 24
�elltexte und Algorithmen
Wörtliches
Überblick
Wörtliches
Zwischen �elltext und Pseudocode
Pakete (nur) für Pseudocode
4 / 24
�elltexte und Algorithmen
Wörtliches
Eingebautes in LATEX
I Kommando verbI Umgebung verbatimI Umgebung alltt aus gleichnamigem Paket
5 / 24
�elltexte und Algorithmen
Wörtliches
Kommando \verb
I \verb〈char〉〈text〉〈char〉\verb*〈char〉〈text〉〈char〉
I Begrenzung vorne und hinten durch gleiches Zeichen 〈char〉I nicht *I nicht Leerzeichen
I Beispiele:
\verb|$!@#{}^ _ \verb| $!@#{}^ _ \verb
\verb*|$!@#{}^ _ \verb| $!@#{}^␣_␣\verb
6 / 24
�elltexte und Algorithmen
Wörtliches
Umgebung verbatim
I analog \verb ohne und mit *:
\begin{verbatim}〈Rumpf 〉
\end{verbatim}
\begin{verbatim*}〈Rumpf 〉
\end{verbatim*}I Beispiel
\begin{verbatim}
@^#%&*!@^$%\verb|$%^|
\end{verbatim}
7 / 24
�elltexte und Algorithmen
Wörtliches
Paket und Umgebung allttI analog Umgebung verbatim, aber
I Zeichen \, { und } behalten ihre Bedeutung
I Beispiel
\begin{alltt}das ist \emph{betont}das nicht math mode $x^3$aber das \(x\sp{3}\)und dies ist \color{red} rot
\end{alltt}
das ist betontdas nicht math mode $x^3$aber das x3
und dies ist rot
8 / 24
�elltexte und Algorithmen
Wörtliches
Paket fancyvrbI viele zusätzliche Möglichkeiten
siehe Doku
I \VerbatimInput{〈Dateiname〉}I Beispiel
\VerbatimInput{imin.c}
int i, xmin, imin;imin = 0;xmin = A[imin];for (i=1; i<n; i++) {
if (A[i]<xmin) {imin = i;xmin = A[imin];
}}
9 / 24
�elltexte und Algorithmen
Wörtliches
Paket newverbs
I für Definition von Varianten von \verb, die
automatisch vor und/oder hinter dem verb-Teil
LATEX-Code einfügen
I zwei vordefinierte Beispiele
I \qverb〈char〉〈text〉〈char〉I \qverb|a^{12}| : ‘a^{12}’
I \fverb〈char〉〈text〉〈char〉I \fverb|a^{12}| : a^{12}
10 / 24
�elltexte und Algorithmen
Wörtliches
listings: Algorithmen
I wie wirds genutzt:
I Kommando \lstinlineI Umgebung lstlistingI Kommando \lstinputlisting
I was wird gemacht:
I der Eingabetext wird geparst und alles in eine der folgenden
Schubladen gepackt:
I keyword explizit definiert, mehrere Typen möglich
I string explizit definiert
I comment explizit definiert
I identifier der Rest
I fertige Definitionen für viele Programmiersprachen
I kann aber auch für Pseudocode benutzt werden:
http://tex.stackexchange.com/questions/31328/how-to-typeset-data-structures
11 / 24
�elltexte und Algorithmen
Wörtliches
listings: Grausamkeiten
I per default grausames Spacing:
\begin{lstlisting}float pi=3.14, f, r=25.4;f = pi*r*r; /* die Fläche */
\end{lstlisting}
f l o a t p i = 3 . 1 4 , f , r = 2 5 . 4 ;
f = p i ∗ r ∗ r ; / ∗ d i e F l c h e ∗ /
I UTF-8 funktioniert nicht einfach so
I Paket listingsutf8
12 / 24
�elltexte und Algorithmen
Wörtliches
listings: Grausamkeiten
I per default grausames Spacing:
\begin{lstlisting}float pi=3.14, f, r=25.4;f = pi*r*r; /* die Fläche */
\end{lstlisting}
f l o a t p i = 3 . 1 4 , f , r = 2 5 . 4 ;
f = p i ∗ r ∗ r ; / ∗ d i e F l c h e ∗ /
I UTF-8 funktioniert nicht einfach so
I Paket listingsutf8
12 / 24
�elltexte und Algorithmen
Wörtliches
listings: grausames Spacing beseitigen
\begin{lstlisting}[columns=flexible]float pi = 3.14, f, r = 25.4;f = pi * r * r; /* die Fläche */
\end{lstlisting}
float pi = 3.14, f , r = 25.4;
f = pi ∗ r ∗ r ; /∗ die Flche ∗/
13 / 24
�elltexte und Algorithmen
Wörtliches
listings: grausames Spacing beseitigen (2)
\begin{lstlisting}[columns=fullflexible]float pi = 3.14, f, r = 25.4;f = pi * r * r; /* die Fläche */
\end{lstlisting}
float pi = 3.14, f, r = 25.4;
f = pi ∗ r ∗ r; /∗ die Flche ∗/
14 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Überblick
Wörtliches
Zwischen �elltext und Pseudocode
Pakete (nur) für Pseudocode
15 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Paket minted
I erfordert Installation des pygments Pakets für python
I LATEX-Binary muss weiteren Prozess starten dürfen
I TEXLive: pdflatex -shell-escape . . .
I Miktex: die Option heißt wohl -enable-write18
I in der Präambel \usepackage{minted}I im Rumpf
I Kommando \mintI Umgebung mintedI Kommando \inputminted
16 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Paket minted
I \mint{[〈options〉]〈language〉}〈char〉〈text〉〈char〉I \begin{minted}{[〈options〉]〈language〉}
〈text〉\end{minted}
I \inputminted[〈options〉]{〈language〉}{〈filename〉}
I die Optionen kommen überwiegend von fancyvrb
17 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Paket minted — ein Beispiel
C �elle, mit minted gesetzt
float pi = 3.14, f, r = 25.4;f = pi * r * r ; /* die Fläche */
18 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Paket minted — ein Beispiel
C �elle, mit listings gesetzt
float pi = 3.14, f, r = 25.4;f = pi * r * r ; /* die Flche */
19 / 24
�elltexte und Algorithmen
Zwischen �elltext und Pseudocode
Paket minted — ein Beispiel
C �elle, mit listingsutf8 gesetzt
float pi = 3.14, f, r = 25.4;f = pi * r * r ; /* die Fläche */
20 / 24
�elltexte und Algorithmen
Pakete (nur) für Pseudocode
Überblick
Wörtliches
Zwischen �elltext und Pseudocode
Pakete (nur) für Pseudocode
21 / 24
�elltexte und Algorithmen
Pakete (nur) für Pseudocode
Pakete für Pseudocode gibt es viele
I clrscode bzw. clrscode3eI algorithm2eI weitere . . .
22 / 24
�elltexte und Algorithmen
Pakete (nur) für Pseudocode
clrscode bzw. clrscode3e
I Algorithmennotation wie in Introduction to Algorithmsvon Cormen, Leiserson, Rivest und Stein
I \usepackage{clrscode}I wie in zweiter Auflage von CLRS
I \usepackage{clrscode3e}I wie in dri�er Auflage von CLRS
I Unterschiede Geschmackssache
23 / 24
�elltexte und Algorithmen
Pakete (nur) für Pseudocode
clrscode3e: Umgebung codebox\begin{codebox}
\Procname{$\proc{Foo-Sort}(A)$}\li \For $j \gets 2$ \To $\id{length}[A]$ \Do\li $\id{key} \gets A[j]$\li \Comment Insert $A[j]$ into .....\li $i \gets j-1$
\end{codebox}
Foo-Sort(A)
1 for j = 2 to length[A]2 key = A[j]3 // Insert A[j] into .....
4 i = j − 1
funktioniert in beamer nicht gut (Fonts) — vgl. Extradatei
24 / 24