Was mache ich bei dieser Fehlermeldung?

! File ended while scanning use of \MT@temp.
<inserted text> 
                \par 
<*> EA3_Aufgabe.tex

?

gefragt 16 Dez '21, 08:20

hannah35's gravatar image

hannah35
291
Akzeptiert-Rate: 0%

bearbeitet 16 Dez '21, 09:26

Ijon%20Tichy's gravatar image

Ijon Tichy
11.0k31733

1

Du suchst entweder selbst, warum hier vermutlich eine schließende Klammer fehlt bzw. ein Absatz in einem Argument auftritt, das keinen Absatz enthalten darf, oder du machst das, was eigentlich immer zu empfehlen ist, bevor man eine Frage stellt: Du reduziert dein Problem auf ein vollständiges Minimalbeispiel und fügst das in deine Frage ein, wobei du natürlich Code korrekt markierst. Lies ggf. auch die Markdown-Hilfe.

(16 Dez '21, 09:32) Ijon Tichy

Da das konkrete Problem in deinem Fall ohne vollständiges Minimalbeispiel schwerlich zu ermitteln ist, werde ich hier das Problem allgemein im Stil einer Archiv-Frage angehen.

LaTeX besteht bei Befehlen in Unterdateien im allgemeinen darauf, dass die Argumente zu dem Befehl in der Unterdatei vollständig angegeben sind. Es ist also nicht erlaubt, dass in einer Unterdatei das Argument eines Befehls beginnt, aber erst in der Datei endet, in der die Unterdatei gelesen wird. Während also

\begin{filecontents}[force]{EA3_Aufgabe.tex}
\makeatletter
\MT@temp{Das ist ein Test}
\makeatother
\end{filecontents}
\documentclass{article}
\makeatletter
\newcommand*{\MT@temp}[1]{#1}
\makeatother
\begin{document}
Wir lesen die Datei:
\input{EA3_Aufgabe.tex}
\end{document}

korrekt ist und natürlich funktioniert, wäre

\begin{filecontents}[force]{EA3_Aufgabe.tex}
\makeatletter
\MT@temp{Das ist ein Test
\end{filecontents}
\documentclass{article}
\makeatletter
\newcommand*{\MT@temp}[1]{#1}
\makeatother
\begin{document}
Wir lesen die defekte Datei:
\input{EA3_Aufgabe.tex}
\end{document}

nicht korrekt und erzeugt die Fehlermeldung:

Runaway argument?
{Das ist ein Test 
! File ended while scanning use of \MT@temp.
<inserted text> 
                \par 
l.11 \input{EA3_Aufgabe.tex}

?

Übrigens: Wenn man bei einem interaktiven LaTeX-Lauf hier hinter dem Prompt (das Fragezeichen) ein h eingibt und bestätigt, erhält man die weitere Hilfe:

? h
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.

?

Schaut man sich den Inhalt von EA3_Aufgabe.tex genauer an, so erkennt man, dass die Fehlermeldung sehr zutreffend ist. Es fehlt tatsächlich die schließende geschweifte Klammer beim Argument von \MT@temp.

Natürlich kann EA3_Aufgabe.tex auch die Hauptdatei sein:

\documentclass{article}
\makeatletter
\newcommand{\MT@temp}[1]{#1}
\newcommand*{\MT}{\MT@temp}
\makeatother
\begin{document}
\MT{Das ist ein Test
\end{document}

Falls in diesem Beispiel die Hauptdatei EA3_Aufgabe.tex heißt, so entspricht die Fehlermeldung noch genauer dem, was in der Fragestellung (leider etwas unvollständig) angegeben wurde:

Runaway argument?
{Das ist ein Test \end {document} \par 
! File ended while scanning use of \MT@temp.
<inserted text> 
                \par 
<*> EA3_Aufgabe.tex

Natürlich wird man in der Regel solchen Code nicht direkt produzieren. Der Befehlsname \MT@temp in der Fragestellung lässt vermuten, dass es sich hier um eine interne Anweisung eines Pakets handelt. Dennoch liegt der Fehler hier höchstwahrscheinlich in der Datei EA3_Aufgabe.tex. Und sehr wahrscheinlich fehlt eine schließende geschweifte Klammer. Es ist aber auch nicht auszuschließen, dass es sich um einen Fehler in einem verwendeten Paket oder einer verwendeten Klasse handelt. Zur Eingrenzung des Fehlers sei auf die Technik der Reduzierung auf ein vollständiges Minimalbeispiel verwiesen.

Ähnliche Probleme gibt es auch häufig mit Hilfsdateien wie der .aux-Datei oder einer Verzeichnisdatei, wenn der LaTeX-Lauf unsachgemäß abgebrochen und eine solche Hilfsdatei deshalb nicht vollständig geschrieben wurde. Hier hilft meist, die Hilfsdatei zu löschen. Aber auch Fehler in der .bib-Datei können zu solchen Problemen führen.


Ein verwandter »Runaway argument?«-Fehler ist übrigens, wenn man im Argument eines Befehls einen Absatz einbaut, der Befehl aber keine Absätze in seinen Argumenten erlaubt. Der Fehler kann sich ebenfalls in einer Hilfsdatei verbergen. Das wäre beispielsweise hier der Fall:

\documentclass{article}
\begin{document}
\tableofcontents
\section{Test^^J^^J^^J}
\end{document}

Der erste LaTeX-Lauf (nach dem Löschen aller Hilfsdateien) funktioniert noch. Der zweite führt jedoch zu den Fehlermeldungen:

 (./test.toc
Runaway argument?
{\numberline {1}Test 
! Paragraph ended before \contentsline was complete.
<to be read again> 
                   \par 
l.1 ...entsline {section}{\numberline {1}Test \par
                                                   \par }{1}{}%
? 
! Extra }, or forgotten \endgroup.
l.1 ...e {section}{\numberline {1}Test \par \par }
                                                  {1}{}%
? 
)
Permanenter link

beantwortet 16 Dez '21, 10:09

Ijon%20Tichy's gravatar image

Ijon Tichy
11.0k31733
Akzeptiert-Rate: 53%

bearbeitet 16 Dez '21, 10:20

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×125

gestellte Frage: 16 Dez '21, 08:20

Frage wurde gesehen: 283 Mal

zuletzt geändert: 16 Dez '21, 10:20