Homepage

Willkommen

Digitales für den Unterricht

Medienbildung für alle (2001)

GrandOrgue-Orgelsoftware

Eine statische Website mit pmWiki erstellen - zur Programmierung dieser Seite

Wichtige Hinweise

Text-Präsentationenen effektiv erstellen mit Perl und TEX-Beamer

- Alle Angaben ohne Gewähr -

Bildschirm-Präsentationen zu erstellen, die den Anwesenden den Ablauf von Veranstaltungen, die Struktur von Vorträgen oder die Grundzüge der Argumentation vor Augen halten, ist eine ständig wiederkehrende Aufgabe. Über das Pro und Contra solcher Präsentationen, bei denen Notebook und Beamer als eine Art Telepromter benutzt werden, ist schon viel gestritten worden. Dieser Diskussion ist kaum noch etwas hinzuzufügen.

Wie gut wäre es, eine Software zu haben, die es ermöglicht, schnell und mit wenig Aufwand gut und profesionell aussehende Präsentationen vorzubereiten - am besten auch auf dem 99-Euro-Tablet für unterwegs. Mit der TEX-Klasse Beamer, der Skript-Sprache Perl und der Seitenbeschreibungsprache Markdown stehen geeignete Bausteine bereit.

Es bietet sich an, den Quelltext der Präsentationen in einer Syntax zu schreiben, die letztlich ein stark vereinfachtes Markdown ist:

  • Das Doppelkreuz "#" am Zeilenanfang markiert eine Zeile als Überschrift und startet eine neue Folie.
  • Das Sternchen "*" markiert ein Element einer Aufzählung.
  • Zeilen ohne "#" oder "*" am Anfang setzen als direkte Folgezeile die vorangegangene Zeile fort, also etwa die Überschrift oder das Element der Aufzählung.
  • Nach einer Leerzeile werden Zeilen ohne Markierung am Anfang als normaler Text gewertet.

