PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : babelbib/babel - Sprachen-Aliase?



pheidrias
29-01-2012, 22:04
Hallo zusammen!

Aus meiner mit mendeley erstellten Bibliographie entsteht beim LaTeXen folgende Fehlermeldung:


Package babelbib Error: Language en in bibliography not loaded by babel \btxselectlanguage {en}
babelbib: No \url command defined but field URL used(babelbib) in bibliography. .../content/articlehtml/1995/an/an9952002435}


Das Problem ist der "language = {en},"-Eintrag, den ich nicht ändern kann (Datei wird immer wieder neu durch mendeley erzeugt).
Jetzt sucht babelbib oder babel nach der entsprechenden Sprache und findet sie nicht.

Gibt es eine Möglichkeit, Sprachenaliase zu vergeben (also en=english)?



\documentclass[10pt,a4paper]{scrbook}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babelbib}
\begin{document}
Hallo Welt!\cite{Threlfall1995}
\bibliography{../../Literatur/Mendeley/library}{}
\bibliographystyle{babplain}
\end{document}

Der Bibliographie-Eintrag sieht z.B. so aus:


@article{Threlfall1995,
annote = {Solvates: "This is probably related to the 'stuffing' effect of
impurities described by Buerger.3"},
author = {Threlfall, Terence L.},
doi = {10.1039/an9952002435},
file = {:Threlfall - 1995 - Analysis of organic polymorphs. A review.pdf:pdf},
issn = {0003-2654},
journal = {The Analyst},
keywords = {solvatomorphism},
language = {en},
mendeley-tags = {solvatomorphism},
month = jan,
number = {10},
pages = {2435},
publisher = {The Royal Society of Chemistry},
title = {{Analysis of organic polymorphs. A review}},
url = {http://pubs.rsc.org/en/content/articlehtml/1995/an/an9952002435},
volume = {120},
year = {1995}
}

rais
29-01-2012, 22:42
Moin moin,


Das Problem ist der "language = {en},"-Eintrag, den ich nicht ändern kann (Datei wird immer wieder neu durch mendeley erzeugt).
Jetzt sucht babelbib oder babel nach der entsprechenden Sprache und findet sie nicht.

Gibt es eine Möglichkeit, Sprachenaliase zu vergeben (also en=english)?

Du könntest versuchen, \btxselectlanguage umzubiegen


\documentclass[10pt,a4paper]{scrbook}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babelbib,url}
\newcommand*\origbtxselectlanguage{}
\let\origbtxselectlanguage\btxselectlanguage
\newcommand*\tmplanga{}
\newcommand*\tmplangb{}
\renewcommand*\btxselectlanguage[1]{%
\edef\tmplanga{#1}%
\edef\tmplangb{en}%
\ifx\tmplanga\tmplangb
\typeout{en->english}%
\origbtxselectlanguage{english}%
\else
\edef\tmplangb{de}%
\ifx\tmplanga\tmplangb
\typeout{de->german}%
\origbtxselectlanguage{german}%ggf. ngerman
\else
%...hier ggf. weitere Sprachen abfangen
\typeout{No redirect for `#1'}%
\origbtxselectlanguage{#1}%
\fi
\fi
}
\begin{document}
Hallo Welt!\cite{Threlfall1995}
\bibliography{library}
\bibliographystyle{babplain}
\end{document}

MfG

pheidrias
30-01-2012, 15:35
Super!

Funktioniert einwandfrei!

Ist das etwas aus dem Original rauskopiertes und erweitertes oder hast Du das mal eben so aus den Fingern gesaugt?

rais
30-01-2012, 18:51
Ist das etwas aus dem Original rauskopiertes und erweitertes oder hast Du das mal eben so aus den Fingern gesaugt?
nö,nur erweitert:
Von den bab*-Stilen wird das language-Feld als \btxselectlanguage in die .bbl geschrieben.


\let\origbtxselectlanguage\btxselectlanguage

legt eine Kopie des (vom babelbib definierten) \btxselectlanguage-Befehls an und nennt diese Kopie \origbtxselectlanguage.
In der Redefinition von \btxselectlanguage teste ich lediglich auf "de" bzw. "en" und rufe entsprechend \origbtxselectlanguage -- also die unveränderte Kopie des Befehls -- mit "german" bzw. "english" auf. Wenn weder "de" noch "en" übergeben wurde, rufe ich das Original mit dem unveränderten Parameter auf
a) da weiter oben in der .bbl ein \btxselectlanguage mit \btxfallbacklanguage aufgerufen wird
b) für den Fall, daß Du gemischte .bib-Dateien verwenden willst und die teilweise bereits angepasst hast.
Bei beiden Szenarien musste diese Erweiterung transparent zu `normalen' language-Einträgen sein.

MfG