Minimalbeispiel Wiki .:. goLaTeX - Mein LaTeX-Forum


goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum

goLaTeX.de - Wiki
 


Minimalbeispiel

Ein Minimalbeispiel ist der minimale, voll funktionsfähige Codeschnipsel zur Darstellung eines bestimmten Verhaltens oder Fehlers.

Inhaltsverzeichnis

[bearbeiten] Was ist ein Minimalbeispiel

Wer mit LaTeX arbeitet, kommt über kurz oder lang an einen Punkt, an dem er ein Problem selbst nicht lösen kann. Ein Minimalbeispiel ist eine Möglichkeit, dieses Problem darzustellen. Die Anforderung ist hierbei, einen vollständig lauffähigen Quellcode zu haben, der das gewünschte Problem auch anderen aufzeigt. Dabei gibt es einige Ansprüche an den Quellcode

  • Vollständigkeit, damit ...
    • der User, der helfen möchte, den Code einfach kopieren und ausführen kann, ohne irgendwelche Codezeilen hinzufügen zu müssen;
    • der Fragende in Unwissenheit nicht Details vernachlässigt, welche zur Diagnose des Problems erforderlich sind.
  • Kompaktheit, damit ...
    • kein mehrseitiger Quellcode auf Fehler analysiert werden muss;
    • der Fragende durch Codereduktion selbst einen nicht unerheblichen Anteil zur Analyse beiträgt (Beispiel: Codereduktion dauert 6 min --> 10 Fragen beantworten bedeutet 60min zusätzliche Arbeit);
    • weil sich kleine Syntaxfehler durch eigene Reduktion des Codes oftmals selbst erledigen.

[bearbeiten] Warum ein Minimalbeispiel erstellen

Im Internet und insbesondere in Foren haben sich entgegen vieler Vermutungen gewisse gesellschaftliche Regeln etabliert. Gerade in Foren mit professionellem Hintergrund wird oftmals strikt auf deren Einhaltung geachtet. Bei LaTeX ist dies nicht anders. Viele Leute beantworten Fragen von Nutzern in ihrer Freizeit oder während ihrer Arbeit.

Jede Person, die eine Frage hat, sollte sich des Umstandes bewusst sein, dass sich ein anderer explizit Zeit nimmt, sich mit dieser Frage auseinanderzusetzen. Er stellt also Zeit zur Verfügung, um jemand anderem, oftmals sogar Wildfremden, zu helfen.

Des Weiteren bietet ein Minimalbeispiel viele verschiedene Vorteile:

  • Es kann die Bearbeitungszeit der Frage für den Beantwortenden um ein erhebliches Maß reduzieren.
  • Unklare Fragestellungen werden durch ein klares Beispiel, ohne umständliche Rückfragen, verständlich.
  • Man muss sich bei der Erstellung des Minimalbeispiels mit seiner Frage wirklich auseinandersetzen und findet dabei unter Umständen sogar bereits selbst eine Lösung.
  • Potentielle Helfer haben dadurch etwas in der Hand, mit dem sie ihre Ideen schnell ausprobieren und entwickeln können, ohne ihre wenige Zeit erst in den Bau eines möglicherweise gar nicht zutreffenden Testszenarios investieren zu müssen.
  • Das Zeitverhältnis von "Posting erstellt" zu "Antwort erhalten" reduziert sich um mehrere Stunden (oder auch Tage), je nach Komplexität der Frage. (Nach Messungen im goLaTeX-Forum.)

[bearbeiten] Teile und herrsche

Dies ist nicht nur ein bekanntes Prinzip aus der Softwareentwicklung, sondern findet auch hier eine tolle Anwendung. Dabei soll der Problemquelltext solange geteilt werden, bis er beherrschbar geworden ist. Denn je kleiner ein Teil ist, desto einfacher ist er zu beherrschen.

Es gibt sogar LaTeX-Pakete (siehe Linkliste am Ende des Beitrags), die bei der Codeverkleinerung behilflich sind, indem sie Standardfüllmaterial bereitstellen. Dies kann im letzten Schritt der Reduktion helfen, viele hundert Zeilen Text oder ganze Dokumentinhalte durch einzelne oder einige wenige Anweisungen zu ersetzen.

