PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BibTeX-Fehlermeldung: 1 is an integer literal, not a string, for entry blablabla



dreizehn28
18-11-2011, 15:16
Hallo zusammen,

Ich spiele derzeit an einem eigenen Bibstyle mit Internetquellen (@ELECTRONIC) und habe mir dafür eine kleine Funktion geschrieben, welche einen String nach gewissen Zeichen durchsucht und diese ersetzt. Ziel ist es, eine URL so auszugeben, dass LaTeX nicht meckert. Z. B. wegen "_". Also "_" durch "\_" ersetzen.

Alles funktioniert prima. Das Ergebnis stimmt. Aber BibTeX gibt haufenweise Fehlermeldungen aus. Ich bin mir sicher, dass bei jedem Aufruf von substring$ ein Fehler entsteht. Dabei scheint BibTeX ein Problem damit zu haben, dass meine Substrings die Länge 1 haben.

Wie unterbindet man diese Fehlermeldungen? Immerhin macht BibTeX ja das richtige... Oder hat jemand eine bessere Funktion zum Ersetzen? text.length$ kann ja auch zu Problemen führen!


STRINGS { str.to.replace replacement }
INTEGERS { string.length }
FUNCTION { string.replace }
{
'replacement :=
'str.to.replace :=
duplicate$ text.length$ 'string.length :=
#1 'i :=
{ i #1 + string.length < }
{
duplicate$ i #1 substring$ str.to.replace =
{
duplicate$ i #1 - text.prefix$
replacement *
swap$ i #1 + string.length substring$ *
duplicate$ text.length$ 'string.length :=
i replacement text.length$ + str.to.replace text.length$ - 'i :=
}
'skip$
if$
i #1 + 'i :=
}
while$
}


FUNCTION {output.url}
{
url duplicate$
empty$ not
{
duplicate$ "http://" swap$ #7 text.prefix$ =
{ duplicate$ text.length$ #7 - #8 swap$ substring$ }
'skip$
if$

% Sonderzeichen ersetzen
"_" "\_" string.replace
"&" "\&" string.replace
"#" "\#" string.replace
"$" "\$" string.replace

%Umbrüche einfügen
"/" "/" quote$ quote$ * * string.replace

"\small \texttt{" swap$ *
"}\normalsize " * write$
}
'pop$
if$
}

Bin für jeden Input dankbar!

tral
19-11-2011, 08:42
Hallo,

einfach ein \url um die URL im bib-File?



url = {\url{http://www.google.de}}


Christian.

dreizehn28
21-11-2011, 13:07
Hallo Christian,

Danke für deine Antwort. Dein Ansatz hilft natürlich. Er bekämpft aber letztlich nur das Symptom nicht die Ursache!

Hoffe auf weiteren Input!

dreizehn28
21-11-2011, 14:27
Problem hat sich erledigt. Das Problem entstand, anders als erwartet, gar nicht beim überarbeiten des urls, sondern beim filtern eines Datums. Der obige Code kann also problemlos verwendet werden! =)
Es bleibt die Inkonsistenz bei der Verwendung von text.length$.