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