PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bibtex Label im Literaturverzeichnis (dinnat label bei bibtex mit natbib und natdin)



twohead
04-09-2009, 16:46
Hi,

ich benutze bibtex mit natbib und dem natdin style. Das Literaturverzeichnis beginnt für jeden Eintrag dabei mit Autor Jahr. Nach dem alten Kommentar

http://mrunix.de/forums/showpost.php?p=290948&postcount=2

Zitat:


%"\dinatlabel{" dinat.label * "} " * %%changed Label raus
%write$ %%changed Label raus


kann man durch dieses Auskommentieren das Label im Literaturverzeichnis weglassen. Ich will jetzt das Label aber nicht weglassen sondern ändern. Ich will die Jahresangabe in Klammern gesetzt haben. Also "Autor (Jahr)" als Label. Ich verstehe aber nicht wie dieses Label erzeugt wurde. In der weiter unten angehängten und korrigierten minimal.tar (http://www.mrunix.de/forums/attachment.php?attachmentid=3227&stc=1&d=1252232670) ist ein Minimalbeispiel inklusive der style Datei. Die beiden Zeilen oben sind Zeilen 591 und 592. Aber dort wird es ja eben auch nicht definiert.

In einer sty Datei konfiguriere ich auch nochmal speziell einen Zeilenumbruch nach dem Label:



\newcommand{\bibstyle@natdin}{%
\bibpunct{(}{)}{;}{a}{}{,~}
\gdef\NAT@biblabelnum##1{\textsc{\textbf{##1}}\\}} %
% \\ bewirkt Zeilenumbruch nach label-Ausgabe
\bibstyle@natdin

Aber auch hier wird mir einfach nicht klar wie biblabelnum überhaupt erzeugt wurde. Versteht das jemand?

LG

rais
06-09-2009, 10:51
Moin moin,


Ich will die Jahresangabe in Klammern gesetzt haben. Also Autor (Jahr) als Label.

na, Du bist lustig ... schau mal in Deine .blg:


Warning--there's no year in Ref1
Warning--there's no year in Ref2
Warning--there's no year in Ref3

fällt Dir da nix auf ?


Ich verstehe aber nicht wie dieses Label erzeugt wurde. In der angehängten minimal.tar (http://www.mrunix.de/forums/attachment.php?attachmentid=3218&stc=1&d=1252075529) ist ein Minimalbeispiel inklusive der style Datei. Die beiden Zeilen oben sind Zeilen 591 und 592. Aber dort wird es ja eben auch nicht definiert.

\dinatlabel wird etwas weiter unten (so um Zeile 2010 herum) definiert bzw. diese Definition direkt in die .bbl geschrieben:


\newcommand{\dinatlabel}[1]%
{\ifNAT@numbers\else\NAT@biblabelnum{#1}\fi}

benutzt also \NAT@biblabelnum, so natbib nicht von einem numerischen Stil ausgeht.


In einer sty Datei konfiguriere ich auch nochmal speziell einen Zeilenumbruch nach dem Label:



\newcommand{\bibstyle@natdin}{%
\bibpunct{(}{)}{;}{a}{}{,~}
\gdef\NAT@biblabelnum##1{\textsc{\textbf{##1}}\\}} %
% \\ bewirkt Zeilenumbruch nach label-Ausgabe
\bibstyle@natdin

Das gehört eigentlich nicht in eine .sty -- die Du in Deiner `test.tex' auch nicht lädst -- sondern vielmehr in natbib.cfg und wird dann von natbib automatisch geladen.


Aber auch hier wird mir einfach nicht klar wie biblabelnum überhaupt erzeugt wurde. Versteht das jemand?

Nun ja, \NAT@biblabelnum hast Du hier ja gerade definiert und \dinatlabel ruft bei Dir diesen \NAT@biblabelnum auf. Wie Du an der Parameteranzahl erkennen kannst (##1), ist an dieser Stelle das Label bereits komplett -- und da \dinatlabel praktisch nur dinat.label ausgibt, ist es hier schon zu spät für Dich ... schau also, wie dieser dinat.label zusammengeschraubt wird.
Bevor Du selbst daran schraubst, solltest Du Dir Deine natdin.bst-Kopie umbenennen in `mynatdin.bst' oder `modnatdin.bst' -- irgend etwas, aus dem hervorgeht, daß eine modifizierte Version benutzt wird
Alternativ könntest Du Dir auch einen Stil ansehen, der `Autor (Jahr)' bereits setzt, z. B. jureco.

MfG

twohead
06-09-2009, 12:25
Zunächst: Vielen Dank für deine Mühe!




fällt Dir da nix auf ?



Ja, jetzt wo du es sagst fällt mir auf, dass es sich dabei a) um kein Minimalbeispiel handelt und b) auch noch falsch ist. Sorry. Ich hab ein altes genommen ohne nochmal reinzugucken. War das letzte mal ;) Ich hab schonmal eins mit \includefile gesehen, aber das hat bei mir nur einmal kompilieren geklappt, danach nicht mehr. Siehe alter Beitrag: http://www.mrunix.de/forums/showpost.php?p=299316&postcount=1 ganz unten (in dem Beitrag)

Korrektes Minimalbeispiel: http://www.mrunix.de/forums/attachment.php?attachmentid=3227&stc=1&d=1252232670



\dinatlabel wird etwas weiter unten (so um Zeile 2010 herum) definiert bzw. diese Definition direkt in die .bbl geschrieben:


\newcommand{\dinatlabel}[1]%
{\ifNAT@numbers\else\NAT@biblabelnum{#1}\fi}

benutzt also \NAT@biblabelnum, so natbib nicht von einem numerischen Stil ausgeht.

Nun ja, \NAT@biblabelnum hast Du hier ja gerade definiert und \dinatlabel ruft bei Dir diesen \NAT@biblabelnum auf. Wie Du an der Parameteranzahl erkennen kannst (##1), ist an dieser Stelle das Label bereits komplett -- und da \dinatlabel praktisch nur dinat.label ausgibt, ist es hier schon zu spät für Dich ... schau also, wie dieser dinat.label zusammengeschraubt wird.
Bevor Du selbst daran schraubst, solltest Du Dir Deine natdin.bst-Kopie umbenennen in `mynatdin.bst' oder `modnatdin.bst' -- irgend etwas, aus dem hervorgeht, daß eine modifizierte Version benutzt wird
Alternativ könntest Du Dir auch einen Stil ansehen, der `Autor (Jahr)' bereits setzt, z. B. jureco.

MfG

Das war ungefähr mein Stand, ich konnte es aber nicht so gut zusammenfassen. Leider finde ich die Definition von dinat.label aber nicht mal. Und ich bin mir nicht sicher ob ich sie verstehen würde, da ich schon tex kaum verstehe, das ja aber bibtex ist, richtig?

Mein Literaturverzeichnis ist schon sehr gut und ich würde deswegen keine neuen Pakete mehr ausprobieren wollen. Ist "nur" ein kleines Detail, für das ich eigentlich überhaupt keine Zeit mehr habe, da ich kurz vor der Abgabe stehe. Deshalb auch der Fehler mit dem Minimalbeispiel *AscheaufmeinHaupt*
Aber Latex verleitet eben zum Perfektionismus. :D
Und ich dachte irgendwo "hart" diese Klammern einfügen das krieg ich noch hin, aber ich find die Stelle eben nicht.

LG

rais
06-09-2009, 15:00
Moin moin,


Mein Literaturverzeichnis ist schon sehr gut und ich würde deswegen keine neuen Pakete mehr ausprobieren wollen. Ist "nur" ein kleines Detail, für das ich eigentlich überhaupt keine Zeit mehr habe, da ich kurz vor der Abgabe stehe.
nun gut, wenn Du Dich in die Tiefen der BibTeX-Stil-Programmierung begeben willst, kannst Du schonmal mit `texdoc btxdoc' zum Auffrischen anfangen und dann mit `texdoc btxhak' weitermachen (irgendwo gab es afair auch `Tame the beast' verlinkt) ... sooo leicht fällt u. a. mir diese BibTeX-Programmierung auch nicht, deshalb ja auch der Hinweis auf einen Stil, bei dem afaik genau das per Voreinstellung passiert, was Du hier in natdin reinschrauben willst. Und es wäre ja immerhin denkbar, dass es damit vllt nicht von vorneherein passend, aber doch wenigstens leichter an Deine Vorstellungen anpassbar sein könnte.
Aber das willst Du ja gar nicht erst ausprobieren ...

MfG

bobmalaria
06-09-2009, 15:15
...und als ein letzter ausweg bleibt immer noch biblatex

gruss

twohead
06-09-2009, 15:44
Aber das willst Du ja gar nicht erst ausprobieren ...


Hab mir jetzt kurz die jurabib Doku angeguckt. Das wird jetzt definitiv zu viel Aufwand. Bis ich da alle meine Zitate wieder in dem Stil habe. Da verzichte ich tatsächlich lieber auf die Klammer.

Trotzdem danke für die Infos.


...und als ein letzter ausweg bleibt immer noch biblatex

gruss

Ist leider nicht mal installiert. Ich bin auch nicht root und hab keine Zeit mehr einen Admin damit zu beauftragen oder das selbst noch einzurichten. Das sieht mir aber noch besser aus als jurabib!