proviedecaptionname in eigenem Paket - Standarsprache festl.

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

proviedecaptionname in eigenem Paket - Standarsprache festl.

Beitrag von iTob »

Hallo,

ich würde gerne mit
\providecaptionname{ngerman}{\word}{deutsches Wort}
\providecaptionname{english}{\word}{english word}
verschiedene Sprachabhängige Bezeichner in meinem Paket zur Verfügung stellen.
Das Problem ist, dass ich natürlich nicht alle babel-Sprachen kann und einbauen will, sondern erstmal nur Englisch und Deutsch.
Was ist aber, wenn jemand mein Paket in Frankreich benutzt und babel nur mit der Option french lädt. Dann bekomme er einen Fehler, weil weder englisch noch ngerman geladen wurden.
Gibt es eine Möglichkeit festzulegen, dass wenn eine, meinem Paket unbekannte Sprache, geladen wird, festzulegen, dass dann English als Standart verwendet wird, solange der Nutzer die Bezeichner nicht selbst erstellt.

Ich habe schon versucht, mit PassOptionsToPackage die Option english an babel weiterzugeben, aber ohne Erfolg.

Vielen Dank und Grüße!
Tobi

PS: Das Kapitel im KOMA-Buch hab ich gelesen, aber darin keine Lösung gefunden...

Nerd 032F

Beitrag von Nerd 032F »

Definiere einfach zuvor
\providecommand*{\word}{In der Default-Sprache (in der Regel Englisch}
Das wird dann automatisch beim Laden einer Sprache (i. d. R. während \begin{document}) entsprechend überschrieben.

Ich würde übrigens die ganzen \providecaptionname ebenfalls mit \AtBeginDocument auf nach \begin{document} verzögern. Jedenfalls macht Markus das in scrlttr2.cls selbst auch so:
\AtBeginDocument{%
...
  \providecaptionname{english}\yourrefname{Your ref.}%
  \providecaptionname{english}\yourmailname{Your letter of}%
...
}
Ich glaube, das macht er so, damit das ganze auch funktioniert, wenn babel erst später geladen wird (was bei einer Klasse ja immer der Fall ist).

Nerd 032F

Beitrag von Nerd 032F »

Nachtrag: In scrjura.sty macht Markus das so:
\AtBeginDocument{%
  \providecaptionname{german}\parname{Absatz}%
  \providecaptionname{german}\parshortname{Abs.}%
  \providecaptionname{german}\sentencename{Satz}%
  \providecaptionname{german}\sentenceshortname{S.}%
  \providecaptionname{ngerman}\parname{Absatz}%
  \providecaptionname{ngerman}\parshortname{Abs.}%
  \providecaptionname{ngerman}\sentencename{Satz}%
  \providecaptionname{ngerman}\sentenceshortname{S.}%
}
\providecommand*{\parname}{\scrjura@lang@error{\parname}}
\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}}
\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}}
\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}}
\newcommand*{\scrjura@lang@error}[1]{%
  \PackageErrorNoLine{scrjura}{%
    current language not supported%
  }{%
    Currently scrjura only supports languages ``german'' and
    ``ngerman''.\MessageBreak
    It seems, that you are using another language (maybe
    \languagename).\MessageBreak
    Because of this you have to define \string#1\space by
    yourself!\MessageBreak
    It would be nice if you'll send your definitions to the author.%
  }%
  \textbf{??}%
}

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Super,

danke dir für die schnelle Antwort :-)

Tobi

Antworten