PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : latex.exe hängt sich auf



SirTobiIV
16-07-2010, 11:04
Hallo,

ich habe mal wieder ein sehr seltsames Problem mit latex.
Beim compilieren hängt sich der Prozess latex.exe im Taskmanager auf. Und zwar immer beim Erstellen des Inhaltsverzeichnisses (im ersten Kompilierungsdurchlauf funktioniert alles super - aber da wird ja aufgrund der Dummheit von latex noch kein Inhaltsverzeichnis erstellt.
In Texnic Center steht als letzte Zeile folgendes:



("Pfad\dipl.toc")
("Pfad\ulasy.fd")
("Pfad\umsa.fd")
("Pfad\umsb.fd") [7]) [8]
("Pfad\dipl.lof")


Wenn ich mein zuletzt geschriebenes Kapitel weglasse, dann passiert der fehler nicht. Allerdings wird im Kapitel keine Fehlermeldung oder Warnung angezeigt. Dasd Kapitel enthält viele Bilder.

Curryhunter
16-07-2010, 11:20
Hallo,
schon mal versucht, das letzte Kapitel alleine zu kompilieren? Vielleicht ist dort ein Fehler drin?
Versuche mal durch gezieltes Auskommentieren den Fehler einzukreisen und dann meld dich noch mal. Meist findet man den Fehler dann selber.

Grüße
Stefan

P.S. Latex ist nicht dumm. Nur der Mensch vor dem Monitor sieht meist nicht, was er falsch macht.