[bearbeiten] Externe Dateien neben der Hauptdatei

Reale Dokumente bestehen meist aus mehreren Dateien. Neben der Hauptdatei gibt es häufig Dateien für Teile der Präambel, einzelne Kapitel, Verzeichnisse und Bilder. Im Sinn von Teile und herrsche ist das zunächst sehr praktisch, weil man ggf. das Einladen von kompletten Dateien schlicht auskommentieren und später komplett löschen kann. Für ein vollständiges Minimalbeispiel ist das am Ende aber eher hinderlich. Zum einen wird das Beispiel dadurch aufgebläht, zum anderen müssen potentielle Helfer ggf. einzelne Dateien unter korrektem Namen speichern und dann ggf. auch noch ihre Problemsuche über mehrere Dateien durchführen. Deshalb sollte man je nach Dateiart Strategien anwenden, um die Dateizahl und die Datenmenge zu reduzieren.

[bearbeiten] Header- oder Kapiteldateien in Minimalbeispielen

Die Anweisung \input ersetzt man direkt durch den Inhalt der geladenen Datei. Die Anweisung \include ersetzt man ebenfalls durch den Inhalt der geladenen Datei, setzt aber vor und nach dem Inhalt der Datei zusätzlich ein \clearpage, weil LaTeX das bei \include ebenfalls machen würde. Danach prüft man, ob das Problem weiterhin auftritt. Ist dies der Fall, so minimiert man den eingefügten Teil wie unter Teile und herrsche angegeben. Ist dies nicht der Fall, so hat das Problem etwas mit dem Laden der Datei zu tun. Man macht dann die Änderung rückgängig. Im Fall von \include sollte man dann noch testen, ob das Problem durch Verwendung von \input beseitigt wird. In diesem Fall hat man die Lösung bereits gefunden.

Geht es nicht ohne die externe Header- oder Kapiteldatei, so fügt man diese im Hauptdokument ein. Dazu verwendet man die filecontents-Umgebung noch vor \documentclass, nachdem man die externe Datei weiter minimiert hat. Das Argument der filecontents-Umgebung ist dabei der Name der Datei, welche geschrieben und später wieder eingelesen wird. Dieser Name sollte eineindeutig sein und im besten Fall den Benutzernamen beinhalten. Auch hier gilt, dass Dateinamen keine Leerzeichen oder Sonderzeichen enthalten dürfen. Ein guter Dateiname wäre beispielsweise sarahTestKapitel.tex.


\begin{filecontents}{sarahTestKapitel.tex}
Test% Der Inhalt der Datei ist egal!
\end{filecontents}
\documentclass{book}
\begin{document}
\include{sarahTestKapitel.tex}% Problem: Die Datei Kapitel.tex wird einfach nicht geladen!
\end{document}

Der Fehler in diesem vollständigen Minimalbeispiel liegt übrigens darin dass bei \include die Endung ».tex« wegzulassen ist!

[bearbeiten] Literaturverzeichnisse in Minimalbeispielen

Oftmals steht man vor dem Problem, dass in dem Projekt was man gerne minimieren möchte externe Dateien verwendet werden. Dies können Inhalte, Bilder oder auch Literaturverzeichnisse sein. Hier wird nun eine Möglichkeit vorgestellt, das Literaturverzeichnis direkt in die Datei einzubinden. Hierzu muss die Umgebung filecontents* verwendet werden, die es dem Nutzer ermöglicht, Dateien direkt in der TeX-Datei zu implementieren. Der Dateiname sollte hier eindeutig sein und im besten Falle mit dem Benutzernamen beginnen.

