Datei nicht kompilierbar auf neuem PC

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


Gast

Datei nicht kompilierbar auf neuem PC

Beitrag von Gast »

Hallo,

ich versuche gerade erfolglos, eine umfangreiche Latex-Datei von meinem alten Laptop auf meinen neuen zu übertragen:

altes System: Win 7, MikTeX (wahrsch. ältere Version), TeXnicCenter 2.02
neues System: Win 10, MikTeX und TeXnicCenter frisch installiert.

Wenn ich nun DIESELBE TeXnicCenter-Projektdatei, die auf meinem alten PC fehlerlos zu einem pdf kompiliert wird, mit einem USB Stick auf meinem neuen PC übertrage und dort kompiliere, bricht der Vorgang mit über 100 Fehlern ab. Das Problem scheint mein Literaturverzeichnis zu sein. Die Fehlermeldungen sehen etwa so aus:


"Package biblatex Warning: File 'Diss.bbl' is wring format version - expected 3.1.
pdflatex> (Diss.bbl
pdflatex> ! Undefined control sequence
pdflatex> 1.21 \sortlist
pdflatex> {nyt} {nyt}
pdflatex> ! Undefined control sequence
pdflatex> \ entry ... ata@\the \c@refsection @\blx@dlist@name
pdflatex> @\abx@filed@entrykey }\blx..."


usw.


Ich verstehe leider nicht, was das Programm mit damit sgane möchte und wäre extrem dankbar für jeden Hinweis, wie ich das Problem lösen kann.

Wenn die Problembeschreibung nicht exakt ist, bitte ich um Entschuldigung, ich bin leider aboluter Laie, was LaTeX betrifft.

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

Beitrag von u_fischer »

du hast eine neuere biblatex Version auf dem neuen pc und das mag die von der älteren Version erzeugte bbl-Datei nicht. Lösche die bbl und kompiliere neu. (besser wäre es aber die TeX-Systeme auf dem gleichen Stand zu haben, es gibt immer mal wieder Unterschiede in den Paketen).

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

Beitrag von MoeWe »

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)
Zuletzt geändert von MoeWe am Sa 28. Dez 2019, 18:49, insgesamt 2-mal geändert.

Gast

Beitrag von Gast »

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?

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

Beitrag von MoeWe »

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.

Gast

Beitrag von Gast »

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?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5081
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Schon mal über einen Editor-Wechsel nachgedacht? Texniccenter macht im Hintergrund oft Dinge, die man gar nicht will. Oder eben das Gegenteil.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

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

Beitrag von MoeWe »

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

Code: Alles auswählen

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.

Gast

Beitrag von Gast »

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.

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

Beitrag von MoeWe »

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

Code: Alles auswählen

    \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.

Antworten