PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BibTex-Problem: mehr als 30 Zitate für einen Autor und ein Jahr



Samy
29-03-2008, 13:24
Hallo!

Ich bin bei meiner Diplomarbeit auf ein merkwürdiges (wie ärgerliches) BibTex-Problem gestossen:

Meine Literaturliste (bib-File) enthält für einen Autor (Datamonitor) mehr als 30 Zitate für das Jahr 2007. Beim Durchlauf von \bibliography mit unsrtnat.bst bekomme ich stets die Fehlermeldungen:

Paragraph ended before \@lbibitem was complete.
Argument of \@lbibitem has an extra }. \bibitem[Datamonitor(2007{\natexlab{}}}

Im bbl-File fällt auf, dass die Zitate mit a - z durchnummeriert werden. Nach dem z kommen dann Sonderzeichen. Eines ist die Klammer { bzw. }. Dadurch wird meiner Meinung nach der Fehler erzeugt. Ich habe schon versucht den bst-File zu ändern, allerdings ohne Erfolg, da ich nicht so recht weiß wie ich denn Zähler abstellen kann bzw. welche Variable/Makros/Functions etc. verantwortlich sind. Ich verwende den Zitierstyl mit Nummern in eckiger Klammer im Text, d.h. ich brauche die zusätzliche Nummerierung nicht.

Für Tipps zur Problemlösung wäre ich sehr dankbar, da ich nicht den bbl-File händisch korrigieren möchte (dann kann ich gleich mit Word schreiben).

Vielen Dank im voraus!
Samy

rais
30-03-2008, 00:43
Hallo und Herzlich Willkommen :)
schau in Deiner -- hoffentlich anders genannten -- Kopie von unsrtnat.bst mal nach


FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
number.label #1 + 'number.label :=
}
wenn Du die hier hervorgehobene Zeile z. B. nach


last.extra.num int.to.str$ 'extra.label :=
änderst und entsprechend \bibliographystyle an den von Dir gewählten Namen dieser geänderten unsrtnat.bst anpasst, dann sollte es schon mal keine Fehlermeldung mehr geben...
Dazu vielleicht ein


\usepackage{natbib}
\AtBeginDocument{%
\renewcommand*\natexlab[1]{}
}
in Deiner Präambel sollte die Ausgabe von `a'--`?' unterdrücken -- aber willst Du das wirklich? Immerhin hast Du so n mehr oder weniger identische Einträge in Deinem Literaturverzeichnis...

MfG

Samy
30-03-2008, 11:27
Hallo Rainer,

vielen Dank für die Hilfe. Mit den von Dir vorgeschlagenen Änderungen bleibt die Fehlermeldung aus! Allerdings sieht die Literaturliste jetzt so aus (Ausschnitt):

.....
[86] Datamonitor. Pharmaceuticals in the United Kingdom - Industry Profile. 2007125.
[87] Datamonitor. Pharmaceuticals in France - Industry Profile. 2007126.
[88] Datamonitor. Pharmaceuticals in the Netherlands - Industry Profile. 2007127.
[89] Datamonitor. Pharmaceuticals in India - Industry Profile. 2007128.
[90] Datamonitor. Pharmaceuticals in Italy - Industry Profile. 2007129.
[91] Datamonitor. Pharmaceuticals in Japan - Industry Profile. 2007130.
.....

BibTex hängt mir jetzt fortlaufende Zahlen an die Jahresangaben der Lit.-Zitate.

Noch eine Idee? (Ich werde mal versuchen das Format für Year zu ändern.)

Danke und Grüße,
Thomas

rais
30-03-2008, 12:43
Moin Thomas,

Allerdings sieht die Literaturliste jetzt so aus (Ausschnitt):

.....
[86] Datamonitor. Pharmaceuticals in the United Kingdom - Industry Profile. 2007125.
(..)

wenn Du in Deine .bbl schaust, sollte für diesen Eintrag da u. A.


2007{\natexlab{125}}

drinstehen, also hast Du \natexlab nicht umdefiniert oder zu früh -- in dem Fall sollte es eine entsprechende Fehlermeldung beim LaTeX-Lauf (undefined control sequence) gegeben haben.
BTW: Du kannst natürlich auch versuchen, den String komplett rauszuwerfen, dazu bräuchtest Du in Deiner .bst wohl nur den Inhalt beim \natexlab{..} durch nix zu ersetzen ... naja, hinterher ist man immer schlauer.;-)

MfG

Samy
30-03-2008, 16:35
Hallo Rainer,

der zitierte Eintrag sieht in der bbl-Datei wie folgt aus:

\bibitem[Datamonitor(2007)]{DaMo:PharUK}
Datamonitor.
\newblock \emph{Pharmaceuticals in the United Kingdom - Industry Profile}.
\newblock 2007125.

Die 125 wird direkt rangehängt.

Der Anfang der bbl-Datei sieht so aus:

\begin{thebibliography}{112}
\providecommand{\natexlab}[1]{}
...

D.h. der \natexlab-Befehl ist also umdefiniert worden.

Nach dem ich den kompletten String forward.pass sowie den \natexlab-Befehl gelöscht habe, funktioniert die Sache. Das Literaturverzeichnis sieht jetzt wir folgt aus:

.....
[86] Datamonitor. Pharmaceuticals in the United Kingdom - Industry Profile. 2007.
....

Ganz prima!

Herzlichen Dank nochmals und Grüße,
Thomas