PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bibtex label Sonder-/Leerzeichen



FPhilipp
14-12-2004, 13:25
Hallo,

ich würde gerne in meinen Bibtex-Labels Sonder- bzw. Leerzeichen verwenden. Ich habe bereits ein Bibtex-Style, das Autorennamen verwendet. Nur klappt das eben nicht mit den Sonderzeichen. Ich habe herausgefunden, dass man nach einem bibtex-Durchlauf in der .bib-Datei die Labels in den [ ] schlicht ändern kann. Aber irgendwie muss es doch auch möglich sein, diese direkt anders zu schreiben ohne gleich die Referenzen in den { } mit zu ändern.

Irgendwelche Tips?

Grüße,
FP

blubb
14-12-2004, 14:49
>ich würde gerne in meinen Bibtex-Labels Sonder- bzw. Leerzeichen verwenden.

Meinst du mit den Labels den key in \cite{key}?

Wenn ja, wozu willst du da Umlaute. Der Text dient nur der internen Referenz und wird nie gedruckt.

FPhilipp
14-12-2004, 15:13
Ja den meine ich. Bei mir wird er gedruckt. Ich verwende für die Zitatangaben eben die Kombination \cite{NameDesAutors2004}. In der bbl-Datei steht dann:

\bibitem[NameDesAutors2004]{NameDesAutors2004.....

In meiner bib-Datei steht:

@ARTICLE{NameDesAutors2004, ........

Mir ist jetzt nicht klar, wie ich den ersten Eintrag in der bbl-Datei ändern kann ohne den zweiten (internen) zu ändern.

Grüße,
FP

blubb
14-12-2004, 15:21
Bevor ich jetzt anfange zu raten, was das Problem ist: Wie wäre es mit einem Minimalbeispiel:
- Lauffähige TeX-Datei
- Bib-Datei mit dem Fehlerhaften bib-Eintrag.

Es wäre zum Beispeil äuserst spannend, wenn du verrätst, welchen bibstyle du eigentlich verwendest.

FPhilipp
14-12-2004, 16:40
OK - here we go. Leider gibt es bei dem Versuch Anhänge hinzuzufügen eine Fehlermeldung, wenn man auf den Link klickt. Daher dann eben hier im Posting direkt..... :(

Die bst-Datei ist generiert - ich hatte schon zuvor ein paar komische Ansprüche ;)

Dort kann man dann auch lesen, dass die bbl-Struktur [key]{key} ist. Ich hätte aber eben gerne [keyMitSonderzeichen]{keyohneSonderzeichen}.
Als Beispiel: Im Text sollte zum Beispiel [Winkler 2004] (mit Leerzeichen) und nicht [Winkler2004] erscheinen. Dazu müsste in der bbl-Datei eben das oben genannte stehen.

Danke schon mal für die Hilfe....


example.tex:

------------------------------------------------------------

\documentclass[12pt,twoside,german,a4paper,draft]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{pslatex}
\begin{document}


Es mag verwundern, dass die Qualitätssicherung in der Medizin eine lange Historie aufweisen kann. So wurden bereits im Jahre 2250 v. Chr. Ärzte bei der Ausübung ihrer Kunst zur Einhaltung qualitativer Mindestmaße verpflichtet (\cite{Winckler1904} S.60): ,,Wenn ein Arzt jemand eine schwere Wunde mit dem Operationsmesser
aus Bronze macht und ihn tötet, oder jemand eine Geschwulst mit dem Operationsmesser aus Bronze öffnet und sein Auge zerstört, so soll man ihm die Hände abschneiden.''


\clearpage
\bibliographystyle{example}
\bibliography{example}
\end{document}

------------------------------------------------------------

example.bib:

------------------------------------------------------------

@BOOK{Winckler1904,
title = {Die Gesetze Hammurabis in Umschrift und Übersetzung},
publisher = {J. C. Hinrichs'sche Buchhandlung},
year = {1904},
author = {Hugo Winckler},
address = {Leipzig},
edition = {1.},
}

------------------------------------------------------------
example.bst
------------------------------------------------------------

Die Datei ist leider zu lang. Kann ich sie irgendwie sonst übermitteln?

FPhilipp
14-12-2004, 16:41
In der bbl-Datei erscheint bei mir Folgendes:

(Wenn ich in dem bibitem zwischen Winkler und 1904 ein Leerzeichen einbaue klappt es wunderbar. Aber das muss ich dann eben nach jeden Durchlauf für alle Einträge machen. Daher würde ich es auch gerne automatisieren.)

---------------------------------------------------------------------

\begin{thebibliography}{Winckler1904}
\providecommand{\url}[1]{\texttt{#1}}
\providecommand{\urlprefix}{URL:~}
\expandafter\ifx\csname urlstyle\endcsname\relax
\providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else
\providecommand{\doi}{doi:\discretionary{}{}{}\beg ingroup
\urlstyle{rm}\Url}\fi

\bibitem[Winckler1904]{Winckler1904}
Winckler H.
\newblock \emph{Die Gesetze Hammurabis in Umschrift und Übersetzung}.
\newblock J. C. Hinrichs'sche Buchhandlung, Leipzig, 1. Auf\/lage, 1904.

\end{thebibliography}

FPhilipp
14-12-2004, 17:09
Also - ich bin ein wenig schlauer geworden - weiß aber nicht so genau, was ich damit jetzt anfangen soll.

Das Problem liegt wohl in einer Funktion der Datei example.bst:

------------------------------------------------------

FUNCTION {output.bibitem}
{ newline$
"\bibitem[" label * "]{" * write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}

------------------------------------------------------

Hier wird das eigentliche bibitem geschrieben. Das "label" dort ist der Name+Jahreszahl, der bei mir im Text erscheint und auch als Label für die Referenz in tex angegeben werden muss. Das cite$ wohl auch (ich weiß nicht, warum). Helfen wird mir das an dieser Stelle wohl nicht. Es ist sicher ein ziemlicher Aufwand, hier Nachnamen des Autors und Jahr zusammenzubasteln.
Lösen kann man das an der Stelle, wenn man einen sonst nicht verwendeten bibtex-Eintrag nutzt, um hier einen Alternativnamen anzugeben (z.B. "note").

Es bleiben für mich folgende Fragen:
1. (wäre natürlich schöner, wenn man das so lösen könnte): Kann man in tex für eine Referenz einen Labelnamen angeben, der im Text erscheinen soll und damit das, was von bibtex kommt überschreiben?

2. (wenn das nicht geht...) kann man in der bst-Datei prüfen, ob ein Feld belegt ist (wie z.B. oben beschrieben das Feld "note") und wenn nicht dann das label verwenden?

Danke und Grüße
FP

blubb
14-12-2004, 17:12
Tja, das Problem dürfte in dem bibstyle liegen.

Generell würde ich empfehlen, in der bib-Datei ein neues Feld "key" o.ä. zu definieren und das dann im bibstyle zu verwenden.

Jurabib definiert sich so z.B. ein shortauthor und shorttitle. (Im übrigen hoffe ich du kennst jurabib und hast Gründe warum es für dich nicht verwendbar ist. Ansonsten würde ich sofort http://www.berger-on.net/jurabib/ empfehlen.

FPhilipp
14-12-2004, 17:41
Hallo,

kenne ich - die Formatierung passt nur einfach nicht zu dem, was bei mir vorgegeben ist. Daher habe ich mir am Anfang mit so einem komischen Kommandozeilenprogramm ein eigenes bst-File erstellt. Aber ich glaube, ich bin fast am Ziel - melde mich dann nochmal....

Grüße,
FP

FPhilipp
14-12-2004, 17:46
So - Problem gelöst. Ich habe im bst-File die folgende Zeile:
"\bibitem[" label * "]{" * write$

durch diesen Code ersetzt:
specialkey empty$
{"\bibitem[" label * "]{" * write$}
{"\bibitem[" specialkey * "]{" * write$}
if$

In meiner bib-Datei gibt es jetzt für alle Elemente, die Umlaute oder Leerzeichen im Label haben ein zusätliches Feld "specialkey". (Das kann man auch in einem geeigneten Literaturverwaltungsprogramm wie jabref einrichten.)

Funktioniert bei mir zumindest ganz gut. :)

Danke trotzdem ;)

FP