25
L A T E X, beamer, tikz und Co. L A T E X, 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

LATEX, beamer tikz und Co.liinthw/vl-latex-co/k-11-algs-folien.pdfLATEX, beamer, tikz und Co. 11. ˚elltexte und Algorithmen Thomas Worsch Fakultät für Informatik Karlsruher Institut

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

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