PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \usepackage{sty-files/file.sty} warning



ProfessorChaos
26-08-2010, 16:21
Hi,

ich möchte aus gewissen Gründen einige Pakete nicht "installieren", sondern die sty-File von Hand in den Ordner kopieren, in dem auch die tex-Datei liegt, die sie benutzt. Um präziser zu sein: ich möchte die sty-Datei in einen Subordner hiervon legen.

Beispiel:
Mein "Haupt"-Ordner enthält die Datei "main.tex" und den Ordner "sty-files".
Der "sty-files"-Ordner enthält die Datei "file.sty".

In der Datei "main.tex" referenziere ich nun dieses Package mit dem Befehl:
\usepackage{sty-files/file}.

Das Kompilieren funktioniert, denn das Package wird gefunden und auch verwendet. *Aber* ich erhalte die folgende Fehlermeldung:
"LaTeX Warning: You have requested package `sty-files/file', but the package provides `file'.

Kann ich diese Warnung irgendwie eliminieren?
Natürlich gibt es drei offenischtliche Varianten, dies zu tun:
(1) Ich kopiere meine sty-Datei nicht in einen Suborder, sondern neben main.tex,
(2) Ich benenne den 'provideten' Package-Namen in "sty-files/file" um, oder
(3) Ich installiere das package richtig.

(1) möchte ich nicht, da ich Ordnung in meinen LaTeX-Projekten möchte,
(2) ist Unsinn und ein hässlicher Work-Around,
(3) scheidet aus, da mein LaTeX-Projekt in einem Repository liegt und ich möchte, dass es jeder sofort kompilieren kann (ohne Installationen).

Gibt es also noch eine andere Variante?

u_fischer
26-08-2010, 16:34
Setze den Pfad mit TEXINPUTS oder --include-directory=dir (bei miktex, ob TeXLive eine ähnliche Option hat, weiß ich nicht).

ProfessorChaos
13-09-2010, 09:21
Danke für die Antwort, aber deine Variante löst nicht mein Problem, dass ich eine system-unabhängige Lösung suche. Ich möchte den LaTeX-Quelltext anpassen, so dass andere, die meine Dateien benutzen, die Warnung auch nicht sehen (ohne erst etwas einstellen zu müssen).

Aber wahrscheinlich gibt es da keine Lösung?

u_fischer
13-09-2010, 10:05
Aber wahrscheinlich gibt es da keine Lösung?

Es wäre sicherlich möglich, etwas Analoges zu \graphicspath zu definieren. Oder \ProvidesPackage so umdefinieren, so dass es zuerst die Ordner entfernt und dann den Text macht. Aber ich glaube nicht, dass es jemand schon gemacht hat.

Der saubere Weg derzeit ist wohl, die sty umbenennen und in der sty den \ProvidesPackage-Eintrag anzupassen.

Schweinebacke
13-09-2010, 10:19
Wie so oft, bietet auch hier KOMA-Script eine Lösung:
\begin{filecontents*}{unterverzeichnis/meintest.sty}
\ProvidesPackage{meintest}
\end{filecontents*}
\documentclass{article}
\usepackage{scrlfile}
\ReplaceFile{meintest.sty}{unterverzeichnis/meintest.sty}
\usepackage{meintest}
\begin{document}

\end{document}Damit das Beispiel funktioniert, muss das Verzeichnis "unterverzeichnis" angelegt werden.

Und wenn dasselbe Dokument auch ohne das Unterverzeichnis aber mit normal installiertem Paket funktionieren soll:
\documentclass{article}
\usepackage{scrlfile}
\IfFileExists{unterverzeichnis/meintest.sty}{\ReplaceFile{meintest.sty}{unterverz eichnis/meintest.sty}}{}
\usepackage{meintest}
\begin{document}

\end{document}

ProfessorChaos
13-09-2010, 18:42
Vielen Dank; es gibt also doch eine schöne (d.h. system-unabhängige) Lösung zu meinem Problem.

Allerdings benötigte ich die drei Zeilen der filecontents-Umgebung nicht. Wenn ich sie verwende erhalte ich die Warnung, dass die Datei "unterverzeichnis/meintest.sty" bereits auf dem System existiert. Ohne diese drei Zeilen tritt der gewünschte Effekt dennoch auf (ohne die eben beschriebene zusätzliche Warnung).

Ich habe noch ein 100% analoges Problem für die Verwendung einer selbst definierten Klasse. Ich sehe allerdings nicht, wie ich die hier beschriebene Lösung entsprechend anpassen kann. Trotz der Verwandschaft poste ich das Problem als neues Thema, siehe:

\documentclass{class/myClass} warning (http://www.mrunix.de/forums/showthread.php?t=69279)

Schweinebacke
13-09-2010, 19:45
Du solltest mal die filecontents-Umgebung nachlesen.

Zu Deinem Klassen-Problem. Das ist doch grundsätzlich das gleiche Problem. Du musst lediglich das Paket scrlfile bereits vor der Klasse laden, was mit \RequirePackage möglich sein sollte.

ProfessorChaos
14-09-2010, 10:09
Du solltest mal die filecontents-Umgebung nachlesen.
Okay... Habe es mir auf meine ToDo-List geschrieben.


Du musst lediglich ...
Funktioniert perfekt. Vielen Dank!