Datei nicht kompilierbar auf neuem PC

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Datei nicht kompilierbar auf neuem PC

von MoeWe » So 29. Dez 2019, 17:40

Gast hat geschrieben:Tatsächlich hatte ich in meiner bib-Datei einen Eintrag mit einem Autorennamen, der nicht nur mit zwei Akzenten geschrieben wird, sondern um den herum auch ein Paar geschweifte Klammern zu viel stand.

[...]

Was ich unglaublich finde, ist, dass dieser Fehler (also überflüssige Klammern) auf meinem alten System nie zu Problemen geschweige denn zu einem Abbruch des Kompilierungsprozesses geführt hat, auf dem neuistallierten MikTeX bzw TeXnicCenter aber die Kompilierung komplett blockiert.
Diese unnötigen Klammern in der .bib-Datei sind eine unendliche Geschichte. Biber hat da von Zeit zu Zeit Probleme gehabt (z.B. https://github.com/plk/biber/issues/210 und https://github.com/plk/biber/issues/297). Die aktuelle Version 2.14 verschluckt sich da wieder, das wird in der nächsten Version aber wieder gehen. Zwischendurch gab es auch noch eine Version, die da Probleme hatte (2.8? 2.7?). Da Biber auf Perl-Regex basiert, ist es nicht so ganz einfach, mit den Klammern richtig umzugehen, denn Regex kennt das Konzept von Schachtelung nicht (zumindest nicht ohne aus Performance-Gründen schwierige Erweiterungen?).

Wenn Du nicht gerade die eine alte Version, die Probleme mit Klammern hatte, auf Deinem alten Rechner hattest, dann fiel Dir das Problem eben nicht auf.

Gerade das ADS erzeugt wirklich verdammt viele Klammern, die es eigentlich nicht braucht.

Ich empfehle, alle unnötigen Klammern zu entfernen und zu Unicode überzugehen. Das erzeugt meiner Erfahrung nach am wenigsten Ärger und sieht am besten aus. Also
author = {Vögler, A. and Schüssler, M.},
statt author = {{V{"o}gler}, A. and {Sch{"u}ssler}, M.},.

von Gast » So 29. Dez 2019, 17:08

So, ich bin vorsichtig optimistisch, das Problem gelöst zu haben:

Tatsächlich hatte ich in meiner bib-Datei einen Eintrag mit einem Autorennamen, der nicht nur mit zwei Akzenten geschrieben wird, sondern um den herum auch ein Paar geschweifte Klammern zu viel stand.

Wenn ich diese Klammern entferne, dann einmalig die alten Hilfsdateien entferne und dann neu kompiliere, wird das Dokument ohne Fehler erstellt.

Was ich unglaublich finde, ist, dass dieser Fehler (also überflüssige Klammern) auf meinem alten System nie zu Problemen geschweige denn zu einem Abbruch des Kompilierungsprozesses geführt hat, auf dem neuistallierten MikTeX bzw TeXnicCenter aber die Kompilierung komplett blockiert.

Ich habe jetzt jedenfalls das Dokument ungefähr 10-mal erfolgreich kompiliert, es werden keine Fehler, nur noch 5 Warnungen ausgegeben, die ich aber schon kannte - ich hoffe sehr, dabei bleibt es.

Ganz herzlichen Dank an alle, die geholfen haben, besonders an MoeWe, Johannes B und u_fischer!

von MoeWe » So 29. Dez 2019, 13:46

Gast hat geschrieben:Ich nehme an, dass in meiner bib-Datei irgendwo ein Fehler ist, der die Auflösung der Literaturhinweise verhindert und den Absturz verursacht. [...] Googlen brachte mich darauf, dass es mit der Zahl von geschweiften Klammern und Akzenten auf Namen zu tun haben könnte.
Ja, es sieht ganz so aus. Wahrscheinlich ist es https://github.com/plk/biber/issues/297

Mach mal die .bbl-Datei mit einem Texteditor auf und such nach bcb1035528c2b91c39e16573139edbe9. Du solltest mindestens einen Treffer in einem Block haben, der in etwa wie folgt aussieht
    \entry{sigfridsson}{article}{}
      \name{author}{2}{}{%
        {{un=0,uniquepart=base,hash=484061f383fb3b729627e12ab42c1963}{%
           family={Sigfridsson},
           familyi={S\bibinitperiod},
           given={Emma},
           giveni={E\bibinitperiod},
           givenun=0}}%
        {{un=0,uniquepart=base,hash=b7e299b632e5db12681c2decc8ce023f}{%
           family={Ryde},
           familyi={R\bibinitperiod},
           given={Ulf},
           giveni={U\bibinitperiod},
           givenun=0}}%
      }
      \strng{namehash}{d9015d9f08448ab0cb194bd964d7b44b}
      \strng{fullhash}{d9015d9f08448ab0cb194bd964d7b44b}
      \strng{bibnamehash}{d9015d9f08448ab0cb194bd964d7b44b}
      \strng{authorbibnamehash}{d9015d9f08448ab0cb194bd964d7b44b}
      \strng{authornamehash}{d9015d9f08448ab0cb194bd964d7b44b}
      \strng{authorfullhash}{d9015d9f08448ab0cb194bd964d7b44b}
      \field{sortinit}{S}
      \field{sortinithash}{c319cff79d99c853d775f88277d4e45f}
      \field{extradatescope}{labelyear}
      \field{labeldatesource}{}
      \field{labelnamesource}{author}
      \field{labeltitlesource}{title}
      \field{indextitle}{Methods for deriving atomic charges}
      \field{journaltitle}{Journal of Computational Chemistry}
      \field{langid}{english}
      \field{langidopts}{variant=american}
      \field{number}{4}
      \field{title}{Comparison of methods for deriving atomic charges from the electrostatic potential and moments}
      \field{volume}{19}
      \field{year}{1998}
      \field{dateera}{ce}
      \field{pages}{377\bibrangedash 395}
      \range{pages}{19}
      \verb{doi}
      \verb 10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P
      \endverb
    \endentry
poste den ganzen Block von \entry bis \endentry hier und zeig uns auch den zugehörigen Eintrag aus der .bib-Datei. Den entry key kannst Du im ersten Argument von \entry ablesen: hier ist es sigfrdisson.

von Gast » So 29. Dez 2019, 13:06

Okay, ich versuche wie von Dir beschrieben das Problem einzukreisen:

Während ich an einem Minimalbeispiel arbeite, habe ich schon einmal versucht, per Kommandozeile zu kompilieren: Nach Löschung der alten Hilfsdateien läuft der erste pdflatex-Lauf ohne Fehler durch, der biber-Lauf ebenfalls. Es gibt ein paar Warnungen, die sind aber offensichtlich nicht das Hauptproblem. Der dann folgende zweite pdflatex-Lauf bricht allerdings ab (es wird zwar ein pdf erzeugt, aber ohne Literaturverzeichnis und ohne Auflösung der Literaturreferenzen). In der Kommandozeile steht beim Abbruch des Laufs als letztes:

(„ C:\ Program Files\MikTeX 2.9\tex/latex/biblatex/lbx\german.lbx“)) (Diss.bbl
…Runaway argument?
{{ un=0, uniquepart0base, hash=bcb1035528c2b91c39e16573139edbe9}{family\ETC.
! Paragraph ended before \name was complete.
<to be read again>
\par
l. 2849
?

In der bbl-Datei, die erzeugt wurde, gibt es 2850 Zeilen, die letzten beiden sind allerding leer.

Ich nehme an, dass in meiner bib-Datei irgendwo ein Fehler ist, der die Auflösung der Literaturhinweise verhindert und den Absturz verursacht. Allerdings hat die bib-Datei 2815 Zeilen, die ich nun wohl einzeln anschauen muss, zumal ich nicht genau weiß, auf welche Art von Fehler ich achten muss. Googlen brachte mich darauf, dass es mit der Zahl von geschweiften Klammern und Akzenten auf Namen zu tun haben könnte.

von MoeWe » So 29. Dez 2019, 07:28

Mhhh, TeXnicCenter scheint schon seit Jahren nicht mehr aktiv entwickelt zu werden. Auf der offiziellen Webseite ist der letzte Eintrag von 2014, die letzte veröffentlichte Version (2.02) ist von 2013. Vielleicht ist es an der Zeit, einen anderen Editor zu suchen. TeXStudio ist sehr populär, TeXworks recht simpel.
Gast hat geschrieben:Mir ist zwar bewusst, dass im Kompilierungsprozess mehrere Programme beteiligt sind, ich stoße diese aber immer gemeinsam an, indem ich in TeXniccenter auf das entsprechende Icon klicke ( entspricht strg+ Umschalt+F5 bzw. Strg.+F5). das Ausgabeprofil habe ich wie hier beschrieben eingestellt: https://texwelt.de/fragen/1909/wie-verw ... nem-editor
Es wäre zur Diagnose des Problem sehr gut, wenn wir die Befehle einzeln ausführen könnten, anstatt uns auf das Kuddelmuddel von TeXnicCenter zu verlassen zu müssen. Am allerbesten geht das über die Kommandozeile, da können wir sichergehen, dass keine Editor-Einstellungen dazwischenkommen. Eine kleine Anleitung, wie Du mit der Kommandozeile arbeiten kannst, findest Du unter https://texwelt.de/fragen/3461/wie-komp ... m-terminal aber es gibt noch wesentlich mehr Material dazu im Internet. Wenn Du mit der Kommandozeile in dem Ordner bist, in dem sich Deine .tex-Datei befindet, kannst Du nacheinander auf der Kommandozeile
pdflatex testdokument
biber testdokument
pdflatex testdokument
pdflatex testdokument
ausführen. (Unter der Annahme, dass Dein .tex-Dokument testdokument.tex heißt und es mit pdfLaTeX kompiliert wird.)

Dabei kannst Du die Ergebnisse der Einzelschritte vernünftig überprüfen.
Gast hat geschrieben:Dass ein Minimalbeispiel sinnvoll (und nötig) wäre, ist mir bewusst, ich tue mich allerding nicht ganz leicht damit, ein solches herzustellen, weil ich das Problem aus meiner ziemlich großen Datei erst einmal isolieren muss.

Ich habe nun einmal den Prozess mit einer kleinen neuen Datei, die nur einen Literaturhinweis enthält, durchgespielt, hier klappt alles.
Wenn Du in einem kleineren Beispiel ein funktionierendes Literaturverzeichnis von biblatex und Biber bekommst, dann deutet alles darauf hin, dass das Problem wirklich nur in Deinem großen Dokument liegt. Damit bist Du eigentlich in einer ganz guten Situation. Du kannst das Minimalbeispiel entweder bauen, indem Du Dein großes Dokument verkleinerst oder indem Du immer wieder Teile aus Deinem großen Dokument im kleinen testest.

Grundsätzlich ist es mittels Binärsuche recht schnell möglich, ein Problem auch in großen Dateien einzugrenzen. Ich empfehle dazu folgende Vorgehensweise. Mach eine Kopie Deines Dokuments und arbeite ab jetzt nur noch mit der Kopie.

Denk daran, bei der Erstellung des Minimalbeispiels vor jeder neuen Kompilation die Hilfsdateien zu löschen, damit es keine Problem mit Rückständen von früheren Versuchen gibt.

Im ersten Schritt reduzierst Du den Dokumentenkörper zwischen \begin{document}...\end{document}. In den meisten Fällen kann man das Problem mit nur wenigen Zeilen Beispieltext und ein paar Befehlen reproduzieren. In Deinem Fall kann schon ein \cite{...} und \printbibliography genug sein. Wenn das nicht reicht, musst Du eine echte Binärsuche anwenden. Lösch die eine Hälfte des Codes zwischen \begin{document} und \end{document} und überprüf, ob das Problem noch besteht. Wenn ja, wiederhole den Schritt. Wenn nein, füge den gelöschten Code wieder ein und lösch die ändere Hälfte. Kompilier dann zur Überprüfung nochmal, ob das Problem noch besteht. Wiederhole dann den Schritt. Damit solltest Du selbst 1000 Zeilen in etwa 10 Schritten zerlegen können.

Wenn der Dokumentenkörper reduziert ist, tust Du das gleiche mit der Präambel. Dabei musst Du aber bedenken, dass Du unter Umständen neue, andere Fehler erzeugst, wenn Du in der Präambel Dinge weglöschst, die im Dokument noch benötigt werden. Daher ist es so wichtig, dass das Dokument selbst so kurz wie möglich ist. Die Präambel räumt man am besten von unten nach oben auf. Vom Gefühl her sollte in der Präambel nur die Dokumentenklasse (die Du nie weglöschen solltest), der Aufruf von biblatex (eventuell noch babel, csquotes sowie eventuell fontenc/inputenc) und eventuell vorhandene Einstellungen von biblatex übrig bleiben.

Beachte bitte, dass wir Deine .bib-Datei nicht kennen. Wenn Du also ein paar Beispieleinträge aus der Datei brauchst, dann musst Du die dem Minimalbeispiel beilegen. Ein Minimalbeispiel sollte im Allgemeinen auch kein \input oder \include beinhalten, solche Zeilen können durch den Inhalt der entsprechenden Datei ersetzt werden.

Bevor Du das Minimalbeispiel abschickst, solltest Du es auf jeden Fall in einem neuen, leeren Ordner testen und prüfen, dass es die richtigen Fehler produziert.
Gast hat geschrieben:Bringt es vielleicht etwas, wenn ich ein neues TeXnicCenter-Projekt auf dem neuen Rechner anlege und alle Texte etc. manuell dorthinein kopiere und dann neu kompiliere? Vielleicht bleiben dann problematische alte Hilfsdateien außen vor?
Eigentlich sollte das nicht helfen. Wenn die problematischen Hilfsdateien einmal weg sind, dann sind sie weg. Außerdem bekommst Du ja seit dem Löschen der alten Hilfsdateien andere, neue Fehler. Also deutet alles darauf hin, dass das Problem im Dokument selbst (und dort im Besonderen in der biblatex-Konfiguration). Aber man hat schon Pferde vor der Apotheke kotzen sehen, probier es also ruhig aus.

von Johannes_B » So 29. Dez 2019, 05:54

Schon mal über einen Editor-Wechsel nachgedacht? Texniccenter macht im Hintergrund oft Dinge, die man gar nicht will. Oder eben das Gegenteil.

von Gast » Sa 28. Dez 2019, 19:44

Nochmals vielen Dank für diese ausführliche Anwort. Ich weiß es sehr zu schätzen, dass Menschen hier ihre Freizeit einsetzen, um sich mit den PC-Problemen von anderen zu beschäftigen - noch dazu, wenn diese ohne Minimalbeispiel und asu Unkenntnis relativ unscharf beschrieben werden.



Ja, alles Beschriebene findet auf dem neuen Rechner statt.


Mir ist zwar bewusst, dass im Kompilierungsprozess mehrere Programme beteiligt sind, ich stoße diese aber immer gemeinsam an, indem ich in TeXniccenter auf das entsprechende Icon klicke ( entspricht strg+ Umschalt+F5 bzw. Strg.+F5). das Ausgabeprofil habe ich wie hier beschrieben eingestellt: https://texwelt.de/fragen/1909/wie-verw ... nem-editor

Ehrlich gesagt ist mir nicht klar, wie ich diese Prozesse separat starte, also beispielsweise erst nur Latex, dann nur Biber laufen lassen kann.


"Unter der Annahme, dass alles von Dir oben beschriebene sich nur auf dem neuen Rechner abspielt, würde ich Folgendes sagen: Nachdem Du die veralteten Hilfsdateien vom alten Rechner gelöscht hast, sollte es möglich sein, einen ersten LaTeX-Lauf auf dem neuen Rechner durchzuführen. Dieser sollte auf jeden Fall ohne Fehler enden."

Das habe ich gemacht, keine Fehler.

"Dann solltest Du Biber laufen lassen können."

Wie gesagt weiß ich nicht, wie ich das separat machen kann, bisher habe ich, um die Linteraturreferenzen aufzulösen, immer nochmals (zum zweiten oder dritten Mal) in TexnicCenter auf den Icon (Strg + F5) geklickt. Mache ich entstehen beim zweiten Durchlauf die besssagten 16 Fehler und der Kompilierungsporzess bricht ab.

Dass ein Minimalbeispiel sinnvoll (und nötig) wäre, ist mir bewusst, ich tue mich allerding nicht ganz leicht damit, ein solches herzustellen, weil ich das Problem aus meiner ziemlich großen Datei erst einmal isolieren muss.

Ich habe nun einmal den Prozess mit einer kleinen neuen Datei, die nur einen Literaturhinweis enthält, durchgespielt, hier klappt alles.

Bringt es vielleicht etwas, wenn ich ein neues TeXnicCenter-Projekt auf dem neuen Rechner anlege und alle Texte etc. manuell dorthinein kopiere und dann neu kompiliere? Vielleicht bleiben dann problematische alte Hilfsdateien außen vor?

von MoeWe » Sa 28. Dez 2019, 18:06

Gast hat geschrieben:Wenn ich die bbl-Datei lösche und neu kompiliere, wird der Kompilierungslauf zwar wieder durchgeführt und die pdf erstellt, aber leider werden meine Literaturnachweise nicht richtig aufgelöst: (Sie bleiben fettgedruckt im Format "Name.Jahr" stehen statt richtig "Name Jahr : Seite" wie in meiner Präambel festgelegt). Das kenne ich schon, dafür sind schon früher mehrere Kompilierungsläufe nötig gewesen, dann wurden sie richtig dargestellt [...]
In der Tat. Ein Dokument, das biblatex nutzt, muss prinzipiell mit LaTeX, Biber, LaTeX, LaTeX kompiliert werden, damit alle Zitate und Querverweise korrekt aussehen. Das ist bei TeX.SX in https://tex.stackexchange.com/q/63852/35864 ganz wunderbar erklärt. Es ist nicht bei jeder Änderung am Dokument zwingend notwendig, die volle Sequenz LaTeX, Biber, LaTeX, LaTeX auszuführen (normalerweise wird in der .log-Datei angemerkt, wenn weitere Läufe gewünscht sind), aber um sicher zu gehen, dass alles wie gewünscht aussieht (z.B. vor der Fertigstellung einer Arbeit oder wenn man sie auf einen neuen Rechner überträgt), sollte mindestens der Zyklus LaTeX, Biber, LaTeX, LaTeX durchlaufen werden.

Da die in dem Kompilierzyklus involvierten Programme über die Hilfsdateien miteinander kommunizieren, bewirkt das Löschen der Dateien mittendrin, dass der Zyklus nicht wie erwartet abgeschlossen wird. Dann ist nicht zu erwarten, dass die Ausgabe wie gedacht ist. Das kann also auf keinen Fall eine Dauerlösung sein. (Nach einigen Updates, Änderungen im Dokument oder Fehlern, kann es sinnvoll oder gar notwendig sein, die Hilfsdateien zu löschen und einen neuen Kompilierzyklus anzustoßen. Aber es sollte nicht der Fall sein, dass Du die Hilfsdateien immer löschen musst, damit die Dinge laufen.)

Unter der Annahme, dass alles von Dir oben beschriebene sich nur auf dem neuen Rechner abspielt, würde ich Folgendes sagen: Nachdem Du die veralteten Hilfsdateien vom alten Rechner gelöscht hast, sollte es möglich sein, einen ersten LaTeX-Lauf auf dem neuen Rechner durchzuführen. Dieser sollte auf jeden Fall ohne Fehler enden. Wenn dabei Fehler auftauchen, müssen diese beseitigt werden, bevor Du weiter machst. Wenn vorher alles ging, sollte es eigentlich keine Fehler geben; bei einem großen Versionssprung zwischen altem und neuem Rechner ist das aber nie ganz auszuschließen. Wenn Du Fehler bekommst, stell eine neue Frage mit Minimalbeispiel und der vollständigen .log-Datei. Dann solltest Du Biber laufen lassen können. Auch hierbei sollte es keine Fehler geben. Wenn welche auftreten, müssen sie behoben werden. Schließlich kannst Du LaTeX ein weiteres Mal ausführen. Wieder sollten keine Fehler auftreten (wenn sie es dennoch tun, stell eine Frage mit Minimalbeispiel, .log-Datei und .blg-Datei). Weitere LaTeX-Läufe sollten dann dafür sorgen, dass eventuell noch vorhandene Warnungen, die mit Querverweisen zusammenhängen, verschwinden. Du solltest danach streben, auch keine Warnungen mehr zu bekommen.

Wenn Du beim zweiten LaTeX-Aufruf im LaTeX-Biber-LaTeX-LaTeX-Zyklus Fehler bekommst und Du zu Beginn alle Hilfsdateien gelöscht hast, dann kann es sein, dass entweder Biber und biblatex von den Versionen immer noch nicht zusammenpassen (unwahrscheinlich, da das eigentlich überprüft wird und es dementsprechende Meldungen geben müsste) oder dass andere Dinge kaputt sind. (Wie gesagt: Wenn der Versionssprung groß ist, kann es durchaus sein, dass Dinge, die früher gingen, jetzt nicht mehr gehen.) Helfen können wir dann nur mit einem Minimalbeispiel, der vollständigen .log-Datei und der .blg-Datei.

von Gast » Sa 28. Dez 2019, 17:19

Herzlichen Dank für die schnelle Anworten!

Das hilft zwar schon weiter, löst das Problem aber noch nicht ganz:

Wenn ich die bbl-Datei lösche und neu kompiliere, wird der Kompilierungslauf zwar wieder durchgeführt und die pdf erstellt, aber leider werden meine Literaturnachweise nicht richtig aufgelöst: (Sie bleiben fettgedruckt im Format "Name.Jahr" stehen statt richtig "Name Jahr : Seite" wie in meiner Präambel festgelegt). Das kenne ich schon, dafür sind schon früher mehrere Kompilierungsläufe nötig gewesen, dann wurden sie richtig dargestellt, das klapppt nun allerdings nicht mehr:

- Wenn ich die bbl-, aux-, bcf-Datei vor dem zweiten Kompilierungslauf wieder lösche, bleibt das Ergebnis gleich, d.h. der Lauf wird durchgeführt, anders als auf meinem alten PC werden die Literaturverweise aber nicht aufgelöst.

- Wenn ich den zweiten Kompilierungslauf durchführe, ohne die bbl-, aux-, bcf-Dateien zu löschen, stürzt der Kompilierungslauf wieder ab und zeigt mir nun (nur noch) 16 Fehler, beginnend mit

pdflatex> ! Undefined control sequence
pdflatex> <argument> \ blx@bbl@data


und später einige Male

pdflatex> ! Illegal parameter numer in definition of \NewCount
pdflatex> <to be read again>


Biber hatte ich im Ausgabeprofil meines Editors (Texniccenter) schon eingestellt.

Gibt es noch etwas anderes, das ich tun könnte?
Und muss ich zukünftig jedes Mal, bevor ich kompiliere, die Hilfsdateien manuell wieder löschen?

von MoeWe » Sa 28. Dez 2019, 16:58

Dein neues und Dein altes System haben unterschiedliche biblatex- (und wohl auch Biber-)Versionen. Das ist im Allgemeinen nicht unbedingt ein Problem (zumindest, wenn Du vom alten auf das neue System umsteigen möchtest und nicht mit beiden parallel arbeiten möchtest), aber Du kannst die temporären Hilfsdateien vom alten Rechner nicht auf dem neuen Rechner verwenden. Lösch die .aux, .bbl, .bcf-Dateien und kompilier mit LaTeX, Biber, LaTeX, LaTeX neu (hier steht LaTeX für deine Lieblings-LaTeX-Version also pdfLaTeX, LuaLaTeX, XeLaTeX, ...). (Unter Umständen musst Du Deinen Editor erst für Biber konfigurieren https://www.texwelt.de/fragen/1909/wie- ... nem-editor)

Nach oben