Der Fehler im Titel dieser Frage ist bestimmt schon dem einen oder der anderen untergekommen.

Folgendes stellvertretende Mini-Beispiel demonstriert die Fehlermeldung:

Open in writeLaTeX
\documentclass{article}
\usepackage{foo}
\begin{document}
\end{document}

Es liefert den Fehler

Open in writeLaTeX
! LaTeX Error: File `foo.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
! Emergency stop.
<read *>

l.3 \begin
          {document}^^M

Wie löst man das am besten? Wie installiere ich denn ein fehlendes Paket?

gefragt 23 Jun '14, 21:04

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 25 Jun '14, 11:51

Vielleicht verschiedene Antworten für TeX Live und MiKTeX und eine Unterscheidung zwischen Paketen, die im Paket-Manager vorhanden sind, und Paketen, die man manuell installieren muss.

(23 Jun '14, 21:05) cgnieder

Zur allgemeinen Info: die Frage dient dem Archiv-Zweck, so dass man auch darauf verlinken kann, es ist eine Einladung, wer Lust und Zeit hat, evtl. eine Hilfe für Suchende zu schreiben. Anlass war diese Frage. Daher nicht schneller Support benötigt, hingegen sind besonnene Erklärungen mit etwas Zeit höchst willkommen! Auch wenn die Frage im Usenet und anderswo verschiedentlich beantwortet wurde, vervollständigt sie das Archiv hier.

(23 Jun '14, 21:20) stefan ♦♦

Als allererstes sollte man überprüfen, dass man sich bei dem Namen des Pakets nicht vertippt hat. Das erscheint zwar als selbstverständlich, ist aber nach meiner Erfahrung eine sehr häufige Ursache der Fehlermeldung.

Bei MiKTeX ist meist der einfachste Weg, dieses Problem zu lösen, indem man das automatische Nachinstallieren von Paketen (mit oder ohne Nachfrage) aktiviert. MiKTeX stellt eine entsprechende Frage während der Installation. Hat man die Nachinstallation mit Nachfrage aktiviert, sollte man allerdings nicht TXC 1 als Editor verwenden, da das damit nicht funktioniert. MiKTeX erkennt dann bei fehlenden Dateien selbst, ob und zu welchem MiKTeX-Paket sie gehören und installiert dieses bei einer bestehenden Online-Verbindung zum Repository, das im Paketmanager konfiguriert wurde, selbstständig nach.

Sitzt man an einem Rechner, der keinen Online-Zugriff erlaubt, so kann man sich dadurch behelfen, dass man auf einem Rechner mit Online-Zugriff, den MiKTeX Net Installer verwendet, um eine lokale Kopie des Repositories anzulegen. Dieses kann man beispielsweise auf einem USB-Stick ablegen. Diese lokale Kopie kann man dann im MiKTeX-Paketmanager des Rechners ohne Online-Zugriff als Repository eintragen. Auch mit einem solchen lokalen Repository ist dann eine automatische Nachinstallation von Paketen möglich.

Hat man nicht die automatische Nachinstallation aktiviert, muss man zunächst herausfinden, zu welchem MiKTeX-Paket die fehlende Paketdatei gehört. Wie @esdd in einem Kommentar erklärt, geht das ganz einfach über den Paketmanager: Dazu gibt man in das Feld File name den vollständigen Dateinamen ein, ggf. unter Verwendung von Platzhaltern. Nach einem Klick auf Filter, werden nur noch Pakete angezeigt, die eine passende Datei enthalten. Über das Kontextmenü der einzelnen Pakete kann man ein solches MiKTeX-Paket installieren oder sich weitere Informationen zu dem Paket sowie eine komplette Liste der enthaltenen Dateien anzeigen lassen.

Achtung: Die automatische Nachinstallation führt auch bei einer Mehrbenutzerinstallation immer eine Benutzerinstallation des Pakets durch. Das Paket wird also dabei nicht für alle, sondern nur für den jeweiligen Benutzer installiert. Installiert man später Pakete über den Paketmanager im Adminmodus, so wird trotzdem das Paket der Benutzerinstallation verwendet. Führt man Updates im Adminmodus durch, so wird das Benutzerpaket nicht aktualisiert. Man muss also ggf. zusätzlich auch ein Update im Benutzermodus durchführen, um alle Paket aktuell zu haben.

Für Pakete, die nicht über den Paketmanager verfügbar sind, läuft das ganze etwas anders. Zunächst sollte man in diesem Fall abklären, ob es sich dabei überhaupt um ein aktuelles, freies Paket handelt. Oftmals vagabundieren durch das Internet Beispiele, die Pakete enthalten, die aus gutem Grund nicht von MiKTeX angeboten werden. Dabei genügt es allerdings nicht, dass ein Paket veraltet ist, da MiKTeX auch eigentlich veraltete Pakete noch sehr lange unterstützt.

Dann muss man sich zunächst die Paketdatei beispielsweise von CTAN oder der Homepage des Pakets beschaffen. Je nachdem, muss man (ganz nach den Anleitungen in den entsprechenden TeXwelt-Artikeln) die Paketdatei(en) aus den Paketquellen erzeugen und anschließend die Paketdatei(en) installieren, wobei man ggf. ein Update der Filename Database nicht vergessen darf!

Ist alles erfolgreich verlaufen, so verschwindet die Fehlermeldung beim nächsten LaTeX-Lauf.

Sollte man selbst mit Hilfe von Internet-Suchmaschinen nicht in der Lage sein, das CTAN-Paket oder die Homepage zu einem Paket zu finden, kann man gerne eine entsprechende Frage, etwa »Wo finde ich Paket …?« hier auf TeXwelt stellen.

Permanenter link

beantwortet 24 Jun '14, 08:59

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 25 Jun '14, 16:55

Hinweis: Meine Erfahrungen mit MiKTeX sind eher rudimentär! Entsprechend ist die Antwort ausgefallen, die sicher noch verbessert werden kann.

(24 Jun '14, 09:58) gast3

Wenn eine Datei vom MiKTeX Paketmanager bereit gestellt wird, dann kann man auch direkt im Paketmanager herausfinden, zu welchem MiKTeX-Paket die Datei gehört. Dazu gibt man in das Feld File name den vollständigen Dateinamen ein, ggf. unter Verwendung von Platzhaltern. Nach einem Klick auf Filter, werden nur noch Pakete angezeigt, die eine passende Datei enthalten. Über das Kontextmenü der einzelnen Pakete kann man ein solches MiKTeX-Paket installieren oder sich weitere Informationen zu dem Paket sowie eine komplette Liste der enthaltenen Dateien anzeigen lassen.

(24 Jun '14, 14:01) esdd

@esdd Danke, habe das wörtlich in die Antwort übernommen.

(25 Jun '14, 12:31) gast3

Für Original TeX Live gibt es ebenfalls so etwas wie die automatische Nachinstallation von Paketen, wenn man texliveonfly für den LaTeX-Lauf verwendet. Dabei handelt es sich um Python-Programm, das latex, pdflatex, xelatex oder lualatex aufruft, die log-Datei bezüglich fehlender Dateien auswertet, ggf. das zugehörige TeX-Live-Paket über tlmgr installiert und dann einen weiteren LaTeX-Lauf durchführt. Persönlich habe ich keine Erfahrung damit, da ich immer die Standardinstallation von TeX Live verwende.

Bei der Standardinstallation des originalen TeX-Live wird eine Vollinstallation durchgeführt. Das heißt es werden alle Pakete installiert, die von TeX Live bereitgestellt werden. Es kann allerdings sein, dass seit der letzten Installation neue Pakete hinzugekommen sind. Hier hilft es, wenn man mit dem TeX Live Manager, tlmgr ein Update aller Pakete durchführt. Das geht von der Kommandozeile einfach per:

tlmgr update --all
Ggf. erhält man eine Warnung, dass zunächst die Infrastuktur mit
tlmgr update --self
erneuert werden muss. In diesem Fall sollte man genau das tun und danach erneut das Update starten.

Will man erst einmal sehen, was bei einem Update geschehen würde, so gibt man als zusätzliche Option --dry-run an. In diesem Fall erhält man nur Meldungen über zu löschende und zu installierende Pakete.

Ggf. kann man auch einzelne TeX-Live-Pakete mit

tlmgr update PAKETNAME
aktualisieren oder mit
tlmgr install PAKETNAME
installieren.

Hat man keine Vollinstallation, so kann man ebenfalls mit

tlmgr install PAKETNAME
fehlende Pakete nachinstallieren. Man kann dabei auch mehr als einen PAKETNAME angeben. Die Namen der TeX-Live-Pakete findet man ähnlich wie bei MiKTeX über die CTAN-Suche. Eine weitere Möglichkeit ist, mit
tlmgr --global search --file PAKETDATEI
die Paketdatenbanken der Repositories nach dem zugehörigen TeX-Live-Paket zu befragen. So liefert beispielsweise
tlmgr --global search --file showframe.sty
als Antwort:
eso-pic:
        texmf-dist/tex/latex/eso-pic/showframe.sty
Die Datei showframe.sty ist also im TeX-Live-Paket eso-pic enthalten und kann bei Bedarf mit
tlmgr install eso-pic
installiert werden.

Für Pakete, die nicht als TeX-Live-Paket verfügbar sind, läuft das ganze etwas anders. Zunächst sollte man in diesem Fall abklären, ob es sich dabei überhaupt um ein aktuelles, freies Paket handelt. Oftmals vagabundieren durch das Internet Beispiele, die Pakete enthalten, die aus gutem Grund nicht von TeX Live angeboten werden. Dabei genügt es allerdings nicht, dass ein Paket veraltet ist, da TeX Live auch eigentlich veraltete Pakete noch sehr lange unterstützt. Dagegen werden Pakete mit unklarer bzw. nicht freier Lizenz von TeX Live grundsätzlich nicht angeboten.

Dann muss man sich zunächst die Paketdatei beispielsweise von CTAN oder der Homepage des Pakets beschaffen. Je nachdem, muss man (ganz nach den Anleitungen in den entsprechenden TeXwelt-Artikeln) die Paketdatei(en) aus den Paketquellen erzeugen und anschließend die Paketdatei(en) installieren. Für Paket, die in TEXMFLOCAL oder TEXMFHOME installiert wurden, benötigt man i. d. R. kein texhash. Installiert man sehr viele Pakete auf diese Weise, kann aber texhash deren Auffinden ggf. ebenfalls beschleunigen.

Ist alles erfolgreich verlaufen, so verschwindet die Fehlermeldung beim nächsten LaTeX-Lauf.

Sollte man selbst mit Hilfe von Internet-Suchmaschinen nicht in der Lage sein, das TeX-Live-Paket bzw. das CTAN-Paket oder die Homepage zu einem Paket zu finden, kann man gerne eine entsprechende Frage, etwa »Wo finde ich Paket …?« hier auf TeXwelt stellen.

Permanenter link

beantwortet 24 Jun '14, 09:33

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 25 Jun '14, 16:54

Hat mein kein Original TeX Live, sondern ein TeX Live einer Linux Distribution, so ist diese häufig veraltet und bietet meist auch kein tlmgr. In beiden Fällen ist ein Update und eine Installation per tlmgr, wie ich sie bereits beschrieben habe, nicht möglich. Solche TeX-Live-Installationen sind meist auch über viele Linux-Pakete verteilt, von denen nicht immer gleich alle installiert werden. Man sollte daher als erstes den Linux-Paketmanager starten und damit nach dem Linux-Paket suchen, das das gewünschte TeX-Live-Paket bereitstellt. Das Vorgehen dazu ist von der Linux-Distribution abhängig. Die meisten Linux-Paketsysteme erlauben es, gezielt nach Dateien zu suchen. So kann man beispielsweise bei apt-basierten Linux-Distributionen mit

apt-file search Dateinamen
nach der Datei suchen und erhält dann den Namen des Linux-Pakets, das man über den Linux-Paketmanager installieren kann.

Natürlich gibt es auch hier die Möglichkeit, ein Paket manuell zu installieren. Der dazu notwendige Weg ist in meiner Antwort für das Original TeX Live beschrieben.

Alternativ kann man ein Original-TeX-Live installieren, so dass einem dann alle Wege offen sind, die ich dafür in meiner getrennten Antwort bereits angegeben habe. Es ist zu beachten, dass durch die Installation eines Original-TeX-Live die Linux-Pakete für TeX Live nicht deinstalliert werden. Man hat dann also ggf. zwei TeX-Live-Installationen, zwischen denen man mit entsprechenden Einstellungen für die Environment-Variable PATH umschalten kann.

Permanenter link

beantwortet 24 Jun '14, 09:57

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 24 Jun '14, 13:40

esdd's gravatar image

esdd
17.8k284257

Hinweis: Ich verwende seit Jahren keine Linux-Pakete für TeX-Live mehr. Entsprechend kurz ist die Antwort ausgefallen. Ich empfehle eigentlich bei Problem meist, ein aktuelles Original-TeX-Live zu installieren.

(24 Jun '14, 10:00) gast3

Für die, die noch in der Console kompilieren:

Die Meldung:

Open in writeLaTeX
  ! LaTeX Error: File `foo.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name:

kann man damit beantworten, daß man entweder RETURN drückt und die geforderte Datei damit ignoriert wird, oder x eingibt, womit der Vorgang abgebrochen wird, oder durch Eingabe eines gültigen Pfades und Dateinamens. Wenn nur der Dateiname angegeben wird, so wird im Standardpfad gesucht, wird ein Pfad angegeben, dann in diesem. Voreinstellung ist die Dateiendung .sty, man kann aber auch andere Dateien angeben, indem man datei.ext angibt.

Permanenter link

beantwortet 24 Jun '14, 23:31

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 24 Jun '14, 23:41

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:

×128
×48

gestellte Frage: 23 Jun '14, 21:04

Frage wurde gesehen: 79,473 Mal

zuletzt geändert: 25 Jun '14, 16:55