Wer gelegentlich Wikis bearbeitet, findet die Markdown-Syntax (http://de.wikipedia.org/wiki/Markdown) sicherlich vertraut. Praktisch ist, dass sich der Präsentationstext dank der Markdown-kompatiblen Syntax mit einem Markdown-Konverter in einen odt-Fließtext umwandeln lässt.

Mit dem von mir geschriebenen Perl-Skript QQ-v0.x.y.pl lässt sich der Markdown-Text in Beamer-TEX-Quelltext konvertieren. Mit TEX kann daraus schließlich ein Präsentation im pdf-Format erzeugt werden.

Wer am liebsten anhand von Beispielen lernt, findet hier

(Leider werden die Umlaute in den ersten beiden Dokumenten je nach Einstellung auf dem Zielrechner nicht korrekt dargestellt.)

Und so geht es:
   perl QQ_v0.x.y.pl QQ-Praesentation-1
   pdflatex QQ-Praesentation-1

Das Perl-Skript steht unter der GNU General Public License (GPLv3) und wird ohne jegliche Gewähr ausgeliefert. Eine Überprüfung und Nachbearbeitung des erzeugten TEX-Quelltextes von Hand ist angezeigt und natürlich mit jedem Editor (z.B. gedit) problemlos möglich. Für Skript und Quelltexte muss die utf8-Zeichencodierung gewählt werden; bei gedit etwa lässt sich das einstellen. Umlaute müssen direkt als ä, ö und ü eingegenen werden (und nicht etwa TEX-typisch als "a, "o und "u). (Bei anderen Sonderzeichen kann Nacharbeit in der tex-Datei notwendig sein.) Zur Zeit befindet sich das Skript noch im Beta-Stadium.
Bei der Weiterbearbeitung steht natürlich der volle Funktionsumfang von TEX-Beamer zur Verfügung. Für Computer-Neulinge ist das Verfahren sicher nicht geeignet; Mit TEX und Beamer lassen sich hochprofessionelle Präsentationen gerade für den mathematisch-naturwissenschaftlichen Bereich erzeugen, die Handhabung setzt aber doch eine gewisse Einarbeitung voraus.


Anhang 1: QQ_v.0.1.5.pl

#!/usr/bin/perl
#---------------------------------------------------------------#
print "QQ_v0.1.4.pl\n";
print "zur Erstellung von Beamer-Dateien aus Markdown-Dateien\n";
print "(c) Matthias Nadenau 02.01.2014..20.09.2014\n";
print "\n";
print "Das Skript steht unter der GNU General Public License\n";
print "(GPLv3) und wird ohne jegliche Gewähr ausgeliefert.\n";
print "\n";
print "Wenn der Quelltext in QQ-Praesentation-1.txt steht,\n"; 
print "lautet der Aufruf:\n";
print "perl QQ_v0.x.y.pl QQ-Praesentation-1\n";
print "Die pdf-Datei wird dann erstellt mit\n";
print "pdflatex QQ-Praesentation-1\n"; 
print "\n";
print "Mögliche Parameter beim Aufruf:\n";
print "  p	Druckfassung, alle Items einer Seite\n";
print "         erscheinen sofort\n";           
print "\n";                          
print "Beispiel:\n";
print "perl QQ_v0.x.y.pl -p QQ-Praesentation-1\n";     
print "\n";
#---------------------------------------------------------------#
@Umlaut = qw/ Ä Ö Ü ä ö ü ß /; 
@Ersatz = qw/ "A "O "U "a "o "u "s /;
$level = "NNNN";
$tr="% ------- ------- ------- ------- ------- ------- ------- %";
$dateina = pop(@ARGV);
open TXT, "<", $dateina . ".txt";
open XXT, ">", $dateina . ".tex";
open MKD, ">", $dateina . ".md";
$print=0;
$itempar="[<+->]\n";
$logo="EinLogo.png";                                      
foreach $cmdpar (@ARGV) {                                       
  $_ = $cmdpar;                                                 
    if (/^-/){                                                  
    if (/p/){$print=1; $itempar="\n";};                         
  };                                                            
};                                                              
print XXT "\\documentclass[14pt]{beamer}\n\n";
print XXT "\\usefonttheme{structurebold}\n\n";
print XXT "\\usetheme{Frankfurt}\n\n";
print XXT "\\usepackage{ae}\n";
print XXT "\\usepackage[ngerman]{babel}\n";
print XXT "\\usepackage[utf8x]{inputenc}\n";
print XXT "\\usepackage[T1]{fontenc}\n";
print XXT "\\usepackage{amsmath, amsfonts, amssymb }\n\n";
print XXT "\\usepackage{lmodern}\n\n";
print XXT "\\pgfdeclareimage[height==\\verb=1cm]{daslogo}{";
print XXT $logo . "}\n";
print XXT "\\logo{\\pgfuseimage{daslogo}}";
print XXT "\\begin{document}\n\n";
print XXT "% \\title{}\n";
print XXT "% \\subtitle{}\n";
print XXT "\\author{}\n\n";                   
print XXT "% \\date{}\n\n";
print XXT "% \\maketitle\n\n";
#
while (defined($_=<TXT>)){
  chomp($_);
  if ((substr($_,0,1) ne '>') && (substr($_,0,1) ne '<')){
    print MKD $_ . "\n";
    #
    s/\s\s+$/ \\\\/;        # 1)
    $umbr="";
    s/"(\w+)/\\glqq $1/g;
    s/" /\\grqq\\ /g;
    s/"(\n|,|;|\.|!|\?)/\\grqq $1/g;
    s/"$/\\grqq\\ /;
    s/" /\\grqq\\ /g;
    s/%/\\%/g;
    s/&/\\&/g;
    s/{/\\{/g;
    s/}/\\}/g;
    s/_/\\_/g;
    s/§/\\S/g;
    s/^\s+//;
    if (/^#/) {
      s/#//g;
      s/^\s+//;
      $level="H" . substr($level,0,3);}
    elsif (/^\*/) {
      s/\*//g;
      s/^\s+//;
      $level="I" . substr($level,0,3);}
    elsif (/^\w/) {
      $level="T" . substr($level,0,3);}
    elsif ($_ eq "") {
      $level="L" . substr($level,0,3);}
    else {
      $level="T" . substr($level,0,3);}
    #
    if (substr($level,0,2) eq "HN") 
      {$umbr = "\n\\begin{frame}\n  \\frametitle{";};
    if (substr($level,0,2) eq "TN") 
      {$umbr = "\n\\begin{frame}\n  \\frametitle{}\n    ";};
    if (substr($level,0,2) eq "IN") 
      {$umbr = "\n\\begin{frame}\n  \\frametitle{}\n" 
       . "  \\begin{itemize}" . $itempar . "    \\item ";};
    if (substr($level,0,2) eq "LN") 
      {$umbr = ""; substr($level,0,2)="nn";};
    #
    if (substr($level,0,2) eq "HH") 
      {$umbr = "}\n\\end{frame}\n\n" . $tr 
       . "\n\n\\begin{frame}\n  \\frametitle{";};
    if (substr($level,0,2) eq "HT")
      {$umbr = "\\\\\n\\end{frame}\n\n" . $tr 
       . "\n\n\\begin{frame}\n  \\frametitle{";};
    if (substr($level,0,2) eq "HI")
      {$umbr = "\n  \\end{itemize}\n\\end{frame}\n\n" . $tr 
       . "\n\n\\begin{frame}\n  \\frametitle{";};
    if ((substr($level,0,2) eq "HL") && (substr($level,2,1) ne "I"))
      {$umbr = "\\end{frame}\n\n" . $tr 
       . "\n\n\\begin{frame}\n  \\frametitle{";};
    #
    if (substr($level,0,2) eq "TH") 
      {$umbr = "\n  "; substr($level,0,2)="hh";};
    if (substr($level,0,2) eq "TT") 
      {$umbr = "\n  ";};
    if (substr($level,0,2) eq "TI") 
      {$umbr = "\n    "; substr($level,0,2)="ii";};
    if ((substr($level,0,2) eq "TL") && (substr($level,2,1) ne "I")) 
      {$umbr = "\n  ";};
    #
    if (substr($level,0,2) eq "IH") 
      {$umbr = "}\n\n  \\begin{itemize}" . $itempar . "    \\item ";};
    if (substr($level,0,2) eq "IT") 
      {$umbr = "\\\\\n\n  \\begin{itemize}" . $itempar . "    \\item ";};
    if (substr($level,0,2) eq "II") 
      {$umbr = "\n    \\item ";};
    if ((substr($level,0,2) eq "IL") && (substr($level,2,1) ne "I")) 
      {$umbr = "\n  \\begin{itemize}" . $itempar . "    \\item ";};
    #
    if (substr($level,0,2) eq "LH") 
      {$umbr = "}\n";};
    if (substr($level,0,2) eq "LT") 
      {$umbr = "\\\\\n";};
    if (substr($level,0,2) eq "LL") 
      {$umbr = ""; $level=substr($level,1,3) . "X";};
    #
    if (substr($level,0,2) eq "nn") 
      {substr($level,0,2)="NN"};
    if (substr($level,0,2) eq "ii")
      {substr($level,0,2)="II"};
    if (substr($level,0,2) eq "hh")
      {substr($level,0,2)="HH"};
    # 
    if (substr($level,1,2) ne "LI") 
      {print XXT $umbr . $_ . "";};
    if (substr($level,0,3) eq "TLI") 
      {print XXT "\n  \\end{itemize}\n\n  " . $_;};
    if (substr($level,0,3) eq "HLI") 
      {print XXT "\n  \\end{itemize}\n\n\\end{frame}\n\n" 
       . $tr . "\n\n\\begin{frame}\n  \\frametitle{" . $_;};
    if (substr($level,0,3) eq "ILI") 
      {print XXT "\n    \\item " . $_;};
  };
};
if (substr($level,0,1) eq "T") {print XXT "\\\\\n\n\\end{frame}";};
if (substr($level,0,2) eq "LT") {print XXT "\n\n\\end{frame}";};
if (substr($level,0,1) eq "L") {substr($level,0,1)=substr($level,1,1);};
if (substr($level,0,1) eq "H") {print XXT "\\end{frame}";};
if (substr($level,0,1) eq "I") {print XXT "\n  \\end{itemize}\n\\end{frame}";};
print XXT "\n\n";
print XXT "\\end{document}";
print XXT "\n\n";
print MKD "\n";

Anhang 2: QQ-Praesentation-1.txt

# Ausgangspunkt

Textbasierte Präsentationen sind ein Alltagsgeschäft, 
das genau so einfach zu bewältigen sein sollte 
wie das Erstellen von "Fließtexten".


# Was ist das Ziel?

* Erstellung von Präsentationen auf 
Smartphone, Tablet oder PC 
* mit einem ganz normalen Editor (z.B. gedit)
* die Konzentration voll auf den Inhalt 
der Präsentation gerichtet

# Welche Software wird benötigt?

* Perl
* TEX, insbesondere auch die TEX-Klasse-Beamer
* ein Editor

dazu das Skript QQ_v0.x.y.pl

# Welche Hardware ist geeignet?

* Desktop-PC
* Notebook
* Smartphone oder Tablet

# Wie zuverlässig ist das Perl-Skript?

QQ_0.x.y.pl befindet sich noch im Beta-Status
und wird ohne jegliche Gewähr ausgeliefert.

# Wer ist angesprochen? 

* TEX-Nutzer
* Nutzer, die einen einfachen Einstieg 
in das Präsentieren mit TEX suchen
* Programmier-Freaks - QQ_v0.x.y.pl 
steht unter der GNU General Public License 
(GPLv3), darf also beliebig verändert werden
* ... und natürlich jede/r andere ;-)

# Herzlichen Dank ...

... für Ihr Interesse!

Anhang 3: QQ-Praesentation-1.tex

\documentclass[14pt]{beamer}

\usefonttheme{structurebold}

\usetheme{Frankfurt}

\usepackage{ae}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amsfonts, amssymb }

