<a name="Was">[Was ist ein vollständiges Minimalbeispiel?](https://texwelt.de/wissen/fragen/569#Was)</a>
==========================================
**Ein vollständiges Minimalbeispiel (oder kurz *Minimalbeispiel* oder *VM*)
ist die kleinste Menge Code, die notwendig ist, um ein Problem zu
reproduzieren.**
Im Idealfall besteht ein *VM* aus genau einer Datei mit wenigen Zeilen
Code. Diese eine Datei sollte ohne jegliche Änderung genügen, um das Problem reproduzieren zu können. Zwar gibt es Fälle, in denen mehr als eine Datei benötigt wird, um das
Problem zu reproduzieren, für diese Fälle gibt es aber Hilfsmittel, die unter
*»[Vollständige Minimalbeispiele aus mehreren Dateien](https://texwelt.de/wissen/fragen/569#Dateien)«* beschrieben sind.
Man sollte auch nicht versuchen, ein *VM* zu erstellen, das mehr als ein
Problem verdeutlicht. So wie zu genau einem Problem genau eine Frage gehört
und eine Frage genau ein Problem auf einmal behandeln sollte, sollte auch das
zugehörige *VM* genau dieses eine Problem zeigen.
<a name="Wieso">[Was ist der Sinn eines vollständigen Minimalbeispiels?](https://texwelt.de/wissen/fragen/569#Wieso)</a>
======================================================
Die Erstellung eines *VMs* ist ein in den allermeisten Fällen notwendiger
Schritt, um einerseits die Ursache eines Problems zu ermitteln und
andererseits mögliche Lösungen zu testen. In der Regel sollte ein Fragesteller
daher immer davon ausgehen, dass ein solches *VM* benötigt wird und es auch
selbst erstellen.
Im Idealfall findet man bei der Erstellung des *VMs* bereits die Ursache und
die Lösung des Problems. Falls dies nicht der Fall sein sollte, sollte man
eine entsprechende [Frage formulieren][1] und dabei auch das erzeugte *VM* als
[Code-Block][2] mit angeben. Hier auf TeXwelt funktioniert die Markierung als [Code-Block][3] übrigens ganz einfach, indem man den Code mit der Maus selektiert und dann entweder in der Toolbar auf ![101/010][4] klickt oder auf der Tastatur `Strg+k` drückt. In anderen Foren, beispielsweise auf [goLaTeX](https://golatex.de), [goLaTeX](https://golatex.de/viewtopic.php?f=2&t=18410), muss man den Code eventuell in `[code]`…`[/code]` oder andere Markierungen einschließen.
Auf TeXwelt ist das *VM* auch deshalb wichtig, damit andere Hilfesuchende zusätzliche Anhaltspunkte haben, ob ihr Problem zu dem einer bereits beantworteten Frage passt. Ein korrekt als Code markiertes *VM* ist auch deshalb wichtig, weil nur korrekt markierter vollständiger Code sowohl hier auf TeXwelt als auch auf goLaTeX [automatisch mit einem Knopf versehen wird, über den er direkt ausgeführt werden kann](https://texwelt.de/fragen/27509). Für korrekt markierte Codeschnipsel funktioniert das dagegen nur eingeschränkt. Für nicht korrekt markierten Code funktioniert es gar nicht.
<a name="minimal">[Wie kann ich sicher stellen, dass mein Beispiel minimal ist?](https://texwelt.de/wissen/fragen/569#minimal)</a>
============================================================
Das ist normalerweise der aufwändigste Teil. Trotzdem kann ihn jeder Anfänger
bewältigen. Es gibt dazu zwei mögliche Vorgehensweisen, wobei Anfängern
unbedingt die *Halbierungssuche* empfohlen wird. Ergänzt wird das Ganze durch
einige Zusatzmaßnahmen. Obwohl sich die folgenden Anleitungen auf LaTeX beziehen, sind sie generell auch für Probleme mit plainTeX, ConTeXt oder andere Formate anwendbar. Es gibt dann lediglich keine Klassen und Pakete, dafür aber eventuell andere Dateiarten, die in entsprechender Weise zu behandeln sind.
<a name="Wie">[Halbierungssuche](https://texwelt.de/wissen/fragen/569#Wie):</a>
-----------------
Die *Halbierungssuche*, die auch als *binäre Suche* oder *Teile und
Herrsche* bekannt ist, kann von jedem Anfänger bewältigt werden. Sie erscheint
zwar am Anfang aufwändig, kann es bei großen Dokumenten und komplexen
Problemen auch sein, erfordert aber kaum Fachwissen.
Vorarbeiten:
* *Anfertigen einer neuen Arbeitskopie:*
Dieser Schritte ist extrem wichtig, um zu vermeiden, dass man Teile der
bereits geleisteten Arbeit vernichtet. Dazu kopiert man das komplette
Verzeichnis des Dokuments. Alle weiteren Schritte erfolgen dann auf der
Kopie, die man zu seinem neuen Arbeitsverzeichnis macht! In der Kopie löscht man alle
Hilfsdateien und führt LaTeX-Läufe, MakeIndex-Aufrufe etc. durch. Tritt
das Problem auch nach mehreren Läufen nicht mehr auf, hatte sich aus einem früheren Fehler beispielsweise
in einer Überschrift oder einem Label ein Fehler in einer Hilfsdatei eingeschlichen,
der durch Beseitigung des Fehlers und der Hilfsdatei verschwunden ist. Man hat also Glück gehabt und muss gar nichts weiter tun als entweder mit der Kopie weiterzuarbeiten oder die Schritte, die man für die Kopie durchgeführt hat, auch auf das Original anzuwenden.
* *Löschen aller Teile nach der Problemstelle:*
Hierzu kommentiert man alle Teile aus dem Dokument aus, die nach dem
Absatz stehen, in dem das Problem auftritt. Dann löscht man alle
Hilfsdateien und führt LaTeX-Läufe, MakeIndex-Aufrufe etc. durch. Tritt
das Problem nicht mehr auf, hat man zuviel auskommentiert. In diesem Fall
muss man auch für die Teile hinter der Problemstelle die Halbierungssuche
durchführen.
Durchführung der Halbierungssuche für den Dokumentinhalt (vor oder nach der
Problemstelle):
1. Deaktivieren ca. der Hälfte des entsprechenden Dokumentinhalts. Dies kann
zunächst durch auskommentieren geschehen. Bei Dokumenten, die aus
mehreren Dateien bestehen, kann man auch komplette `\input`- oder
`\include`-Anweisungen auskommentieren. Man kann auch die Anweisung
`\end{document}` nach vorn kopieren. Alles, was nach dem ersten
`\end{document}` steht, wird ignoriert. Das gilt auch, wenn dieses
`\end{document}` in einer Datei steht! Teile vom Ende einer Datei, die
per `\input` oder `\include` gelesen wird, kann man auch deaktivieren,
indem man `\endinput` in die Datei einfügt. Alles, was danach steht, wird
ignoriert.
2. Löschen aller Hilfsdateien. Dieser Schritt ist besonders für den Anfänger
wichtig, da er nicht weiß, welche Auswirkungen die Hilfsdateien haben
können!
3. Durchführung von LaTeX-Läufen, MakeIndex-Aufrufen etc. bis
sicher ist, dass das Problem entweder noch besteht oder nicht mehr besteht.
4. Falls das Problem noch besteht, löscht man alle deaktiverten Teile und
fährt bei Schritt 1 fort.
5. Falls das Problem nicht mehr besteht, aktiviert man ca. die Hälfte des
deaktiverten Teils wieder und fährt bei Schritt 2 fort.
Dieses Verfahren führt man so lange durch, bis das Dokument auf den Teil
reduziert ist, der zu dem Problem führt. Sollten dabei große Teile des
Dokuments als unverzichtbar übrig bleiben, sollte man wahlweise das Paket
[`blindtext`][5] oder [`lipsum`][6] laden und Schritt 1 wie folgt abwandeln:
1. Deaktivieren von größeren Dokumentpassagen und einfügen von `\blindtext`-
bzw. `\lipsum`-Anweisungen als Ersatz dieser Passagen.
Nachdem die Halbierungssuche für den Dokumentinhalt ausgeführt wurde, führt
man sie in gleicher Weise für die Definitionen und das Laden von Paketen in
der Dokumentpräambel durch. Wenn das Deaktivieren von Paketen oder
Definitionen in der Dokumentpräambel in Schritt 3 zu neuen Fehlermeldungen
führt, überprüft man zusätzlich, ob man die neuen Fehlermeldungen auf einfache
Weise beseitigen kann. So kann man beispielsweie das Laden einer Abbildung mit
`\includegraphics` häufig dadurch ersetzen, dass man eine `\rule`-Anweisung
verwendet. Dabei gibt man als erstes Argument die gewünschte Breite der
ursprünglichen Abbildung und als zweites Argument die Höhe derselben an. Eine
Alternative findet sich nachfolgend unter *»Ergänzende Maßnahmen«*.
Nicht beseitigen muss man die Pakete `fontenc`, `fontspec`, `inputenc` (oder `selinput`) und `babel` oder `polyglossia`. Bei aktuellen TeX-Distributionen wird tatsächlich kein `inputenc` (oder `selinput`) mehr benötigt, wenn die Ausgangsdatei UTF-8-codiert ist, was sie im Idealfall sein sollte. Das gilt inzwischen auch für den Online-Editor Overleaf. Braucht man unbedingt Kompatibilität zu total veralteten LaTeX-Distributionen, sei gegebenenfalls `\usepackage[utf8]{inputenc}` empfohlen. Sollte das Dokument lokal nicht in UTF-8 codiert sein, bietet sich die Verwendung von [`selinput`](https://ctan.org/pkg/selinput) an, damit für die lokale Kopie die zusätzliche Hürde der [Umcodierung](https://texwelt.de/wissen/fragen/2656) vermieden wird, das Dokument eine implizite Umcodierung durch die Übertragung bzw. das Einfügen in eine WWW-Seite aber fehlerfrei übersteht. Näheres ist der Anleitung zu dem Paket zu entnehmen.
Sinnvoll ist auch, die Optionen bei `\documentclass` und `\usepackage` zu reduzieren. So haben beispielsweise Farbeinstellungen beim Laden von `hyperref` meist keine Auswirkungen auf das Problem und sollten dann entfallen.
<a name="ergaenzend">[Ergänzende Maßnahmen](https://texwelt.de/wissen/fragen/569#ergaenzend):</a>
---------------------
Sobald man nur noch die Teile hat, die für das Problem zuständig sind, sollte
man nach Möglichkeit:
* <a name="input">[`\input`- und `\include`-Anweisungen eliminieren](https://texwelt.de/wissen/fragen/569#input):</a>
Dazu kopiert man den Code der entsprechenden Dateien an die Stelle der
jeweiligen Anweisung und führt dann natürlich erneut Testläufe durch. Im
Idealfall kann man so alle `\input` und alle `\include` beseitigen.
* <a name="Bilder">[Grafikdateien überflüssig machen](https://texwelt.de/wissen/fragen/569#Bilder):</a>
Dazu fügt man beim Laden von `graphicx` die Option `demo` ein und führt
dann erneut Testläufe durch. Dabei werden alle Bilddateien im Dokument
durch schwarze Kästen ersetzt. Allerdings haben diese Kästen nur dann
dieselbe Größe wie die ursprünglichen Bilder, wenn die Optionen `width`
und `height` bei den `\includegraphics`-Anweisungen angegeben sind und die
Option `keepaspectratio` nicht angegeben war. Hier sind also
ggf. zusätzliche Änderungen erforderlich.
Alternativ ersetzt man alle `\includegraphics`-Anweisungen durch
`\rule`-Anweisungen. Dabei gibt man als erstes Argument die gewünschte
Breite und als zweite die gewünschte Höhe der *Ersatzabbildung* an.
Eine weitere Alternative besteht in der Verwendung des Pakets
[`mwe`](https://www.ctan.org/pkg/mwe), das auch einige Beispielabbildungen
wie `example-image` in verschiedenen Dateiformaten bereitstellt. Diese kann
man einfach an Stelle der eigenen Abbildungen verwenden. Gegebenenfalls kann man
die Größe über die Optionen `width` und `height` bei `\includegraphics`
an die der eigenen Grafiken anpassen. Näheres zu diesen Beispielbildern ist bei
Bedarf der Anleitung des Pakets zu entnehmen.
* <a name="Literatur">[Literaturdatenbank überflüssig machen](https://texwelt.de/wissen/fragen/569#Literatur):</a>
Wenn die konkreten Einträge in der Literaturdatenbank (`bib`-Datei) keine Rolle spielen, kann man diese durch Einträge aus `biblatex-examples.bib` ersetzen. Diese recht umfangreiche Literaturdatenbank wird mit `biblatex` zusammen installiert. Man kann sie daher (statt der eigenen Literaturdatenbank) in Beispielen verwenden, die `biblatex` benötigen und einfach einen oder mehrere Datensätze des gewünschten Typs nutzen. Die Schlüssel sind direkt der Datenbankdatei zu entnehmen. Diese ist über die Dateisuche oder [im Terminal](https://texwelt.de/wissen/fragen/3461) mit »`kpsewhich biblatex-examples.bib`« unter allen Betriebssystemen leicht zu finden. Man erspart sich damit die eigene, minimierte [Literaturdatenbank als zusätzliche Textdatei beizufügen](https://texwelt.de/wissen/fragen/569#Textdateien). Man ersetzt also beispielsweise `\addbibresource{meineLiteratur.bib}` durch `\addbibresource{biblatex-examples.bib}` und `\cite{meineHomepage}` durch `\cite{ctan}` und überprüft, ob das Problem damit noch immer auftritt. Ist das der Fall, bleibt man für das VM dabei.
* <a name="Version">[Klassen- und Paketversionen ermitteln](https://texwelt.de/wissen/fragen/569#Version):</a>
Nicht selten hängt ein Problem auch von der Version eines Pakets oder einer Klasse
ab. Der einfachste Weg, diese zu ermitteln, stellt die `\listfiles`-Anweisung dar.
Aus Gründen der Übersicht hat sich eingebürgert, diese noch vor `\documentclass` zu setzen, obwohl dafür keine technische Notwendigkeit besteht. Die Anweisung sorgt dafür, dass am Ende der Log-Datei eine Dateiliste geschrieben wird. So erzeugt:
% !TEX log
\listfiles
\documentclass{article}
\begin{document}
\end{document}
  zwar kein Dokument (also PDF- oder DVI-Datei) aber in der Log-Datei dennoch die Ausgabe:
  <pre>`*File List*
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
***********`</pre>
<a name="Alternative">[Alternatives Vorgehen:](https://texwelt.de/wissen/fragen/569#Alternative)</a>
----------------------
Alternativ zur *Halbierungssuche* kann man auch ein neues Dokument aufbauen.
Dies ist ein alternatives Vorgehen, das erfahrene Anwender gerne nutzen, wenn
ihr Ausgangsdokument sehr komplex ist. Dazu legen sie ein neues Verzeichnis
mit einem neuen Dokument an. In dieses Dokument wird dann Schritt für Schritt
Code aus dem ursprünglichen Dokument kopiert. Dabei geht man quasi wie bei der
*Halbierungssuche* vor, nur dass man nicht aus dem Dokument löscht, sondern
Code in das neue Dokument einfügt und bei Misserfolg wieder entfernt. Dieses
Vorgehen ist nur zu empfehlen, wenn man bereits einen Verdacht über die
Ursache hat. Daran anschließen sollte sich in jedem Fall noch eine
*Halbierungssuche* zur Minimierung des Codes, wie sie oben beschrieben wurde.
<a name="Dateien">[Vollständige Minimalbeispiele aus mehreren Dateien](https://texwelt.de/wissen/fragen/569#Dateien)</a>
==================================================
Ist es trotz aller Minimierungsleistung (siehe oben) erforderlich, dass ein
*VM* aus mehreren Dateien besteht, so kann man für diese je nach Dateiart wie
nachfolgend erkärt vorgehen.
<a name="Textdateien">[Zusätzliche Dateien im Textformat:](https://texwelt.de/wissen/fragen/569#Textdateien)</a>
----------------------------------
In diesen Bereich gehören Unterdokumente, die sich nicht durch *ergänzende
Maßnahmen* beseitigen liesen, aber auch Literaturdatenbanken
(bib-Dateien). Falls ein Problem in einer eigenen Paketdatei auftritt,
kann auch eine minimierte Fassung derselben in diesen Bereich gehören.
Falls diese Dateien nicht auf einige wenige Zeilen reduziert werden
können, sollte man sie in ein Archiv zusammen packen und per Link
*dauerhaft* zum Download bereit stellen. Dieses Vorgehen sollte aber nur
*im absoluten Notfall* gewählt werden, da es die Chancen auf Antworten
reduziert und außerdem extern Datenquellen immer verloren gehen können.
Falls diese Dateien auf einige wenige Zeilen reduziert werden können, sind
sie in Form von `filecontents`-Umgebungen anzugeben. Die Umgebung erwartet
genau ein Argument: den Dateinahmen unter dem der Inhalt der Umgebung
gespeichert werden soll.
Hier ein kurzes Beispiel:
\begin{filecontents}{meinPaket.sty}
\ProvidesPackage{meinPaket}[2013/07/02 Beispiel]
\ProcessOptions\relax
\end{filecontents}
\listfiles
\documentclass{article}
\usepackage{meinPaket}
\begin{document}
Test
\end{document}
Die `filecontents`-Umgebung erzeugt also die Datei `meinPaket.sty`, die
anschließend in der Dokumentpräambel via `\usepackage{meinPaket}` geladen
wird. Dabei tritt ein Fehler auf, weil `\ProvidesPackage` falsch
geschrieben wurde.
Wie im Beispiel angewendet wird die Datei von der `filecontents`-Umgebung übrigens nur erzeugt, wenn sie nicht bereits vorhanden ist. Eine vorhandene Datei wird also nicht überschrieben. Wenn man also Änderungen in der Umgebung vornimmt, muss die Datei von Hand gelöscht werden. Dies kann man ab LaTeX 2019-10-01 über das optionale Argument `force` oder `overwrite` ändern. Mit
\begin{filecontents}[force]{meinPaket.sty}
\ProvidesPackage{meinPaket}[2013/07/02 Beispiel]
\ProcessOptions\relax
\end{filecontents}
\listfiles
\documentclass{article}
\usepackage{meinPaket}
\begin{document}
Test
\end{document}
wird dann das Paket `meinPaket.sty` bei jedem LaTeX-Lauf neu erzeugt, eine vorhandene Datei also überschrieben.
Bei älteren LaTeX-Versionen kann man das gleiche durch Voranstellen von
\RequirePackage{filecontents}
erreichen. Dann überschreibt die `filecontents`-Umgebung auch ohne optionales Argument die Datei bei jedem LaTeX-Lauf. Also aufgepasst! Hier zeigt sich wie wichtig es ist, Tests nicht im Dokumentverzeichnis, sondern nur in einer Kopie durchzuführen. Sonst droht Datenverlust!
Übrigens muss im Beispiel `\RequirePackage` an Stelle von `\usepackage` für das Laden von Paket `filecontents` verwendet werden, weil `\usepackage` erst nach `\documentclass` verwendet werden kann. Dies ist als Ausnahme für die Verwendung von `\RequirePackage` in einem Dokument zu betrachten. Eine weitere Ausnahme wäre übrigens ggf. das Laden von Paket [`fixcm`][8], das ebenfalls vor `\documentclass` geladen werden sollte.
Will man eine Datei erzeugen, deren Dateinamen bis auf die Endung mit der Hauptdatei übereinstimmt, so kann man übrigens `\jobname` verwenden. Im folgenden Beispiel wird dies für die Literaturdatenbank gezeigt:
\begin{filecontents}{\jobname.bib}
\@online{ bk:test,
author={Saputello},
title={Was ist ein vollständiges Minimalbeispiel oder kurz VM und wie
erstelle ich dieses?},
url={https://texwelt.de/wissen/fragen/569/was-ist-ein-vollstandiges-minimalbeispiel-oder-kurz-vm-und-wie-erstelle-ich-dieses}
}
\end{filecontents}
\listfiles
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Das ist ein Beispiel aus \cite{bk:test}.
\printbibliography
\end{document}
Wenn die konkreten Einträge in das Literaturverzeichnis für das Problem keine Rolle spielen, sollte man übrigens besser [auf das Beifügen einer Literaturdatenbank verzichten](#Literatur) und stattdessen direkt die Beispieldatenbank von `biblatex` verwenden, also entsprechend dem obigen Beispiel:
\listfiles
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Das ist ein Beispiel aus \cite{markey}.
\printbibliography
\end{document}
Ich habe hier also die Online-Quelle `bk:test` aus `\jobname.bib` durch die Online-Quelle `markey` aus `biblatex-examples.bib` ersetzt und mir so das Beifüge von `\jobname.bib` erspart.
<a name="Binaerdateien">[Zusätzliche Dateien im Binärformat:](https://texwelt.de/wissen/fragen/569#Binaerdateien)</a>
-----------------------------------
In diesen Bereich fallen alle Bilddateien sowie Dokumentdateien im
PDF-Format. Für diese Art von Dateien sollte man unbedingt noch einmal prüfen,
ob man ihre Verwendung einsparen kann. Dazu ist wie oben unter <a href="ergaenzend">*»Ergänzende
Maßnahmen«*</a> angegeben vorzugehen. Bleiben dann dennoch solche Dateien übrig,
so sind diese als Archiv zusammen zu packen und via Link dauerhaft zum
Download anzubieten.
<a name="vollstaendig">[Wie kann ich sicher stellen, dass mein Beispiel vollständig ist?](https://texwelt.de/wissen/fragen/569#vollstaendig)</a>
================================================================
Das ist normalerweise der letzte, aber auch einfachste Schritt. Dazu gibt es
zwei mögliche Vorgehensweisen:
* *Konstruktives Vorgehen* (= sichere Methode):
Man legt ein neues Arbeitsverzeichnis an, kopiert nur die Datei(en) in
dieses Arbeitsverzeichnis, die man als *VM* weiterzugeben gedenkt und
führt dann einen oder auch mehrere LaTeX-Läufe einschließlich aller
eventuell weiteren notwendigen Programmläufe wie BibTeX, biber, MakeIndex
etc. in diesem neuen Arbeitsverzeichnis aus.
* *Destruktives Vorgehen* (= gefährliche Methode):
Man löscht im aktuellen Arbeitsverzeichnis alle Dateien, die man nicht als
Teil des *VM* betrachtet. Doch *Vorsicht*: Falls man dabei Dateien löscht,
die man noch benötigt, hat man danach ein großes Problem. Um das sicher zu
vermeiden, kann man stattdessen auch das *konstruktive Vorgehen* wählen.
Entscheidet man sich für das Löschen der Dateien, sollte man auf jeden
Fall alle Hilfsdateien wie `*.aux`, `*.toc`, `*.log`, `*.ind`, `*.idx`,
`*.glo`, `*.gls` etc. löschen. Anschließend führt man noch einen oder auch
mehrere LaTeX-Läufe einschließlich aller eventuell weiteren notwendigen
Programmläufe wie BibTeX, biber, MakeIndex etc. in diesem neuen
Arbeitsverzeichnis aus.
Falls dieser LaTeX-Lauf bzw. die LaTeX-Läufe genau das Problem zeigt, das Thema einer Frage ist,
hat man das Ziel fast erreicht. Auch wenn es eigentlich selbstverständlich ist, sei aber noch einmal explizit erwähnt, dass ein Code-Ausschnitt niemals ein *vollständiges Minimalbeispiel* sein kann. Wie der Name schon sagt, muss ein ein *VM* immer den kompletten Code und alle Dateien enthalten, die für den LaTeX-Lauf notwendig sind, mit dem man das Problem reproduzieren kann. Sobald jemand weiteren Code hinzufügen oder irgend etwas an dem Code ändern muss, um das Problem reproduzieren zu können, ist das Beispiel nicht mehr vollständig.
<a name="ausserdem">[Worauf sollte ich abschließend unbedingt noch achten?](https://texwelt.de/wissen/fragen/569#ausserdem)</a>
=====================================================
* <a name="Paketquelle">[Quelle für spezielle Klassen und Pakete angeben!](https://texwelt.de/wissen/fragen/569#Paketquelle)</a>
Wenn man das *VM* dann als [Code-Block][9] in seine Frage eingefügt hat, sollte man noch einmal kontrollieren, dass die verwendeten Klassen und Pakete auch tatsächlich auf den einschlägigen Quellen, in der Regel also auf [CTAN][10] zu finden sind. Falls das nicht der Fall ist, ist unbedingt ein Download-Link für die fehlende Klasse bzw. die fehlenden Pakete anzugeben. Besser ist jedoch, wenn man überprüft, ob das Beispiel auch mit einer allgemeineren Klasse, beispielsweise einer Standardklasse, bzw. ohne Spezialpakete das Problem zeigt.
* <a name="Klasse_minimal">[Klasse `minimal` ist nicht für Minimalbeispiele gedacht!](https://texwelt.de/wissen/fragen/569#Klasse_minimal)</a>
Es sei explizit darauf hingewiesen, dass `minimal` keine Klasse für Minimalbeispiele ist, sondern eine rudimentäre Klasse zum Testen des LaTeX-Kerns. Eine Standardklasse wie `article`, `report` oder `book` ist daher für Minimalbeispiele vorzuziehen.
* <a name="Klasse_standalone">[Klasse `standalone` ist nicht für Minimalbeispiele gedacht!](https://texwelt.de/wissen/fragen/569#Klasse_standalone)</a>
Es sei an dieser Stelle auch darauf hingewiesen, dass [`standalone`](https://ctan.org/pkg/standalone) für ein *vollständiges Minimalbeispiel* eher schlecht geeignet ist. Diese Klasse ist sehr speziell. Nicht alles funktioniert mit ihr wie mit einer herkömmlichen Klasse. Sie sollte daher für Testcode – und genau darum handelt es sich bei einem *vollständigen Minimalbeispiel* – nur dann verwendet werden, wenn die Verwendung von `standalone` Teil des Problems ist. Sonst gilt dasselbe wie bereits für `minimal` und andere Spezialklassen erwähnt: *Optimalerweise testen, ob das Problem auch mit einer Standardklasse auftritt und dann eine solche für das vollständige Minimalbeispiel verwenden.*
* <a name="TeX-Engine">[Programme angeben!](https://texwelt.de/wissen/fragen/569#TeX-Engine)</a>
Sollte für die Bearbeitung ein bestimmter (La)TeX-Prozessor notwendig sein, beispielsweise `xelatex`, `pdflatex` oder `lualatex`, so sollte man das am besten unmittelbar vor oder am Anfang des *VM* angeben. Bei LaTeX-Beispielen, die sowohl mit `latex`,`pdflatex`, `xelatex` oder `lualatex` funktionieren, ist das hingegen nicht zwingend. Es schadet aber auch nichts, dazu zu
schreiben, was man verwendet. Das erspart ggf. Rückfragen. Auch sollte man insbesondere bei Problemen, die zusätzliche Arbeitsschritte wie den Aufruf von `makeindex`, `xindy`, `makeglossaries`, `bibtex`, `bibtex8`, `biber` oder vergleichbare Programme benötigen, nach Möglichkeit genau angeben, in welcher Reihenfolge man was aufgerufen hat und ob diese Programme dabei Fehler ausgegeben haben.
* <a name="Fehlermeldungen">[Fehlermeldungen im Original zitieren!](https://texwelt.de/wissen/fragen/569#Fehlermeldungen)</a>
Sind Fehlermeldungen Teil des Problems sollte man diese wörtlich aus der Log-Datei kopieren. Bei LaTeX trägt diese die Endung `.log`, bei BibTeX oder Biber die Endung `.blg`, bei MakeIndex oder Xindy kann die Log-Datei unterschiedliche Endungen haben. Auch hier eignet sich für das Kopieren in den Beitrag ein [Code-Block][11]. Dabei ist wichtig, dass man nicht zu viel weglässt. Gleichzeitig ist aber meist auch nicht die gesamte Log-Datei notwendig. Treten mehrere Fehler auf, genügen in
der Regel die ersten bis bis drei, weil alle weiteren häufig Folgefehler sind. Wird doch die gesamte Log-Datei benötigt, so sollte man sie möglichst dauerhaft über einen Link bereitstellen, aber trotzdem wichtige Passagen daraus zitieren.
* <a name="AlleAngaben">[Alle Informationen gehören in die Frage selbst!](https://texwelt.de/wissen/fragen/569#AlleAngaben)</a>
Das vollständige Minimalbeispiel sollte natürlich auch nicht in einem Kommentar versteckt werden. Stattdessen sollte der Fragesteller es direkt in der Frage unterbringen. Wird hier auf TeXwelt ein VM nachträglich per Kommentar nachgefragt, sollte der Fragesteller seine Frage editieren, um das VM einzufügen. Das Editieren ist für den Fragesteller einfach über den `Bearbeiten`-Link unter der Frage möglich.
* <a name="NichtSchummeln">[Nichts verändern!](https://texwelt.de/wissen/fragen/569#NichtSchummeln)</a>
Leider erleben wir auch immer wieder, dass Fragesteller an ihren Beispielen vor dem Absenden der Frage noch nachträglich etwas verändern und die Beispiele dann nicht mehr funktionieren oder nicht mehr das Problem zeigen. Daher sei abschließend noch als wichtiger Punkt etwas erwähnt, was eigentlich selbstverständlich sein sollte: *Bitte nur getestete Minimalbeispiele zeigen, mit denen wirklich das Problem reproduziert werden kann und die auch der begleitenden Beschreibung vollumfänglich entsprechen! Nach dem abschließenden Test in einem neuen Verzeichnis keine noch so kleinen Änderungen mehr vornehmen! Vor dem Verschicken der Frage noch einmal kontrollieren, dass auch das richtige Beispiel kopiert wurde!*
* <a name="AusfuehrungTesten">[Ausführung testen!](https://texwelt.de/wissen/fragen/569#AusfuehrungTesten)</a>
[Da korrekt markierter Code, hier auf TeXwelt und beispielsweise auch auf goLaTeX, automatisch mit einem Knopf versehen wird, über den man ihn direkt ausführen kann](https://texwelt.de/fragen/27509) kann man dies natürlich ebenfalls nutzen, um seinen Code nach dem Speichern des Beitrags nochmal selbst zu testen. Unerwartete Fehler oder unerwartete Ergebnisse sind ein Anhaltspunkt dafür, was bei anderen Anwendern ebenfalls geschehen wird. Ob man dann das Beispiel nochmals überarbeitet oder lediglich durch zusätzliche Informationen (beispielsweise zu verwendeten LaTeX-, Klassen- und Paketversionen oder Code-Zitaten von Fehlermeldungen oder Screenshots aus dem PDF) ergänzt, hängt von der Art des Problems und des unerwarteten Ergebnisses ab und ist nicht allgemein beantwortbar. Einfach ignorieren sollte man das als Fragesteller jedoch nicht.
[1]: https://texwelt.de/wissen/fragen/frage-stellen/ "Stelle eine Frage auf TeXwelt"
[2]: http://daringfireball.net/projects/markdown/syntax#precode "Code-Blocks in Markdown-Syntax"
[3]: http://daringfireball.net/projects/markdown/syntax#precode "Code-Blocks in Markdown-Syntax"
[4]: https://texwelt.de/wissen/upfiles/test_20190219_151959.png
[5]: https://www.ctan.org/pkg/blindtext "Paket für die Erstellung von Dokumenten mit Dummy-Inhalt"
[6]: https://www.ctan.org/pkg/lipsum "Paket für die Erzeugung von Dummy-Absätzen"
[7]: https://www.ctan.org/pkg/selinput "Eingabecodierung unabhängig von Editoreinstellungen festlegen"
[8]: https://www.ctan.org/pkg/fix-cm
[9]: http://daringfireball.net/projects/markdown/syntax#precode "Code-Blocks in Markdown-Syntax"
[10]: https://www.ctan.org/search?ext=true&PKG=on&max=256 "Suche auf CTAN"
[11]: http://daringfireball.net/projects/markdown/syntax#precode "Code-Blocks in Markdown-Syntax"