Biblatex alphabetic anpassen Thema ist als GELÖST markiert

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


Renzo

Biblatex alphabetic anpassen

Beitrag von Renzo »

Hallo, ich bin glücklicherweise auf BibLaTeX gestoßen und eigentlich sehr zufrieden. Ich benutzte den style "alphabetic" und es sieht auch fast so aus, wie ich bzw mein Lehrstuhl das gerne hätte.
Das Hauptproblem tritt auf wenn ich Norme zitieren möchte. Da soll dann nichts abgeschnitten werden sondern die komplette Norm gezeigt werden. Also z.B.:
Die Verfügbarkeit ist definiert als \enquote{die Wahrscheinlichkeit, ein Element oder ein System zu einem vorgegebenen Zeitpunkt in einem funktionsfähigen Zustand anzutreffen.} \cite{VDI3649}
Da kommt dann halt einfach nur [VDI] raus, es sollte aber [VDI-3649] (was als Author eingetragen ist) rauskommen.
Ich dachte ich hätte ein workaround durch folgende Ergänzung der alphabetic.cbx gefunden
\DeclareCiteCommand{\citenorm}
{\usebibmacro{prenote}\bibleftbracket}
  {\usebibmacro{citeindex}%
   \usebibmacro{norm}}
  {\multicitedelim}
  {\usebibmacro{postnote}\bibrightbracket}

\newbibmacro*{norm}{%
\printtext[bibhyperref]{\printnames{author}}
}
Zwei Probleme gibt es dabei:
1. Es wird ein Leerzeichen vor der schließenden eckigen Klammer eingefügt [VDIVDI-3649 ]
2. Diese Formatierung wird natürlich nicht für das Literaturverzeichnis übernommen sondern da steht nach wie vor [VDI]

Könnte mir bitte jemand auf die Sprünge helfen?

Vielen Dank

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

Beitrag von DonCube »

Hallo Renzo,
hättest du vielleicht deinen Code zu Hand?? Bzw ein vollständiges Minimalbeispiel. Denn das würde es uns erheblich
leichter machen, dein Problem nachzuvollziehen. Ich weiß nicht ob du als Gast was hochladen kannst. Aber sonst registrier
dich einfach und lade deine .tex und eine pdf mit dem ergebniss hoch. Auch die Bib wäre nicht schlecht.

Ich denke dann hast du schnell eine Antwort.... :)


Gruß
DonCube
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

renzo
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 12. Jul 2008, 20:57

Beitrag von renzo »

Hallo DonCube,

so eine schnelle Antwort hatte ich gar nicht erwartet, deshalb hab ich erst heute erst wieder ins Forum geschaut.

Im Anhang habe ich die Vorgabe meines Lehrstuhls zerstückelt und das wichtigste als pdf extrahiert. Dort kann man sehen wie die citations und das Literaturverzeichnis aussehen sollen.

Also einer der entsprechenden bib Einträge sieht so aus:
@misc{VDI3423,
type={standard},
author={VDI-3423}
title  ={Verfügbarkeit von Maschinen und Anlagen},
}
Da bin ich allerdings sehr flexibel, ich habe erst sehr wenige dieser "Norm" Einträge, könnte die also relativ schnell noch in eine Andere Form bringen wenn das Nötig sein sollte.

In meinem Header steht:
\usepackage[style=alphabetic,hyperref]{biblatex}
\bibliography{bibliography/literaturliste}

das Verzeichnis selber binde ich dann per
\clearpage
\defbibheading{Literaturverzeichnis}{\chapter{Literaturverzeichnis}}
\printbibliography[heading=Literaturverzeichnis]
ein.

Zitieren tue ich dann wie in meinem ersten Post beschrieben.

Was muss ich tun um das geforderte Ergebnis (siehe Anhang) zu erzielen.

Achso, falls wir schon dabei sind würde ich zu meiner Defizitaufzählung noch
3. Wie bekomme ich nach jedem Eintrag (Author, Titel, Ort usw) in der Literaturliste einen Zeilenumbruch? (siehe Vorlage im Anhang)

Vielen Dank für die Hilfe
Dateianhänge
Vorlage Lehrstuhl.pdf
(7.85 KiB) 1570-mal heruntergeladen

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

Beitrag von DonCube »

Hi Renzo,
ich habe mir dein Problem mal angeschaut. Du möchtest ja das Label neu definieren, so dass er nichts einkürzt und nur den Autor reinschreibt. Leider ist es mir nicht gelungen direkt den Autor als Label einzubinden. Es geht recht einfach mit beliebigen Feldern (Fields). Aber die Autoren sind leider eine Liste mit der Bezeichnung name.

Daher habe ich nun ein workaround gemacht. Das ist eventuell nicht ganz so sauber wie es vielleicht sein könnte, aber da hier sonst keine Lösungen stehen, scheint es auch nicht ganz einfach zu sein.

Nun zu deinen Fragen:

