PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : schauen, ob spezielles package aufgenommen



badera
13-11-2004, 17:17
Wie kann man schauen, ob gewisse Packete mit \usepackage aufgenommen wurden, so dass man dann entscheiden kann, ob man z.B. einen Befehl (in einer allgemeinen Vorlage) ausführt oder nicht?

Vielen Dank!
- Adrian

mr. pelle
13-11-2004, 18:46
Moin moin,

ich bin zwar nicht sicher, ob ich Deine Frage richtig verstehe, versuche Dir aber trotzdem zu antworten:

Wenn Du ein Paket im Vorspann mittels \usepackage{Paketname} einbindest und beim kompilieren keine Fehlermeldung erhälst, stehen Dir die Funktionen des Paketes zur Verfügung. Solltest Du ein Paket eingetragen haben, das auf Deinem Rechner nicht installiert ist, bekommst Du eine Fehlermeldung.


MfG

Mr. Pelle

badera
13-11-2004, 18:57
Danke für die Antwort. Ich meine aber nicht das.



\usepackage {pack1}
\usepackage {pack2}
\usepackage {pack3}
..
..
..
if pack1 is included then
\renewcommand...
else
end if



Sowas möchte ich machen.

Das macht nämlich dann Sinn, wenn man eine allgemeingültige Vorlage hat, die vieles einstellt, auch Sachen von anderen Packeten, man aber nicht immer alle Packete includieren will. Deshalb möchte ich in der Vorlage schauen, ob ein gewisses Packet aufgenommen wurde, und wenn ja seine Einstellungen setzen...

Hat jemand Rat? - Vielen Dank!

- Adrian

blubb
14-11-2004, 22:28
Makro \@ifpackageloaded ?

Wegen dem @ beachte gliech FAQ 8.5.1 Ich erhalte die Fehlermeldung ,! You can't use \spacefactor in vertical mode.` oder ,Command \@ already defined.`. Mache ich etwas falsch?
http://www.dante.de/faq/de-tex-faq/html/makros4.html#53

Blubb

badera
15-11-2004, 21:10
Das sieht schonmal verheissungsvoll aus, danke!!


(%)\usepackage{geometry}
...
\@ifpackageloaded{geometry}{\@geomtrue}{\@geomfals e}
\if@geom
\geometry
{
bindingoffset=0.5cm,
hmargin={1.8cm, 1.8cm},
vmargin={2.1cm,2.7cm}
}
\fi


Hmm, ich krieg das aber ned zum Laufen. Habe das in meine sty-Datei kopiert, was aber vier Fehler verursacht. Was mach ich falsch? - Die Frage, wie man es ausserhalb einer sty-Datei machen würde, käme dann später...

PS: Gibt es eine Liste mit all diesen @-Macros? Und was ist das eigentlich für eine komische Sprache?? Gibt es dazu gute Literatur?

- Adrian

blubb
16-11-2004, 11:08
Bei mir klappts.

\documentclass{scrreprt}
\usepackage{geometry}

\makeatletter
\newif\if@geom
\@ifpackageloaded{geometry}{\@geomtrue}{\@geomfals e}
\if@geom
\geometry
{
bindingoffset=0.5cm,
hmargin={1.8cm, 1.8cm},
vmargin={2.1cm,2.7cm}
}
\fi
\makeatother
\begin{document}

aa


\end{document}

\newif vergessen?
(Das Leerzeichen in "fals e" wird vermutlich von der Forumnssoftware eingehängt werden.)

Sprache:
TeX (oder LaTeX?)
Zu TeX: http://tex.loria.fr/general/TeXbuch.pdf
Ansonsten: LaTeX-Doku oder andere Pakete anschauen.

badera
16-11-2004, 22:07
Vielen Dank für Deine ständige Hilfe :)

Jetzt gehts mit Deinem Code (fast). Ja, das newif habe ich vergessen, oder besser gesagt einfach nicht gemacht, weil ichs noch gar nicht gekannt habe...
Wenn ich allerdings Deinen Code in ein .sty reinkopiere (ohne \makeatletter und \makeatother), das dan mit \usepackage aufgenommen wird, dann kommt ein Fehler zuoberst im .sty,: Missing \begin{document}

Vielleicht weisst Du ja da auch noch Rat.

Danke für das Link zu TeXBook. Sieht noch gut aus. Irgendwie ist das eine sehr sehr komische Sprache. Wieso so unübersichtlich und doof? - Klar, TeX ist alt, aber so doof hättens die ja damals auch schon nicht mehr machen müssen, oder seh ich da die Stärke / den Trick nicht :confused:

- Adrian

blubb
17-11-2004, 09:12
>Vielen Dank für Deine ständige Hilfe
Ist mir eine Freude.

> Missing \begin{document}
D.h. da wird irgendwas geschrieben.
Kann es sein, das das aa noch da ist?
Das war nur, um irgendwas zu schreiben um zu sehen ob es funktioniert.

>oder seh ich da die Stärke / den Trick nicht
Als TeX entwickelt wurden, war Speicherplatz noch richtig teuer. TeX ist darauf optimiert. Es wird immer ein "nächstes Zeichen" eingelesen, ausgewertet und durch ein Ergebnis ersetzt (Makroexpansion). Anderes Verfahren müssen erst mal alles einlesen und im Speicher halten.

Vielleicht zum lesen ganz interessant:
http://www.ps.uni-sb.de/courses/seminar-ws03/Dokumentensatz.pdf

badera
17-11-2004, 19:02
> D.h. da wird irgendwas geschrieben.
> Kann es sein, das das aa noch da ist?
> Das war nur, um irgendwas zu schreiben um zu sehen ob es funktioniert.

Jaja, dass <aa> nur als Textausgabebeispiel gedacht war, habe ich bemerkt.

Ich habe nochmals etwas <gebastelt> aber nichts herausgefunden. Nun habe ich einfach nochmals eine Kopie meiner Vorlagae gezogen, und nochmals versucht, UND JETZT GEHTS! Irgendwie hatte ich wohl sonst noch was verändert...

Vielen Dank!
- Adrian