PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BibTeX, Style: abstract und Breite der Keys



JKoenig
10-07-2008, 08:49
Hallo,

ich nutze BibTeX mit dem \bibliographystyle{abstract}-Stil und definiere meine Keys in der .bib-Datei selbst. Alles funktioniert einwandfrei, jedoch habe ich zwei Keys, die aus acht Zeichen bestehen. Alle anderen Keys bestehen aus maximal sechs Zeichen. Die Formatierung orientiert sich jedoch nicht am längsten Key. Dementsprechend ist die Breite der Spalte im Literaturverzeichnis, in der die Keys stehen, nur so breit, dass Keys mit "normaler" Länge dort reinpassen. Bei den beiden langen Keys wird einfach der dazugehörige Text etwas eingerückt, damit der Key genügend Platz hat.

Ein angehängter Screenshot zeigt das Verhalten, da es vermutlich nicht so einfach vorstellbar ist.

Das sieht sehr unschön aus...oder?

Hat jemand eine Idee, wie ich das konfigurieren könnte?

Für Hilfe wäre ich sehr dankbar...

Viele Grüße,

JKoenig

JKoenig
18-07-2008, 14:39
Hat hier keiner eine Idee?

Für Hilfe wäre ich sehr dankbar...

Viele Grüße,

JKoenig

rais
19-07-2008, 23:36
Moin moin,
als würgaround könntest Du nach dem BibTeX-Lauf in Deiner .bbl-Datei


\begin{thebibliography}{<diesen String verlängern>}

Wenn Du das automagisch haben willst, dann versuch es so:

Erstelle eine Kopie von `abstract.bst' in Deinem Projektordner und nenne sie z. B. `myabstract.bst'
ersetze in den *.label-Funktionen dieser `myabstract.bst'


{ cite$ #1 #3 substring$ }

zu


{ cite$ #1 #9 substring$ }

nur noch \bibliographystyle entsprechend in der .tex angepasst...

MfG

JKoenig
21-07-2008, 08:02
Hallo Rainer,

erst mal vielen Dank für deine Hilfe...

Das Verlängern des Strings in der .bbl-Datei funktioniert. Natürlich ist das etwas aufwändig, aber als workaround durchaus machbar.

Der automatische Lösungsvorschlag funktioniert bei mir allerdings nicht, obwohl er definitiv myabstract.bst zur Erstellung heranzieht. Ich habe das "#3" in "#9" bei folgenden Funktionen geändert:

FUNCTION {author.key.label}
FUNCTION {author.editor.key.label}
FUNCTION {author.key.organization.label}
FUNCTION {editor.key.organization.label}

... ohne Erfolg...

Hast du noch eine Idee?

Vielen Dank für deine Mühe!!!

rais
21-07-2008, 22:30
Moin moin,
versteh' ich nicht ... mit


\begin{filecontents}{foo.bib}
@misc{foo,
title={Minimalbeispiel}
}

@misc{laaaang,
title={Minimalbeispiel},
note={\url{http://www.minimalbeispiel.de}}
}
\end{filecontents}
\documentclass{article}
\renewcommand*\refname{References (myabstract)}
\usepackage{url}
\begin{document}
\nocite*
\bibliographystyle{myabstract}
\bibliography{foo}
\end{document}

und


FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #9 substring$ } %%%<--#3->#9
{ key #3 text.prefix$ }
if$
}
{ author format.lab.names }
if$
}
(stellvertretend für die 4 geänderten Funktionen in myabstract.bst) bekomme ich gleich breite Marken.
Überzeuge Dich mal davon, ob `myabstract.bst' auch wirklich die ist, die Du angepasst hast -- vorzugsweise aus dem Pfad heraus, in dem Deine Testdatei (.tex) residiert:


kpsewhich myabstract.bst

sollte den Pfad zu Deiner ausgeben: wenn Du so wie von mir zuvor vorgeschlagen vorgegangen bist also ``./myabstract.bst''.