\usepackage{lmodern}

\pgfdeclareimage[height==\verb=1cm]{daslogo}{EinLogo.png}
\logo{\pgfuseimage{daslogo}}\begin{document}

% \title{}
% \subtitle{}
\author{}

% \date{}

% \maketitle


\begin{frame}
  \frametitle{Ausgangspunkt}

  Textbasierte Präsentationen sind ein Alltagsgeschäft, 
  das genau so einfach zu bewältigen sein sollte 
  wie das Erstellen von \glqq Fließtexten\grqq .\\
\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Was ist das Ziel?}

  \begin{itemize}[<+->]
    \item Erstellung von Präsentationen auf 
    Smartphone, Tablet oder PC 
    \item mit einem ganz normalen Editor (z.B. gedit)
    \item die Konzentration voll auf den Inhalt 
    der Präsentation gerichtet
  \end{itemize}

\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Welche Software wird benötigt?}

  \begin{itemize}[<+->]
    \item Perl
    \item TEX, insbesondere auch die TEX-Klasse-Beamer
    \item ein Editor
  \end{itemize}

  dazu das Skript QQ\_v0.x.y.pl\\
\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Welche Hardware ist geeignet?}

  \begin{itemize}[<+->]
    \item Desktop-PC
    \item Notebook
    \item Smartphone oder Tablet
  \end{itemize}

\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Wie zuverlässig ist das Perl-Skript?}

  QQ\_0.x.y.pl befindet sich noch im Beta-Status
  und wird ohne jegliche Gewähr ausgeliefert.\\
\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Wer ist angesprochen? }

  \begin{itemize}[<+->]
    \item TEX-Nutzer
    \item Nutzer, die einen einfachen Einstieg 
    in das Präsentieren mit TEX suchen
    \item Programmier-Freaks - QQ\_v0.x.y.pl 
    steht unter der GNU General Public License 
    (GPLv3), darf also beliebig verändert werden
    \item ... und natürlich jede/r andere ;-)
  \end{itemize}

\end{frame}

% ------- ------- ------- ------- ------- ------- ------- %

\begin{frame}
  \frametitle{Herzlichen Dank ...}

  ... für Ihr Interesse!\\


\end{frame}

\end{document}

www.nadenau.de, page last modified on September 20, 2014, at 02:20 PM