|
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:
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: 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. 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} |