Du kannst ja mal dieses Beispiel laufen lassen und Dir die Ausgabe anschauen ... bzw. die erste Zeile in der entstandenen .bbl: Wenn da


\begin{thebibliography}{foo}
steht, poste mal die entstandene .blg (BibTeX-Logdatei) und/oder vergleiche nochmal, was Du in der myabstract.bst wie geändert hast.
Wenn da


\begin{thebibliography}{laaaang}
steht, aber trotzdem in Deiner Datei sich nichts durch den Einsatz von myabstract.bst geändert hat, dann poste bitte ein eigenes Minimalbeispiel (wie das geht, kannst Du hier ja schon sehen).

... oder sind Dir einfach neun Zeichen nicht breit genug?

MfG

JKoenig
22-07-2008, 09:57
Hallo Rainer!

Basierend auf deinem Minimalbeispiel hier mein Beispiel:



\begin{filecontents}{foo.bib}
@book{BLA1,
title={Ein Titel},
author={Ein Author},
publisher={Ein Verlag},
year={Ein Jahr},
month={Ein Monat},
isbn={Eine ISBN},
}

@book{BLA1234,
title={Ein Titel},
author={Ein Author},
publisher={Ein Verlag},
year={Ein Jahr},
month={Ein Monat},
isbn={Eine ISBN},
}
\end{filecontents}


\documentclass{article}
\renewcommand*\refname{References (myabstract)}
\usepackage{url}
\begin{document}
\nocite*
\bibliographystyle{myabstract}
\bibliography{foo}
\end{document}


TeXnicCenter erzeugt beim Kompilieren u. a. folgende Ausgabe:



[...]
The style file: myabstract.bst
[...]


Das daraus resultierende Ergebnis ist als Bild im Anhang...

Die einzigen Unterschiede zwischen abstract.bst und myabstract.bst sind vier Änderungen von "3" in "9".

Hast du noch eine Idee?

Vielen Dank für deine Mühe!!!

rais
22-07-2008, 20:55
Moin moin,
da hab' ich wohl zu viel gekürzt;-)
Auch auf die Gefahr hin, es gerade wieder zu tun, versuch mal


FUNCTION {calc.label}
{
cite$ 'label := %%%<--
year field.or.null purify$ #-1 #4 substring$
sortify 'sort.label :=
}
in Deiner myabstract.bst ... aber Vorsicht: es findet keine Begrenzung der Markenbreite mehr statt, ggf. ergänze den substring$ mit für Dich passenden Werten.
Wenn's funzt, kannst Du so auch die vier zuvor angesprochenen Funktionen weglassen...
aber schau Dir erstmal an, ob's damit noch -- neue? -- Probleme gibt.

MfG

JKoenig
24-07-2008, 08:31
Hallo,

im Minimalbeispiel funktioniert das einwandfrei. In meiner Life-Umgebung meiner Dokumentation bekomme ich die Fehlermeldung "... the literal stack isn't empty for entry ...".

Laut manchen Foren-Postings ist meine Installation zu alt, wundert mich aber dann, dass es in der Minimalinstallation funktioniert.

Wenn ich die Installation updaten muss, würde ich darauf verzichten (ist mir zu gefährlich, was ich dann sonst noch für Nebeneffekte habe) und das Workaround nutzen und in der .bbl-Datei den string zu verlängern. Oder du hast noch eine andere Idee?

Vielen Dank und Grüße,

JKoenig

rais
25-07-2008, 09:04
Moin moin,


im Minimalbeispiel funktioniert das einwandfrei. In meiner Life-Umgebung meiner Dokumentation bekomme ich die Fehlermeldung "... the literal stack isn't empty for entry ...".

steht in der Meldung nicht drin, auf welchen Eintrag sie sich bezieht? Was passiert, wenn Du diesen Eintrag aus Deinem Projekt in das MB überträgst?

MfG

JKoenig
28-07-2008, 07:57
Ich muss mich korrigieren: Die Meldung kommt auch beim Minimalbeispiel bei JEDEM BibTeX-Eintrag (auch bei den minimalen Einträgen). Die minimale PDF-Datei wird dennoch korrekt erzeugt.