1. Beim \cite Befehl soll der Autor aufgeführt werden.
\citeauthor{VDI-3423}
2. Die Auflistung im Literaturverzeichnis soll mit [VDI-3423] erfolgen.
Dazu fügst du in dein *.bib File ein weiteres Feld ein. Und zwar mit dem Namen abstract, denn dann wird es nicht aufgeführt. Damit sieht deine Bib dann folgendermaßen aus.
@MISC{VDI-3423,
  author = {VDI-3423},
  title = {{Verfügbarkeit von Maschinen und Anlagen}},
  abstract = {VDI-3423}
}
Nun musst du noch die Bibliotheksumgebung neu definieren, um anstatt des [VDI] nun anhand der abstract-Feldes [VDI-3423] zu listen.
%Bibliothek einbinden
\usepackage[style=alphabetic,labelalpha,hyperref]{biblatex} 
\bibliography{mybib} 

%Neu definieren
\renewenvironment*{thebibliography}
{\list
{\printfield[labelalphawidth]{abstract}} %<<<----- Hier das Feld abstract einfügen
{\setlength{\labelwidth}{\labelalphawidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
\renewcommand*{\thebibitem}{\item}
So das ist jetzt vielleicht nicht die sauberste aller Lösungen, aber was anderes fällt mir wie gesagt nicht ein. Nun sollte dein Literaturverzeichnis nach deinen Wünschen aussehen.

Gruß
DonCube
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

renzo
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 12. Jul 2008, 20:57

Beitrag von renzo »

Hallo DonCube,

vielen Dank erstmal für deine Lösung! Die bringt mich schon einen ganz guten Schritt weiter!

Allerdings werden beim citen keine [] erzeugt.

Bevor du dir dafür was schlaues überlegst :) meine Überlegung:
kann ich statt \citeauthor nicht etwas in der Art wie \citeabstract machen? Das würde mir noch eine deutlich größere Freiheit geben. Dann könnte ich z.B. auch bei der normalen Literatur die Anzeige anpassen. Sollte doch irgendwie gehen, oder? Außerdem wäre dann sichergestellt, dass es einheitlich mit dem Literaturverzeichnis ist, weil da wird ja jezt auch der Abstract genutzt.

Vielen Dank nochmal!

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

BibLaTeX

Beitrag von DonCube »

Ja du könntest wieder nach deinem alten Modell ein eigenes \cite Kommando definieren. Das Leerzeichen am Ende war vermutlich irgendein Delimiter der Abstand bei mehreren Aufzählungen erzeugt.

Schau mal in die Doku welche BibLaTeX beiliegt. Da steht viel zu eigenen cite Kommandos drin. Ansonsten könnte man vielleicht auch
[\citeauthor{VDI}]
schreiben. Allerdings habe ich das nicht ausprobiert. Wääre nur eine Idee die ich ausprobieren würde. Falls beides nicht geht oder du eine Lösung hast, poste sie hier für die Nachwelt.

Ich werde es mir im Laufe des Tages nochmal anschauen....

Gruß
DonCube
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

renzo
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 12. Jul 2008, 20:57

Beitrag von renzo »

Zum Thema Nachwelt:

Was ich will, was ich gemacht habe und was ich bis jetzt erreicht habe:
Im Text soll so gecitet werden: [Wie-00] bei Büchern und [DIN 3496] bei Normen etc. Im Literaturverzeichnis sollen die Sachen dann natürlich auch so stehen.

Was ich gemacht habe:
1. In der Literatur .bib den Eintrag abstract={text}, eingefügt, dabei ist text, das was zwischen den [] stehen soll.
@misc{VDI-3649,
	author = {VDI 3649},
	title  ={Anwendung der Verfügbarkeitsrechnung für Förder- und Lagersysteme},
	year={1992},
	place={Berlin},
	abstract = {VDI 3649}
	}
2. In der alphabetic.cbx (bei mir im Verzeichnis C:\Programme\MiKTeX 2.7\tex\latex\biblatex\cbx) habe ich folgendes eingefügt:
\DeclareCiteCommand{\citeabstract}
{\usebibmacro{prenote}\bibleftbracket}
  {\usebibmacro{citeindex}%
   \usebibmacro{abstr}}
  {\multicitedelim}
  {\usebibmacro{postnote}\bibrightbracket}

\newbibmacro*{abstr}{%
\printtext[bibhyperref]{\printfield{abstract}}
}
3. Im Header meiner tex steht:
%Bibliothek einbinden
\usepackage[style=alphabetic,labelalpha,hyperref]{biblatex}
\bibliography{bibliography/literaturliste}

%Neu definieren
\renewenvironment*{thebibliography}
{\list
{\printfield[labelalphawidth]{abstract}} %<<<----- Hier das Feld abstract einfügen
{\setlength{\labelwidth}{\labelalphawidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
\renewcommand*{\thebibitem}{\item}
4. Citen tut man jetzt im Text mit \citeabstract{VDI-3649}
5. Literaturverzeichnis einbinden so:
\clearpage
\defbibheading{Literaturverzeichnis}{\chapter{Literaturverzeichnis}}
\printbibliography[heading=Literaturverzeichnis]

So sollte es jedem möglich sein meinen Stand zu erreichen.

Was ich bis jetzt erreicht habe, bzw was noch nicht geht:
1. Im Text sieht das citen so aus: [VDI 3649 ], dabei wird vor der schließenden Klammer ein Leerzeichen erzeugt. In der Literaturliste ist dies nicht der Fall.

2. [VDI 3649] ist so lang, dass es den darauf folgenden Eintrag in der Literaturliste nach rechts schiebt. Kann man den Abstand zwischen dem [text] und der Angabe (Author, Titel, Verlag usw.) vergrößern, so dass sowas nicht passiert?

3. Die Normen stehen jetzt ganz oben in der Liste. Dies liegt wahrscheinlich daran, dass ja nach den Nachnamen sortiert wird und Biblatex davon ausgeht, dass 3649 der Nachname ist... Mögliche Lösung: Die Literaturliste sollte nicht nach dem Nachnamen sondern nach dem abstract sortiert werden...

Wär super, wenn der ein (DonCube :) ) oder andere vielleicht noch ein paar Anregungen hat

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

Beitrag von DonCube »

In der Doku, welche du im BibLaTeX Paket findest, welches du runtergeladen hast, steht einiges zum Thema Sortierung. Schau mal auf S. 52ff in der PDF.

Bezüglich der fehlenden Leerzeile musst du nur das Kommande \citeabstract anders definieren. und bitte füge es NICHT in die Style Datei ein sondern in deine ganz normale Präambel. Nicht einfach Sourcen ändern, dass ist immer gefährlich :twisted: . Ausserdem siehst du so immer, was du in der Präambel neues definiert hast. Und dein Code ist auf jedem System ausführbar. Das wäre er so nicht.
\DeclareCiteCommand{\citeabstract} 
{\usebibmacro{prenote}\bibleftbracket} 
  {\printfield{abstract}} 
  {\multicitedelim}
{\bibrightbracket} 
Mit der Spaltenproblematik, das verstehe ich noch nicht ganz. Aus dem Bauch heraus würde ich sagen das muss so und sieht doch gut aus. aber vielleicht habe ich dich auch falsch verstanden. Hättest du vielleicht eine PDF zum Nachvollziehen?

Anbei findest du auch nochmal die Doku auf die ich mich hier beziehe.

Gruß
DonCube
Dateianhänge
biblatex.pdf
Dokumentation von BibLaTeX aus den Package Bundle. Für User und Entwickler.
(873.02 KiB) 5304-mal heruntergeladen
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

renzo
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Sa 12. Jul 2008, 20:57

Beitrag von renzo »

Hi DonCube, wieder einmal vielen Dank, ich komme der Lösung immer näher. Das citen funktioniert jetzt genau so, wie ich es mir vorgestellt habe, damit ist das Thema abgehakt, vielen Dank!
Ich habs jetzt auch im Header gemacht, dachte mir schon, dass es nicht so besonders toll ist in der Style Datei rum zu murksen... Danke für den Hinweis

Nun zur Literaturliste. Im Anhang ist ein pdf mit dem was bis jetzt produziert wird.

Wie gesagt, sorten funktioniert nicht. Ich habe die die Doku nochmal gelesen aber werde nach wie vor nicht so richtig drauß schlau. Ich denke was ich will ist wahrscheinlich die sorting option "all" und dann einen sortkey (abstract) angeben, oder? Aber wie das geht steht da leider nicht (oder ich habe es nicht gefunden)
etwas in der Richtung von
\usepackage[style=alphabetic, sorting=all{abstract},labelalpha,hyperref]{biblatex}
geht leider nicht.

Meine Literaturliste binde ich übrigens so ein:
\DeclareBibliographyDriver{customa}{%
  \usebibmacro{bibindex}%
  \usebibmacro{author}%
  \setunit*{\\}%
  \usebibmacro{title}%
  \setunit{\\}%
  \usebibmacro{loc+pub+year}%
  }
\newbibmacro*{loc+pub+year}{%
  \printlist{place}%
  \setunit*{:\\}%
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \printfield{year}%
  \newunit}
  
Leider wird der Ort nie eingebunden, was mir schleierhaft ist.
Dateianhänge
Literaturverzeichnis.pdf
(48.1 KiB) 2616-mal heruntergeladen

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

Beitrag von DonCube »

Ok habe dein Problem verstanden. Habe aber derzeit keine Möglichkeit mich drum zu kümmern. Habe aufgrund eines anderen Projektes einen 12 Stunden Tag und abends noch ein weiteres Projekt.

Aber ich bin dran. Hoffe es eilt nicht. Sobald ich Luft habe kümmere ich mich drum. Aber als Tipp kann ich dir schonmal sagen das es irgendwo eine feste Breite für die "erste Spalte" gibt. Soweit ich mich erinner heißt sie: \labelalphawidth. Irgendwie war das was in der Doku.

Gruß
DonCube
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

Antworten