Stefan_K
16-07-2010, 11:56
Und zwar immer beim Erstellen des Inhaltsverzeichnisses (im ersten Kompilierungsdurchlauf funktioniert alles super - aber da wird ja aufgrund der Dummheit von latex noch kein Inhaltsverzeichnis erstellt.

In einem Forum von LaTeX-Freunden selbiges als dumm zu bezeichnen, nur weil man es nicht versteht, während man Hilfe sucht, sieht etwas naiv aus. :rolleyes:

Ich schlage vor, Du postest den betreffenden Code (ohne Text und Bilder) sowie die .log-Datei, worin Fehler und Warnungen stehen, nicht nur die Anzeige eines Editors. Siehe auch minimalbeispiel.de (http://minimalbeispiel.de/mini.html) für Hinweise.

Da die .lof-Datei als letzte angezeigt wird, kann ich mir vorstellen, dass das Problem in \caption-Zeilen liegt, jedoch nicht am Inhaltsverzeichnis.

Stefan

sommerfee
16-07-2010, 12:50
Da die .lof-Datei als letzte angezeigt wird, kann ich mir vorstellen, dass das Problem in \caption-Zeilen liegt, jedoch nicht am Inhaltsverzeichnis.

Da tippe ich auch darauf, durch ein fehlendes \protect an entscheidener Stelle kann eine Endlosschleife entstehen, die, wenn sie keinen Stack braucht, niemals abbricht. In diesem Falle wäre die lof-Datei von Interesse.

Um den Fehler selber zu finden, könnte man die lof-Datei löschen, alle \caption-Befehle auskommentieren, das Dokument dann übersetzen (liegt es an einer \caption, dann sollte es jetzt wieder gehen), und dann stückweise anfangen, die \caption-Befehle wieder zu aktivieren.

Um nicht jetzt wild dafür im Quelltext herumeditieren zu müssen, reicht es,
folgenden Code direkt nach \begin{document} einzubauen:



\makeatletter
\long\def\@caption#1[#2]#3{}
\makeatother


Läßt sich das Dokument (nach dem Löschen der lof-Datei) dann wieder zweimal(!) übersetzen, dann kann man anfangen, dieses Codestück immer weiter nach hinten zu verschieben, genau solange, bis der doppelte LaTeX-Lauf nicht mehr gelingt. Ist dies der Fall, muß die letzte \caption vor diesem Codestück der Schuldige sein.

(Alternativ könnte man auch die Log-Möglichkeiten von TeX aktivieren, dann würde man auch sehen können, ab wo sich TeX im Kreise dreht, aber als reiner LaTeX-Anwender kommt man mit obriger Methode wohl schneller ans Ziel, denke ich.)

Liebe Grüße,
Axel

P.S.: Das "dumme LaTeX" teile ich übrigens in dieser Hinsicht, eine (einstellbare) Rekursionsbeschränkung in TeX wäre schon hilfreich, um ungewollte Endlosschleifen mit einer passenden Fehlermeldung abbrechen lassen zu können.

Stefan_K
16-07-2010, 13:21
Hi Axel,

das sind sehr gute Tipps!
Im Bezug auf das PS: der Themen-Ersteller benannte dazu nicht das Aufhängen wegen einer Rekursion, sondern unabhängig davon sei es seiner Meinung nach Dummheit zuzurechnen, dass nicht bereits beim 1. Lauf ein Verzeichnis eingefügt wird. Das teile ich nicht. :)

Stefan

SirTobiIV
16-07-2010, 13:29
Danke Axel, das ist ein Tipp, der sich sehr gut anhört und auch genau auf mein Problem zu passen scheint.
Ich habe auch schon 3 Bilder mit Subfigures im Verdacht, die ich eben as lettztes eingefügt habe und seitdem der Fehler eben auftritt.

Darum meine Frage: was kann an einer Caption denn falsch sein, dass latex in eine Endlosschleife gelangt?

Stefan_K
16-07-2010, 13:35
Vielleicht zeig einmal die 3 captions, die Du im Verdacht hast. Eventuell kann man es daran direkt erkennen, statt allgemein zu besprechen, was so etwas theoretisch verursachen könnte. Den reinen Text darin kannst Du ja weglassen, interessant sind Befehle, die im \caption-Argument auftauchen.

Stefan

SirTobiIV
16-07-2010, 13:52
Ich habe den Übeltäter nun erfolgreich identifiziert. vielen Dank nochmals für den Tipp.
aber was zur Hölle soll denn bitte daran falsch sein?


\begin{figure}[htb]
\centering
\psfrag{Posabweichung}[c]{Positionsabweichung / m}
\psfrag{frame}[c]{Bildnummer im Video}
\includegraphics[width=0.90\textwidth]{bilder/pos_diff_gtvideo4_video7.eps}
\caption{Positionsabweichung der erkannten Bildorte von der Ground Truth in Metern bei der Zuordnung von den Bildern aus Video 7 zu Video 4}
\label{fig:posdiffgtvideo4video7}
\end{figure}


EDIT: Es gibt noch einen zweiten Übeltäter mit identischem Aufbau, nur ohne \psfrag und minimal anderem Caption Text.

Stefan_K
16-07-2010, 14:09
Dadurch, dass es kein komplettes Beispiel ist, lässt es sich nicht direkt testen. Wenn ich das Codefragment vervollständige (Präambel samt psfrag, graphicx und Dokumentumgebung), lässt es sich fehlerfrei übersetzen. Da die eps-Grafik nicht vorliegt, musste ich die demo-Option von graphicx verwenden.
Wenn wir das möglichst originalgetreu nachvollziehen sollen, schlage ich vor, erstelle ein vollständiges Minimalbeispiel (http://minimalbeispiel.de/mini.html), am besten hänge die eps-Datei mit an.
Bislang ist für mich kein Fehler erkennbar.

Stefan

SirTobiIV
16-07-2010, 14:15
Problem ist gelöst. Schuld war der Zeilenumbruch in der Caption des Bildes davor.

Warum wirft latex hier denn nicht einfach eine Warnung oder eine Fehlermeldung aus und sagt, dass Zeilenumbrüche in captiosn nicht erlaubt sind?
Genau das meine ich mit dummen latex.
Es taucht dann irgend ein merkwürdiger Fehler auf und man hat keinen Anhaltspunkt, wo man suchen soll.

Usability: setzen, 6

Stefan_K
16-07-2010, 14:51
Was für eine Arroganz des Fragestellers. :rolleyes:
Du kannst Dich ja gern in der Entwicklung von LaTeX und -Editoren engagieren und die Usability mit verbessern, statt nur freie Software kostenlos zu nutzen und dann noch zu motzen, dass Dir die Usability nicht passt.

Stefan

SirTobiIV
16-07-2010, 14:57
Ich muss Latex leider benutzen, ansonsten würde ich es sicherlich nicht benutzen.

Das Plus von Latex ist die nette Community. Ohne euch hätte ich mich wohl schon aus dem Genster gestürzt. Danke für die kompetente Hilfe.

Ich finde euch auf Probleme hinzuweisen, die bei einem Latex Anfänger so auftreten und indem ich erzähle, was mir nicht passt, trage ich ja in gewisser Weise auch was zum Programm bei (insofern ich erhört werde).

Stefan_K
16-07-2010, 15:01
Ich finde euch auf Probleme hinzuweisen, die bei einem Latex Anfänger so auftreten und indem ich erzähle, was mir nicht passt, trage ich ja in gewisser Weise auch was zum Programm bei (insofern ich erhört werde).

Da ist was dran. Wenn dann noch der Tonfall konstruktiv ist, wär's optimal. ;)

Stefan

Karlo
16-07-2010, 15:05
Warum wirft latex hier denn nicht einfach eine Warnung oder eine Fehlermeldung aus


genau das tut es bei mir..



und sagt, dass Zeilenumbrüche in captiosn nicht erlaubt sind?

das steht da zwar so nicht, aber man kann da leicht drauf kommen...

u_fischer
16-07-2010, 15:18
Warum wirft latex hier denn nicht einfach eine Warnung oder eine Fehlermeldung aus

Nun, bei mir schmeißt mich LaTeX mit Fehlermeldungen bei diesem Beispiel nur so zu:


\documentclass{article}
%\usepackage{caption}
\begin{document}
\listoffigures

\begin{figure}
blub
\caption{a\\ b}
\end{figure}

\end{document}

Die Fehlermeldungen beim ersten Lauf fangen an mit


! Undefined control sequence.
\\->\let \reserved@e
\relax \let \reserved@f \relax \@ifstar {\let \reserved...
l.7 \caption{a\\ b}


Dein Problem ist daher nicht LaTeX sondern TeXnicCenter. Es hält es für benutzerfreundlich, Fehlermeldungen zu verstecken und \scrollmode standardmäßig zu aktivieren.

Btw: Wenn das caption-Paket geladen wird, sind \\-Befehle kein Problem.

sommerfee
16-07-2010, 16:59
Dein Problem ist daher nicht LaTeX sondern TeXnicCenter. Es hält es für benutzerfreundlich, Fehlermeldungen zu verstecken und \scrollmode standardmäßig zu aktivieren.

Was auch außerhalb dieses Falles massive Probleme verursacht. Ich kämpfe ständig mit Supportfällen von Leuten, denen Fehlermeldungen völlig egal sind und die (natürlich) TeXnicCenter verwenden.

Eigentlich sollte TeXnicCenter Geld kosten, die Erlöse werden dann unter den Paketautoren aufgeteilt, um den durch TeXnicCenter erhöhten Supportbedarf ein wenig auszugleichen :rolleyes:

An dieser Stelle ein Tipp an SirTobiIV: Nimm TeXworks stattdessen. Halte ich persönlich sowieso für die bessere LaTeX-Entwicklungsumgebung.

Liebe Grüße,
Axel

u_fischer
16-07-2010, 17:19
Naja, es ist ja nicht nur TeXnicCenter. Auch emacs und winedt z.B. benutzen standardmäßig \scrollmode und haben Optionen, die Terminalausgabe irgendwo unauffällig in den Hintergrund zu schieben. Es ist immer das erste, was ich ändere, wenn ich winedt irgendwo installiere: Ich will das dos-Fenster sehen, und es soll bei Fehlern anhalten -- auch wenn das bedeutet, dass ich immer mal wieder bei diversen Babel-\selectlanguage-Fehlern auf enter klicken muss.

sommerfee
16-07-2010, 17:38
Naja, es ist ja nicht nur TeXnicCenter. Auch emacs und winedt z.B. benutzen standardmäßig \scrollmode

Wußte ich nicht, danke für die Info.

Ich werde mal indirekt an das pdfTeX/luaTeX Team weitergeben, daß ich es für eine sinnvolle Sache halte, wenn TeX bei X (mit X = 100?) Fehlern abbrechen würde.

Liebe Grüße,
Axel