\begin{filecontents*}{bediaBibliographie.bib}
@ARTICLE{Beispiel2010,
  author = {Max Muster},
  title = {goLaTeX Wiki-Beispiel},
  journal = {LaTeX Journal},
  year = {2010},
  pages = {1-3},
  timestamp = {2010.03.21},
  url = {http://www.golatex.de/wiki/index.php?title=Minimalbeispiel}
} 
\end{filecontents*}

[bearbeiten] Grafiken oder Bilder in Minimalbeispielen

Wie bereits im obigen Abschnitt erklärt, stehen Nutzer, die ein geeignetes Minimalbeispiel erstellen wollen, oftmals vor dem Problem: Was mache ich mit meinen externen Dateien? In diesem Abschnitt wird eine Ersatzmöglichkeit zu Bildern und Graphiken dargestellt. So kann jeder einfach seine Grafiken ersetzen und dennoch das gleiche Verhalten erzielen.

Um Graphiken erfolgreich zu ersetzen, kann der \rule-Befehl verwendet werden. Dieses in der Größe eures Bildes gesetzte schwarze Rechteck, dann in einer Gleitumgebung untergebracht, zeigt das gleiche Verhalten wie eine Graphik.

\begin{figure}
    \rule[6cm]{4cm}
\end{figure}

Alternativ kann das Paket graphicx mit der Option demo geladen werden. Falls die Größe der Abbildung eine Rolle spielt, sollte diese dann mit den Optionen width und height des \includegraphics-Befehls angegeben werden.

\documentclass{article}
\usepackage[demo]{graphicx}
\begin{document}
A long plank: \includegraphics[width=2mm,height=10cm]{plank}
\end{document}

Die Option demo steht ab graphicx v1.0o seit dem 20. Februar 2006 zur Verfügung. Bei älteren Versionen lohnt sich ein Update.

Will man tatsächlich eine Abbildung im Dokument haben, so kann man eine der Abbildungen des Pakets mwe verwenden:

\documentclass{article}
\usepackage{mwe}
\begin{document}
A long plank: \includegraphics[width=2mm,height=10cm]{example-image}
\end{document}

Das funktioniert sogar, ohne das Paket mwe explizit zu laden. Trotzdem ist es sinnvoll das Paket zu laden, weil dann ggf. die automatische Paketinstallation von MiKTeX die Beispielabbildungen bereits in der Präambel installiert und außerdem die Befehle der Pakete lipsum und blindtext ebenfalls genutzt werden können. Mit den letzt genannten Paketen kann man ganz leicht Murmeltext einfügen, ohne 100 mal ein ödes Blah bereitzustellen.

[bearbeiten] Paketversionen vergleichen

Manchmal, wenn man ein vollständiges Minimalbeispiel erstellt hat und dieses dann mit unterschiedlichen LaTeX-Installationen getestet wird, zeigt sich, dass das Problem mit der einen Installation auftritt, mit der anderen nicht. In der Regel bedeutet dies, dass das Problem von den Versionen der verwendeten Pakete abhängig ist. Es müssen also die Paketversionen verglichen werden. Dies ist mit Hilfe der Anweisung \listfiles sehr einfach möglich. Die Dateiliste, die man dadurch erhält, kann man dann sehr einfach über das Netz austauschen und vergleichen. Häufig ergibt sich aus dem Resultat des Vergleichs die Notwendigkeit zum Update der eigenen Installation.

[bearbeiten] Beispiel

Minimalbeispiel Ausgabe des Dokumentes
\begin{filecontents*}{bediaBibliographie.bib}
 
@ARTICLE{Beispiel2010,
  author = {Max Muster},
  title = {goLaTeX Wiki-Beispiel},
  journal = {LaTeX Journal},
  year = {2010},
  pages = {1-3},
  timestamp = {2010.03.21},
  url = {http://www.golatex.de/wiki/index.php?title=Minimalbeispiel}
} 
\end{filecontents*}
 
 
\documentclass{scrartcl}  
\usepackage{biblatex}
\addbibresource{bediaBibliographie.bib} 
\usepackage{graphicx}
 
\begin{document}
 
Dieser Beispieltext zitiert \cite{Beispiel2010} einen Artikel aus der 
Bib-Datei, welche in diesem Dokument angelegt wurde.
 
\begin{figure}[ht]
\centering
\rule{6cm}{4cm}
\caption{Ein wunderschöner Bildersatz}
\end{figure}
 
 
\end{document}

Beispieldokument

Des Weiteren gibt es viele gute Beispiele im Forum sowie auf TeXwelt.de oder Minimalbeispiel.de, die alle zur Erstellung eines Minimalbeispiels nötigen Schritte im Detail erklären.

[bearbeiten] Links




Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2015 goLaTeX.de