Auch beim richtigen Dokument funktioniert es - trotz der Meldungen.

Dennoch ist mir das irgendwie suspekt und ich weiß nicht, ob ich das so lassen sollte... Was meinst du?

rais
28-07-2008, 10:52
Moin moin,

Ich muss mich korrigieren: Die Meldung kommt auch beim Minimalbeispiel bei JEDEM BibTeX-Eintrag (auch bei den minimalen Einträgen). Die minimale PDF-Datei wird dennoch korrekt erzeugt.

das kann ich nicht nachvollziehen:


This is BibTeX, Version 0.99c (Web2C 7.5.6)
The top-level auxiliary file: abstract-test.aux
The style file: myabstract.bst
Database file #1: foo.bib
ist bei mir die komplette Konsolenausgabe von BibTeX (mit dem Beispiel aus Beitrag#6 als `abstract-test.tex' und nur der Anpassung von calc.label aus Beitrag#7 in myabstract.bst -- ansonsten identisch mit `abstract.bst').
Irgend etwas hast Du wohl anders gemacht ...

MfG

JKoenig
28-07-2008, 13:54
Auch auf die Gefahr hin, es gerade wieder zu tun, versuch mal


FUNCTION {calc.label}
{
cite$ 'label := %%%<--
year field.or.null purify$ #-1 #4 substring$
sortify 'sort.label :=
}


mmhhh... Ich habe den Fehler gemacht und interpretiert, dass du die Funktion selbst gekürzt hast und habe nur die Änderung von



'label :=


in



cite$ 'label := %%%<--


geändert. Wenn ich die Funktion tatsächlich so kürze, funktioniert es einwandfrei.

Kann das sonst noch irgendwelche Nebeneffekte haben, die ich jetzt bei einer schnellen Prüfung hätte übersehen können?

rais
28-07-2008, 22:17
Moin moin,

mmhhh... Ich habe den Fehler gemacht und interpretiert, dass du die Funktion selbst gekürzt hast (...)

ah, so gesehen hätte der Kommentar besser in die FUNCTION-Zeile gehört;-)

Kann das sonst noch irgendwelche Nebeneffekte haben, die ich jetzt bei einer schnellen Prüfung hätte übersehen können?
Möglich -- ich kenn' Deine .bib ja nicht -- schau Dir den Rest aus Beitrag#7 vllt nochmal etwa ab `aber Vorsicht' an.;)

MfG

JKoenig
31-07-2008, 19:17
Danke für die Hilfe...

Sabine.1234
06-10-2008, 19:17
Hallo,

also ich habe überhaupt keine .bst Datei. Ist das eine, die ich selbst anlegen muss?

Viele Grüße
Sabine

mechanicus
06-10-2008, 20:24
Hallo,

wie du hast keine bst-Datei? In diesen Dateien sind doch dein Styles abgespeichert. Wenn du Miketex nutz, dann schaue mal hier nach:

C:\...\MiKTeX 2.7\bibtex\bst
Da findest du alle Styles und auch die dazugehörigen bst. Was hier besprochen wurde war eine selbsterstellte bst mit makebst (http://de.wikibooks.org/wiki/LaTeX-W%C3%B6rterbuch:_makebst).

Gruß
Marco

Sabine.1234
06-10-2008, 21:40
Ich hatte die Datei über die Suche gesucht und da wurde keine gefunden. In dem Verzeichnis liegen sie aber natürlich... Danke! Werde mal versuchen, eine eigene bst zu erstellen.

Sabine.1234
26-10-2008, 15:48
ersetze in den *.label-Funktionen dieser `myabstract.bst'


{ cite$ #1 #3 substring$ }

zu


{ cite$ #1 #9 substring$ }

nur noch \bibliographystyle entsprechend in der .tex angepasst...
[/LIST]
MfG

Hallo,

also ich verstehe nicht, was ich ändern muss. Habe wie hier angegeben die Änderungen gemacht, aber es verändert sich gar nichts bei der Ausgabe...

Wenn ich den anderen Tipp mit
cite$ 'label := umsetze, dann sind die Keys ja genau die, die ich im Text verwendet habe. Ich verwende den Style geralpha.

Wär super, wenn mir hier jemand auf die Sprünge helfen könnte!

Viele Grüße
Sabine

rais
27-10-2008, 07:37
Moin moin,


Wenn ich den anderen Tipp mit
cite$ 'label := umsetze, dann sind die Keys ja genau die, die ich im Text verwendet habe.

und genau darum geht es in diesem Thread.


Ich verwende den Style geralpha.

Wär super, wenn mir hier jemand auf die Sprünge helfen könnte!

Wäre noch besser, wenn Du erst einmal ein Minimalbeispiel erstellst, das demonstriert, wozu Du eigentlich eine andere Markenbreite bei Verwendung von geralpha benötigst.

MfG

Sabine.1234
27-10-2008, 09:19
Ich habe das Problem, dass die langen Labels in die Quellenangabe eingerückt werden.

Hier mein Beispiel:

\documentclass[a4paper,fontsize=12pt,pointlessnumbers,]{scrreprt}
\usepackage{scrpage2}
\usepackage[
nonumberlist, %keine Seitenzahlen anzeigen
acronym, %ein Abkürzungsverzeichnis erstellen
toc %Einträge im Inhaltsverzeichnis
]
{glossaries}
\usepackage{setspace}
\usepackage{titlesec}
\usepackage[ngerman]{babel}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{textcomp}
\usepackage{bibgerm}
\usepackage{graphicx}
\usepackage{array}
\usepackage{mathtools}
\usepackage{remreset}
\usepackage{amssymb}
\usepackage[square]{natbib}
\usepackage[justification=centering]{caption}
\usepackage[left=3cm,top=3cm,right=2cm,bottom=2cm,nohead,foot= 1cm]{geometry}
\newglossary[slg]{symbols}{syi}{syg}{Symbolverzeichnis}
\makeglossaries
\pagestyle{scrheadings}
\clearscrheadfoot
\ofoot[\pagemark]{\pagemark}
\input{header}
\makeatletter
\@removefromreset{footnote}{chapter}
\renewcommand*\env@cases[1][1.2]{
\let\@ifnextchar\new@ifnextchar
\left\lbrace
\def\arraystretch{#1}
\array{@{}l@{\quad}l@{}}}
\makeatother
\setlength{\parindent}{0.65cm}
\setkomafont{sectioning}{\normalcolor\bfseries}
\begin{document}
\renewcommand*{\chapterheadstartvskip}{\vspace*{-20mm}}
\renewcommand{\acronymname}{Abkürzungsverzeichnis}
\glossarystyle{super}
\renewcommand*{\glspostdescription}{}
\renewcommand{\glsgroupskip}{}
\renewcommand{\glsdescwidth}{12 cm}
\newcommand{\myfootnote}[1]{\footnote{\parbox[t]{0.98\textwidth}{ #1\vspace{0.5em}}}}
\setstretch{1,5}
\include{Kapitel/MeinText}
\bibliographystyle{geralpha}
\bibliography{Literaturverzeichnis}
\end{document}


Einträge in meiner bib-Datei:

@article{GARNETT02,
author= {O. Garnett and A. Mandelbaum and M. Reiman},
title= {Desiging a Call Center with Impatient Customers},
journal= {Manufacturing \& Service Operations Management},
year= {2002},
volume= {4},
number= {3},
pages= {208--227},
}
@incollection{VDI3633,
author= {{Verein Deutscher Ingenieure (VDI)}},
title= {VDI-Richtlinie 3633. Simulation von Logistik-, Materialfluß- und Produktionssystemen. Begriffsdefinitionen},
booktitle= {VDI-Hand\-buch Materialfluß und Fördertechnik},
publisher= {Beuth Verlag},
year= {1996},
volume= {8},
address= {Berlin},
}

Im Text referenziert mit

Das Label dieser Literaturangabe ist zu lang \citep{GARNETT02}.

Dieses ist ok \citep{VDI3633}.

Danke und Gruß
Sabine

rais
27-10-2008, 18:53
Moin Sabine,
also `Minimal' solltest Du vllt nochmal den einen oder anderen Gedanken widmen...
Das Problem scheint mir hier zu liegen:




author= {{Verein Deutscher Ingenieure (VDI)}},


durch die doppelte Klammerung nimmt geralpha `{Ver}96' hier als Marke, die geschweiften Klammern werden bei der Berechnung `breiteste Marke' mit ausgewertet -- und ist damit breiter als `GMR02'.
Evtl. hilft es bereits, wenn Du diesen Autor umschreibst, z. B. zu


author= {VDI, Verein Deutscher Ingenieure},

nicht nur ist `GMR02' dann die Breitere dieser beiden Marken, nebenbei bekommst Du so `VDI96' für die Andere.;)
MfG

Sabine.1234
28-10-2008, 09:21
Du hast natürlich Recht, minimal ist was anderes... Ich weiß nur meist nicht, was ich rauslöschen darf.

Ich habs so

author= {VDI, Verein Deutscher Ingenieure},
versucht, bringt aber keinen Erfolg. Ich hatte auch noch einen anderen ähnlichen Eintrag, den ich angepasst habe.

Sonst gibts keine Doppelklammern...

Hast Du noch eine andere Idee?

Viele Grüße
Sabine

Sabine.1234
28-10-2008, 09:26
Ich muss mich korrigieren, habe da doch noch so einen Eintrag entdeckt, nämlich


author= {{Gabler Verlag}},

Wenn ich die geschweifte Klammer lösche, bekomme ich allerdings eine Quellenangabe mit Ver08. Ich möchte aber, dass der Eintrag unter Gab08 einsortiert wird...

Viele Grüße
Sabine

Xenara
28-10-2008, 10:14
Was passiert, wenn du stattdessen


author= {Verlag Gabler},

und


author= {Verein Deutscher Ingenieure VDI},

schreibst? Eigentlich müsste das erste Wort als Vorname (also "Verlag") und das zweite als Nachname (also "Gabler") gewertet werden.
Beim Verein Deutscher Ingenieure bin ich mir nicht ganz sicher, wie es genau sein sollte. So wie ich es jetzt gemacht habe, sollte "VDI" als Nachname gelten.

Btw., wieso schreibst du beim ersten Beispiel den Verlag ins Autorenfeld? Hierzu ist doch eher das publisher-Feld zuständig. Afaik kannst du dann, wenn Autor und Editor leer sind, explizit ein key-Feld setzen und den Key selbst definieren.

Und mir ist noch aufgefallen, andere, die diese Richtlinie zitieren, drücken sich um so ein Problem und geben gar keinen Autor an ;)
Z.B. hier (http://www.fb9dv.uni-duisburg.de/vdb/info.php?id=861&mode=veranstaltung&PHPSESSID=5e9c83bf243f2dc0e1d83cef26f6a21b) und hier (http://www.hsb.bfh.ch/NR/rdonlyres/4EF2929D-6269-4350-8D16-D9A423DEDC0A/0/14_Produktionssystem.pdf).

Sabine.1234
28-10-2008, 10:37
Hallo Xenara,

der VDI-Eintrag ist so wie oben von rais vorgeschlagen ok. Alles wunderbar.
Wenn ich aber Gabler Verlag als

author={Verlag Gabler}, eingebe, erhalte ich ja in der Ausgabe
GABLER, VERLAG. Das Komma ist unschön.

Zur author/editor-Anmerkung: Eigentlich brauche ich in Fällen, wo es einen Editor gibt sogar beide Angeben. Das ist das nächste Problem: Ich kann ja nur eine verwenden...

Gruß
Sabine

rais
28-10-2008, 12:53
Moin Sabine,


Wenn ich aber Gabler Verlag als

author={Verlag Gabler}, eingebe, erhalte ich ja in der Ausgabe
GABLER, VERLAG. Das Komma ist unschön.

evtl. ließe sich dieser Eintrag als @manual anlegen, dann könntest Du statt author hier

organization={Gabler Verlag},verwenden.
MfG

Sabine.1234
29-10-2008, 21:52
evtl. ließe sich dieser Eintrag als @manual anlegen, dann könntest Du statt author hier

organization={Gabler Verlag},verwenden.


Sieht zunächst ganz gut aus, aber bei @manual steht das Jahr nicht am Ende. Kann irgendwie bestimmen, dass die Jahreszahl auch hier ans Ende geschrieben wird?

Viele Grüße
Sabine

rais
30-10-2008, 11:08
Sieht zunächst ganz gut aus, aber bei @manual steht das Jahr nicht am Ende. Kann irgendwie bestimmen, dass die Jahreszahl auch hier ans Ende geschrieben wird?

wie sieht Dein Eintrag aus? Bei mir steht das Jahr da...

MfG

Sabine.1234
30-10-2008, 20:35
Hmm, jetzt klappts doch. Vllt. hab ich nicht oft genug kompiliert...

Aber bei @manual steht der Ort weiter vorn. Das sollte eigentlich nicht so sein. Ich habe

@manual{GabLex,
organization= {Gabler Verlag},
title= {Gabler Wirtschafts-Lexikon},
edition= {16.},
address= {Wiesbaden},
year= {2004},
}

eingegeben und
[Gab04] GABLER VERLAG, Wiesbaden: Gabler Wirtschafts-Lexikon, 16. Auflage, 2004.
kommt raus. Bei Büchern steht der Ort unmittelbar vor der Auflage...

Grüße
Sabine

rais
31-10-2008, 09:32
Moin moin,


Aber bei @manual steht der Ort weiter vorn. Das sollte eigentlich nicht so sein.

warum nicht?


Ich habe

@manual{GabLex,
organization= {Gabler Verlag},
title= {Gabler Wirtschafts-Lexikon},
edition= {16.},
address= {Wiesbaden},
year= {2004},
}

eingegeben und
[Gab04] GABLER VERLAG, Wiesbaden: Gabler Wirtschafts-Lexikon, 16. Auflage, 2004.
kommt raus. Bei Büchern steht der Ort unmittelbar vor der Auflage...

aber in beiden Fällen steht der Ort direkt nach dem `Verlag' -- bei @manual muß organization dafür herhalten -- und darauf bezieht sich der Ort, nicht auf die Auflage...

MfG

Sabine.1234
02-11-2008, 20:55
Hmm, ok. Es erschien mir nur irgendwie falsch, dass erst der Ort und dann der Titel kommt.

rais
02-11-2008, 23:06
Nun ja, wenn Dir das nicht nach der Mütze ist, könntest Du auch so etwas machen (Shell; alias EDITOR='was-Du-so-als-Texteditor-bevorzugst'):


cd zu/Deinem/Projekt
cp `kpsewhich geralpha.bst` mygeralpha.bst
EDITOR mygeralpha.bst

also auf einer Konsole in Dein Arbeitsverzeichnis wechseln, die bisher verwendete geralpha.bst (`kpsewhich geralpha.bst`) dort als Kopie `mygeralpha.bst' ablegen (`cp' wie in `copy'), dann Deinen bevorzugten EDITOR damit aufrufen, dort in der Funktion `begin.bib' die vorletzte Zeile etwa so


"\begin{thebibliography}{" longest.label * "\extendmybiblabel}" * write$ newline$
modifizieren, dann kannst Du in Deiner Präambel noch so etwas wie


\newcommand*\extendmybiblabel{X}
deklarieren, sowie \bibliographystyle{mygeralpha} statt `geralpha' setzen:nu kannst Du auch wieder author={{...}} in Deiner .bib verwenden, ggf. brauchst Du so nur diese \newcommand*\extendmybiblabel-Zeile anzupassen.;)
MfG

Sabine.1234
02-11-2008, 23:47
Danke, werde das bei Zeiten mal testen :)