Archive for April 2007
Winning IQ Tests
Ever made an IQ test? You may remember one of those questions where you are given a sequence of numbers and you have to add the next following number. There may be more valid answers than you may think.
An example for a given sequence might be 1, 1, 2, 3, 5
. So, what’s the next number? Some of you may have recognized the beginning of the Fibonacci sequence, in which case the next number would be 8
.
But there are more valid answers. For example, you could answer 9
. In this case your sequence represents the number of nodes in row n of the power tree or the maximal determinant of real n×n symmetric (0,1) matrices. Easy, isn’t? 😉
Präsentationen mit Folie
An der Universität und auf Konferenzen kommt man viel mit Vorträgen in Berührung. Ein unterstützendes Element für jeden Vortrag sind die Folien. Einige Beispiele, was man alles falsch machen kann, möchte ich in diesem Blog-Beitrag vorstellen. Die hier vorgestellten Folien sind Nachbauten real-existierender Folien, die ich zum Schutz der Persönlichkeit nicht direkt zeige.
Viel Text auf Folien
Leute lesen gerne. Also, warum sollte man ihnen nicht viel Text vorsetzen? Ziel von Vorträgen ist es, Informationen kurz und präzise auf den Punkt zu bringen. Das unterscheidet eine Präsentation von der dazugehörenden Ausarbeitung, wo ins Detail gegangen wird und jeder Satz ausgefeilt wird.
Es ist natürlich verlockend, den Text aus der Ausarbeitung direkt auf die Folie zu kopieren, schließlich steckt da ja schon Arbeit drinnen. Wenn dann diese Folien aufgelegt werden, gibt es zwei Verhaltensweisen: Entweder der Vortragende liest den Text Wort für Wort vor (beliebt bei Leuten, die nicht frei sprechen können oder die Sprache nicht sicher beherrschen) oder der Vortragende erzählt den Inhalt mit eigenen Worten und der Zuhörer muss sich entscheiden, ob er zuhört oder liest.
Meiner Meinung nach sind Aufzählungspunkte (evtl. gestaffelt, maximal zweizeilig) mit Satzfragmenten in den meisten Fällen die beste Darstellungsform. Einzige Ausnahmen, wo mehrzeilige Textpassagen erlaubt sind, sind Zitate (möglichst knapp halten und immer Referenz nennen) oder Definitionen.
Spielen mit Farben
Farben sind eine tolle Sache: Man kann damit viele Informationen schön sauber getrennt visualisieren. Problem ist, daß man sich nicht immer darauf verlassen kann, wie die Licht- und Präsentationsverhältnisse vor Ort sind. Es kommt öfters vor, daß eine helle Deckenlampe auf eine Leinwand scheint und den Kontrast der projezierten Folie reduziert. Dünne Linien auf einem Hintergrund mit ähnlicher Farbe helfen auch nicht weiter. Vielleicht sehen nicht alle Zuschauer sehr gut oder sind farbenblind.
Diese Überlegung machen nicht alle, denn es kommt durchaus vor, daß grau auf blau gesetzt wird (siehe Beispiel). Schwacher Kontrast und schwer lesbare Folien ermüden den Leser/Zuhörer, macht das Verstehen von Beispielen schwierig und schließlich verliert man den Zuhörer komplett. Viel besser ist es, Folien mit weißem oder sehr hellem Hintergrund und dunkler Schrift zu verwenden. Das mag vielleicht konservativ wirken, dafür kann es jeder lesen. Wird eine Grafik sowohl in einer schriftlichen Veröffentlichung, als auch in der Präsentation verwendet werden, sollte die Papierfassung schwarz-weiß mit dünnen Linen und die Folienfassung bunt, aber mit wesentlich dickeren Linien und größerer Schrift dargestellt werden.
Folien mit Informationen überladen
Eine Folie, die auf mehrere Quadratmeter vergrößert wird, macht es verlockend, riesige Informationsmengen darauf unterzubringen. Problem ist, daß man damit seine Zuhörer überfordert. Wenn sich ein Zuhörer für Details interessieren sollte, kann nach dem Vortrag nachgefragt oder -gelesen werden.
Wie das Beispiel rechts zeigt, sind nicht alle Vortragende der gleichen Meinung. Schließlich wurde viel Zeit und Aufwand in Versuche gesteckt, also warum sollte man diese Informationen nicht zeigen? Die Antwort ist einfach: In dieser riesigen Datenmenge sieht niemand, was der wissenschaftliche Beitrag des Vortrags ist. Weniger ist mehr, wenn man sich auf ausgewählte Werte beschränkt und diese dafür um so detailierter beschreibt.
Graphen und Plots
Plots sind ein Thema für sich: Bei der Visualisierung von Daten muss natürlich die richtige Darstellungsform gewählt werden und die Daten auch in den richtigen Kontext gestellt werden. Visualisierungsprogramme wie GNUPlot oder OpenOffice Calc bieten eine große Auswahl an Darstellungstilen und nicht jeder Vortragende hat ein Gespür für die richtige Technik.
In dem Beispiel rechts ist auf wird unterstellt, daß die horizontal verlaufenden Linien einen sequentiellen Zusammenhang (z.B. Wertentwicklung über Zeit) darstellen. Tatsächlich listet die X-Achse nur die Instanzen auf; deren Reihnfolge ist aber willkürlich und somit auch der Linienverlauf im Plot.
Folien richtig machen
Und wie macht man jetzt Folien richtig gut? Das ist fast schon eine Wissenschaft an sich. Es hängt ab vom persönlichen (Vortrags-)Stil, Zielpublikum, Art und Umfang der zu präsentierenden Informationen, Zeitrahmen und weiteren Faktoren. Lesenswert zu dem Thema ist u.a. das Presentation Zen.
Ich persönlich benutze das Beamer-Paket mit LaTeX, zu dem ich einen einfachen Stil selber entwickelt habe. Einfacher Aufbau, nicht überladen, kontrastreiche Farben (schwarz/blau auf weiß).
Mehrzeilige Tabellen in LaTeX schöner machen
Tabellen in LaTeX sind ein mächtiges Werkzeug zur Darstellung von Informationen. Die Darstellungsqualität von Standardtabellen kann mit ein paar kleinen Tricks aber noch verbessert werden.
Nehmen wir mal ein kleines Beispiel, wie man eine Tabelle mit bekannten SciFi-Autoren und –Büchern in LaTeX setzen würde:
\begin{tabular}{|l|l|l|} \hline Author & Title & Year \\ \hline \hline Philip K. Dick & Minority Report & 1956 \\ \hline Philip K. Dick & Do Androids Dream of Electric Sheep? & 1968 \\ \hline Philip K. Dick & A Scanner Darkly & 1977 \\ \hline Neal Stephenson & Snow Crash & 1992 \\ \hline Neal Stephenson & The Diamond Age & 1995 \\ \hline Neal Stephenson & Cryptonomicon & 1999 \\ \hline \end{tabular}
Die Tabelle enthält Einträge doppelt, was die Übersichtlichkeit erschwert. Um vertikal oder horizontal benachbarte Zellen zusammenzufassen, gibt es die Pakete multirow und multicol (üblicherweise bei einer TeX-Distribution enthalten).
Bei der obigen Tabelle kann man die Zellen mit gleichen Autor zu einer Zelle zusammenfassen:
\begin{tabular}{|l|l|l|} \hline Author & Title & Year \\ \hline \hline \multirow{3}{*}{Philip K. Dick} & Minority Report & 1956 \\ \hline & Do Androids Dream of Electric Sheep? & 1968 \\ \hline & A Scanner Darkly & 1977 \\ \hline \multirow{3}{*}{Neal Stephenson} & Snow Crash & 1992 \\ \hline & The Diamond Age & 1995 \\ \hline & Cryptonomicon & 1999 \\ \hline \end{tabular}
Ein ähnliches Ergebnis hätten wir erreichen können, wenn wir die Autorennamen in die Zelle links vom jeweils 2. Buch eingetragen hätten. Sowas funktioniert aber nur mit einer ungeraden Anzahl Bücher.
Was jetzt noch stört, sind die horizontalen Linien direkt über und unter den Autorennamen. Das Problem kann man lösen, indem man \hline
durch \cline{2-3}
ersetzt. Dadurch wird die horizontale Linie nur durch die angegebenen Spalten gezeichnet.
\begin{tabular}{|l|l|l|} \hline Author & Title & Year \\ \hline \hline \multirow{3}{*}{Philip K. Dick} & Minority Report & 1956 \\ \cline{2-3} & Do Androids Dream of Electric Sheep? & 1968 \\ \cline{2-3} & A Scanner Darkly & 1977 \\ \hline \multirow{3}{*}{Neal Stephenson} & Snow Crash & 1992 \\ \cline{2-3} & The Diamond Age & 1995 \\ \cline{2-3} & Cryptonomicon & 1999 \\ \hline \end{tabular}
Ein Problem beim den Standardtabellen ist, daß der vertikale Abstand zwischen den horizontalen Linien (\hline
bzw. \cline
) und dem Text zu klein ist. Außerdem erscheint der Abstand stark asymmetrisch, wie diese Vergrößerung zeigt:
Die Lösung für dieses Problem stellt das booktabs-Paket bereit; hier wird der Abstand zwischen Linien und Text vergrößert. Das Paket stellt zwei Design-Paradigmen auf:
- Vertikale Linien sind böse
- Doppelte Linien sind böse
Damit Linien sauber und kontextsensitiv dargestellt werden, definiert das booktabs-Paket neue Linientypen für den Kopf und Fuss einer Tabelle sowie Linien dazwischen. Die Pipe-Symbole aus der Tabellen-Deklaration müssen entfernt werden, weil die vertikalen Linie zu Darstellungsfehlern in Kombination mit den booktabs-Linien führen.
\begin{tabular}{lll} \toprule Author & Title & Year \\ \midrule \multirow{3}{*}{Philip K. Dick} & Minority Report & 1956 \\ \cmidrule{2-3} & Do Androids Dream of Electric Sheep? & 1968 \\ \cmidrule{2-3} & A Scanner Darkly & 1977 \\ \midrule \multirow{3}{*}{Neal Stephenson} & Snow Crash & 1992 \\ \cmidrule{2-3} & The Diamond Age & 1995 \\ \cmidrule{2-3} & Cryptonomicon & 1999 \\ \bottomrule \end{tabular}
Die Tabelle ist jetzt etwa um ein Drittel höher geworden. Außerdem scheinen die Autorenamen etwas nach oben verrutscht zu sein. Das kommt daher, daß das multirow-Paket nicht merkt, daß die Linien des booktabs-Pakets vertikale Abstände eingefügt haben und somit die Höhe der Zeilen falsch bestimmt wird.
Es gibt zwei Möglichkeiten, das Aussehen zu korrigieren: Entweder werden die \cmidrule
-Linien entfernt (und damit auch die Extra-Abstände) oder der \multirow
-Befehl muss „überlistet“ werden.
Erstmal die Variante ohne Linien:
\begin{tabular}{lll} \toprule Author & Title & Year \\ \midrule \multirow{3}{*}{Philip K. Dick} & Minority Report & 1956 \\ & Do Androids Dream of Electric Sheep? & 1968 \\ & A Scanner Darkly & 1977 \\ \midrule \multirow{3}{*}{Neal Stephenson} & Snow Crash & 1992 \\ & The Diamond Age & 1995 \\ & Cryptonomicon & 1999 \\ \bottomrule \end{tabular}
Für die zweite Variante definiere ich einen alternativen multirow-Befehl. Die Idee dahinter ist, mit \vspace*
gerade den Abstand (\aboverulesep
und \belowrulesep
pro Linie) wieder abzuziehen, der durch die \midrule
– bzw. \cmidrule
-Aufrufe eingefügt werden.
Der neue Befehl \multirowbt
nimmt an, daß bei mehrzeiligen Zellen zwischen jeder Zeile ein \cmidrule
-Aufruf ist. Falls das nicht der Fall ist, muß man sich mit dem alten \multirow
und \compensaterule
mit entsprechendem Parameter behelfen.
In der Dokument-Präamble werden daher die folgenden Befehle definiert:
\newcommand{\forloop}[5][1]{% \setcounter{#2}{#3}% \ifthenelse{#4}{#5\addtocounter{#2}{#1}% \forloop[#1]{#2}{\value{#2}}{#4}{#5}}% {}} \newcounter{crcounter} \newcommand{\compensaterule}[1]{% \forloop{crcounter}{1}{\value{crcounter} < #1}% {\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}} \newcommand{\multirowbt}[3]{\multirow{#1}{#2}% {\compensaterule{#1}#3}}
Die \forloop
-Konstruktion habe ich auf CTAN gefunden Damit das ganze funktioniert, muß das Paket ifthen eingebunden werden.
Die endgültige Tabelle sieht dann so aus:
\begin{tabular}{lll} \toprule Author & Title & Year \\ \midrule \multirowbt{3}{*}{Philip K. Dick} & Minority Report & 1956 \\ \cmidrule{2-3} & Do Androids Dream of Electric Sheep? & 1968 \\ \cmidrule{2-3} & A Scanner Darkly & 1977 \\ \midrule \multirowbt{3}{*}{Neal Stephenson} & Snow Crash & 1992 \\ \cmidrule{2-3} & The Diamond Age & 1995 \\ \cmidrule{2-3} & Cryptonomicon & 1999 \\ \bottomrule \end{tabular}
Dem Leser wird als Übung überlassen, dem Befehl \multirowbt
einen optionalen Parameter einzubauen, mit dem man die Anzahl der überbrückten Linien übergeben kann.