Thomas Fischer's Weblog

Life, Linux, LaTeX

Archive for April 2007

Winning IQ Tests

leave a comment »

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? 😉

Advertisements

Written by Thomas Fischer

April 30, 2007 at 0:00

Posted in Mathematics

PrÀsentationen mit Folie

leave a comment »

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


Viel Text

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

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


Riesige Tabelle

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


Plot

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ß).

Eigene Folien im Einsatz

Written by Thomas Fischer

April 29, 2007 at 0:00

Posted in LaTeX, University

Mehrzeilige Tabellen in LaTeX schöner machen

leave a comment »

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:

Click to enlarge

\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:

Click to enlarge

\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.

Click to enlarge

\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:

  1. Vertikale Linien sind böse
  2. 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.

Click to enlarge

\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:

Click to enlarge

\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:

Click to enlarge

\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.

Written by Thomas Fischer

April 11, 2007 at 0:00

Posted in LaTeX