PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : if-Anweisung in .bst



chrisssfly
18-07-2008, 20:29
Hallo,

ich habe mir über makebst eine eigene bibstyle-datei erstellt. in dieser würde ich gern eine if-abfrage einbauen. Und zwar habe ich in der babelbst.tex bspw. neben dem begriff \bbland={and} den deutschen begriff \bblund={und} eingefügt. in meiner bibstyle datei wird darauf wie folgt zugegriffen:


FUNCTION {bbl.and}
{ "\bbland{}"}

meine Frage nun, wie kann ich hier auf die language-variable prüfen, ob deutsch oder englisch gewählt wurde? hab es so versucht, klappt aber nicht:


FUNCTION {bbl.and}
{ \ifthenelse{\equal{language}{ngerman}}{ "\bblund{}"}{ "\bbland{}"}}

hat jemand eine idee, wie ich auf die in der .bib datei gewählte sprache testen kann?

lg chrisssfly

rais
18-07-2008, 23:35
Moin moin,


ich habe mir über makebst eine eigene bibstyle-datei erstellt. in dieser würde ich gern eine if-abfrage einbauen. Und zwar habe ich in der babelbst.tex bspw. neben dem begriff \bbland={and} den deutschen begriff \bblund={und} eingefügt. in meiner bibstyle datei wird darauf wie folgt zugegriffen:


FUNCTION {bbl.and}
{ "\bbland{}"}

meine Frage nun, wie kann ich hier auf die language-variable prüfen, ob deutsch oder englisch gewählt wurde? hab es so versucht, klappt aber nicht:


FUNCTION {bbl.and}
{ \ifthenelse{\equal{language}{ngerman}}{ "\bblund{}"}{ "\bbland{}"}}

hat jemand eine idee, wie ich auf die in der .bib datei gewählte sprache testen kann?

einmal vorausgesetzt, daß Dein selbstdefinierter Stil verschiedene Sprachen, vermutlich in Form eines entsprechenden `language'-Feldeintrags in Deiner .bib -- aber auf dieser Seite des Bildschirms ist nicht einmal der erste Parameter Deiner `ENTRY'-Funktion bekannt, in der solche Felder in Deiner .bst deklariert wurden, auch unterstützt: Du mischst hier LaTeX- und BibTeX-Befehle...
Ansatz a) lass die .bst in Ruhe und stürz Dich auf die (Um-)Definition von \bbland in Deiner .tex-Datei
Ansatz b) wenn Du es über die .bst versuchst, dann lass darin vorkommene LaTeX-Befehle in doppelten Hochkommata -- bei \ifthenelse in obiger bbl.and-Funktion etwa
{ "\ifthenelse{<Bedingung>}{<dann>}{<sonst>}" } ... oder kümmere Dich vllt um Dokumente wie btxdoc und btxhak (kannst Du vermutlich beide per `texdoc' abrufen, sonst findest Du diese auf CTAN) -- beide solltest Du zumindest gelesen haben, bevor Du Dir Deinen eigenen Stil zurechtschusterst -- dort findest Du auch die Beschreibung zu `if$', wie eine Bedingung in BibTeX aussieht.

BTW: mit Ausdrücken wie `klappt aber nicht' kann hier imho keiner was mit anfangen ... schon gar nicht ohne Minimalbeispiel.;)

MfG

chrisssfly
26-07-2008, 17:18
Hi, danke für die antwort.

habe es hinbekommen. language war schon als eintrag in der .bst vorhanden. ich habe dann einfach bei den funktionen, die die besagten begriffe wie and bzw. und definieren, folgendermaßen verändert:


FUNCTION {bbl.and}
{ language "ngerman" =
{ "\bblund{}"}
{ "\bbland{}"}
if$
}

und weiter unten (manche begriffe werden erst in dieser datei definiert wie bspw. url) in der begin.bib gleich unter der definition von "\providecommand{\urlprefixe}{URL: }"

write$ newline$
"\providecommand{\urlsuffixd}{Stand: }"

eingefügt.

dabei habe ich in der babelbst.tex noch den deutschen begriff für und definiert:

\def\bblund{und}




sodann hat es einwandfrei funktioniert.

grüße