Minimalbeispiel

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


AndreaTh
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Sa 29. Aug 2020, 18:36

Minimalbeispiel

Beitrag von AndreaTh »

Ich wurde aufgefordert, ein Minimalbeispiel zu erstellen, was mir schwerfiel. Das Problem entstand auf den letzten Seiten von insgesamt 18, und ich hab mich gescheut, da die volle Präämbel mit 18 Seiten Blindtext zusammen zu kleben.
Ich erhielt die Aufforderung, mir die Anleitung zum Minimalbeispiel noch mal genau durchzulesen. Das habe ich getan.
In der Anleitung steht:

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.



Nun war aber genau das das Problem, daß ich ja nicht wußte, was genau dazu führt, daß diese vier Seiten von den anderen, korrekten, abweichen.
Natürlich kann ich dei Datei kopieren und dann langsam alles auskommentieren, aber das hätte in jeder möglichen Kombination Tage gedauert. Also meine Frage;:
wenn es wieder so ein undurchsichtiges Verhalten des compilers bei so einem umfangreichen Dokument gibt, wie kann ich dann ein Minimalbeispiel erstellen?
Danke.


gast

Re: Minimalbeispiel

Beitrag von gast »

Wenn man das mit dem Auskommentieren so macht, wie in der Anleitung angegeben, dann dauert es nicht Tage. Und wer seine Dokumentpräambel mit lauter Code vollgekleistert hat, von dem er keine Ahnung hat, wozu er gut ist, macht ohnehin etwas falsch und sollte dringen ausmisten! Das wiederum kann man genau so machen, wie in der Minimalbeispiel-Anleitung ausführlich erklärt.


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Minimalbeispiel

Beitrag von MoeWe »

Für klassische "welche Zeile produziert meine Fehlermeldung"-Probleme ist die in den einschlägigen Minimalbeispiel-Anleitung erklärte Binärsuchmethode (Hälfte der Datei Löschen - wenn Fehler nicht mehr reproduzierbar, andere Hälfte wieder herstellen - wiederholen) eine äußerst effiziente Methode, um das Problem einzugrenzen. Da Du den betrachteten Code in jedem Schritt halbierst, brauchst Du nur $O(\log n)$ Schritte. Es sind also selbst lange Dokumente mit tausenden Zeilen in 10 bis 15 Schritten verkleinert. Das macht man jetzt vielleicht nicht in fünf Minuten, aber in die Größenordnung Tage sollte man nicht vordringen müssen. Ich denke in den meisten Fällen ist es bei der mechanischen Methode sinnvoll, erst den Dokumentenkörper zwischen \begin{document}...\end{document} und dann auch die Präambel soweit wie möglich zu minimalisieren. Man würde die Prozedur also zwei mal durchführen.

Natürlich gibt es auch Möglichkeiten, mit Erfahrung oder ein Bisschen Glück, ein Minimalbeispiel schneller zusammen zu bekommen. So kann man manchmal sehen oder erraten, dass bestimmte Codeabschnitte oder Pakete mit dem Problem nichts zu tun haben, und die im ersten Schritt schon großzügig rausschneiden.

Auch bei anderen Problemen sollte die Binärsuchmethode prinzipiell zum Ziel führen. Ich kann aber verstehen, dass sie bei kontextabhängigen Dingen wie Zeilen- und Seitenumbrüche, Gleitumgebungspositionierung und andere generelle Satzfragen etwas schwieriger umzusetzen scheint und ist. Schließlich kann es dort passieren, dass das simple Löschen von Text/Codeblöcken den Kontext so ändert, dass die problematischen Effekte nicht mehr auftreten. Bei solchen Problemen kann es daher sinnvoll sein, etwas großzügiger vorzugehen und etwas weitere Netze auszulegen. Dennoch ist es so, dass auch hier viel Text/Code entfernt werden kann: Wie genau der Text zehn Seiten zuvor aussieht, wird für das tatsächliche Problem oftmals unerheblich sein, wichtig ist maximal, wie er die späteren Seitenumbrüche beeinflusst. Das kann aber oftmals mit einfachem Blindtext auf wesentlich weniger Seiten nachgebaut werden. Das geht vielleicht nicht so schnell wie die normale Binärsuche, aber auch hier musst Du nicht jede beliebige Kombination von Zeilen ausprobieren.

Bei vielen Problemen ist ein Minimalbeispiel leider fast unerlässlich, wenn Du eine sinnvolle Antwort erwartest. Es gibt sonst einfach zu viele Variablen, die wir nicht alle durch Raten abdecken können. Sieh daher die Aufforderung, ein Minimalbeispiel beizusteuern, nicht als herblassenden Versuch, Dich zu beschäftigen oder Dir Steine in den Weg zu legen, sondern als ersten und entscheidenden Schritt zur Lösung des Problems.


Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: Minimalbeispiel

Beitrag von u_fischer »

Natürlich kann ich dei Datei kopieren und dann langsam alles auskommentieren, aber das hätte in jeder möglichen Kombination Tage gedauert.

Nein, normalerweise nicht. Ich brauche auch bei vielen Hundert Seiten selten mehr als eine halbe Stunde, um ein Problem einzugrenzen. Du musst ja nicht jede mögliche Kombination ausprobieren. Du musst nur Dinge entfernen, die mit dem Fehler nichts zu tun haben. Wenn das "komische Verhalten" auf Seite 14 beginnt, kannst du meist einfach schon mal alles von den Seiten 1-12 kommentieren, testen und dann entfernen.

Um ein Minimalbeispiel schnell und effektiv zu erzeugen, braucht es etwas Übung. Aber die bekommst du nur, wenn du es einfach mal versuchst. Es kann ja nichts passieren, wenn du an einer Kopie arbeitest und Sicherheitskopien hast: Schlimmstenfalls kehrst du die Reste zusammen, schmeißt sie in die Tonne und holst dir eine neue Kopie.


Antworten