biblatex: eigener Literaturstil

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


IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

biblatex: eigener Literaturstil

Beitrag von IrenaSekuta »

Hallo zusammen,

habe das Forum durchforstet und es wurde entliche Hilfestellungen geleistet, jedoch bin ich dennoch zu blöd, mir daraus meine Lösung selber zu erarbeiten. Möchte für unsere Firma ein Literaturverzeichnis erstellen. Alle Eiträge bauen auf REPORT auf. Anbei ein Minimalbeispiel, wobei wichtig ist, dass es nicht funktioniert:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[bibstyle=MeinLiteraturstil, backend=biber]{biblatex}

\begin{filecontents}{MeinLiteraturstil.bbx}
\ProvidesFile{Literaturstil.bbx}[2012/02/16 v1.0 biblatex bibliography style]

\RequireBibliographyStyle{numeric}

\defbibenvironment{bibliography}
{...}

\endinput
\end{filecontents}

\begin{filecontents}{Literatur.bib}
@REPORT{BET/00/1234,
	 AUTHOR     = {Hans Mustermann},
    INSTITUTION = {Test GmbH},
	 TITLE      = {Titel zu Hans Mustermann},
	 DATE       = {1973-11-4},
	 NUMBER     = {BET/00/1234},
	 REVISION   = {1}
}

@REPORT{BEE/09/1234,
	 AUTHOR   = {Gaby Musterfra},
    INSTITUTION = {Probe AG}
	 TITLE      = {Titel zu Gaby Musterfrau},
	 DATE       = {2010-8-5},
	 NUMBER     = {BEE/09/1234},
	 REVISION   = {1}
}
\end{filecontents}


\begin{document}

Hier steht nun \cite[Anhang 1.2]{BET/00/1234} ein sinnloser Satz \cite{BEE/09/1234}, der nichts anderes \cite{BEE/09/1234} bewirken soll als	\cite[Kap.\,3.2]{BEE/09/1234} ein paar Zitate zu demonstrieren.

Das Literaturverzeichnis sollte wie folgt ausgegeben werden:

[1] INSTITUTION; NUMBER; "TITLE"; Rev. REVISION; DATE
[2] INSTITUTION; NUMBER; "TITLE"; Rev. REVISION; DATE

\printbibliography

\end{document}
Der Zitierstil soll numeric bleiben, das Literaturverzeichnis jedoch in der oben gezeigten Form erfolgen. Ich habe meine Literatur in einer Datenbank und erstelle mir programmtechnisch daraus obige Bibtex-Datei. Es gibt folglich nur einen Typ, nämlich REPORT.

Soweit ich es richtig verstanden habe, wird die Ausgabe über
\defbibenvironment{bibliography}
{...}
gesteuert. In {...} muss ich also nun Code eintragen, der mir einfach stupide die Einträge aus meiner Bibtex-Datei ausgiebt, ohne irgendwelche Veränderungen am Inhalt vorzunehmen.

Kann jemand behilflich sein?

Gruss,

Irena
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

csaf5941
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Sa 12. Mär 2011, 20:26

Beitrag von csaf5941 »

Was du sucht ist `\DeclareBibliographyDriver`. Schau dir dazu am besten mal die `numeric.bbx` und `standard.bbx` an. Dort siehst du wie der Eintrag `report` standardmäßig ausgegeben wird. Den musst du dann »nur« deinen Bedürfnissen anpassen.

Im vorliegenden Beispiel funktioniert z.B. Folgendes (sicher nicht produktiv einsetzbar, weil stark vereinfacht):
\begin{filecontents}{\jobname.bbx}
  \RequireBibliographyStyle{numeric}
  \DefineBibliographyStrings{ngerman}{version={Rev.}}
  \renewcommand*{\newunitpunct}{\addsemicolon\addspace}
  \DeclareFieldFormat[report]{title}{\mkbibquote{#1}}
  \DeclareBibliographyDriver{report}{%
    \printlist{institution}%
    \newunit
    \printfield{number}%
    \newunit
    \printfield{title}%
    \newunit
    \printfield{version}%
    \newunit
    \printfield{year}%
    \finentry%
  }
\end{filecontents}

\begin{filecontents}{\jobname.bib}
  @REPORT{BET/00/1234,
    AUTHOR      = {Hans Mustermann},
    INSTITUTION = {Test GmbH},
    TITLE       = {Titel zu Hans Mustermann},
    DATE        = {1973-11-04},
    NUMBER      = {BET/00/1234},
    VERSION     = {1}
  }
  @REPORT{BEE/09/1234,
    AUTHOR      = {Gaby Musterfrau},
    INSTITUTION = {Probe AG},
    TITLE       = {Titel zu Gaby Musterfrau},
    DATE        = {2010-08-05},
    NUMBER      = {BEE/09/1234},
    VERSION     = {1}
  }
\end{filecontents}

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[bibstyle=\jobname,backend=biber]{biblatex}
\addbibresource{\jobname}

\begin{document}
Hier steht nun \cite[Anhang 1.2]{BET/00/1234} ein sinnloser Satz \cite{BEE/09/1234}, der nichts anderes \cite{BEE/09/1234} bewirken soll als \cite[Kap.\,3.2]{BEE/09/1234} ein paar Zitate zu demonstrieren.
\printbibliography
\end{document}
Schöne Grüße
Johannes

IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

Beitrag von IrenaSekuta »

Hallo Johannes,

herzlichen Dank für den Code. Funktioniert alles einwandfrei, bis auf die Tatsache, dass das DATE Feld immer "interpretiert" wird. Aus der Doku (Table 7) meine ich verstanden zu haben, dass Feld DATE in day, month, year, endday, endmonth, endyear aufgesplittet wird. das mag sicherich sinnvoll sein, ich hingegen möchte das Feld DATE genau so ausgeben, wie es in der Bib-Tex-Datei vorhanden ist.

Habe herausgefunden, dass man auch eigene felder definieren kann. (http://tex.stackexchange.com/questions/ ... t-possible). Anbei ein Minimalbeispiel, was leider nicht das gewünschte Resultat liefert:
\begin{filecontents}{\jobname.bbx}
  \RequireBibliographyStyle{numeric}
  
  \DefineBibliographyStrings{ngerman}{version={Rev.}}
  \renewcommand*{\newunitpunct}{\addsemicolon\addspace}
  \DeclareFieldFormat[report]{title}{\mkbibquote{#1}}
  
  \DeclareBibliographyDriver{report}{%
    \printlist{institution}%
    \newunit
    \printfield{number}%
    \newunit
    \printfield{title}%
    \newunit
    \printfield{version}%
    \newunit
    \printfield{usera}
    \finentry%
  }
\end{filecontents}

\begin{filecontents}{\jobname.bib}
  @REPORT{BET/00/1234,
    AUTHOR      = {Hans Mustermann},
    INSTITUTION = {Test GmbH},
    TITLE       = {Titel zu Hans Mustermann},
    usera        = {1973-11-04},
    NUMBER      = {BET/00/1234},
    VERSION     = {1}
  }
  @REPORT{BEE/09/1234,
    AUTHOR      = {Gaby Musterfrau},
    INSTITUTION = {Probe AG},
    TITLE       = {Titel zu Gaby Musterfrau},
    usera        = {2010-08-05},
    NUMBER      = {BEE/09/1234},
    VERSION     = {1}
  }
\end{filecontents}

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[bibstyle=\jobname,backend=biber,date=long]{biblatex}
\addbibresource{\jobname}

\begin{document}
Hier  steht nun \cite[Anhang 1.2]{BET/00/1234} ein sinnloser Satz \cite{BEE/09/1234}, der nichts anderes \cite{BEE/09/1234} bewirken soll als \cite[Kap.\,3.2]{BEE/09/1234} ein paar Zitate zu demonstrieren.
\printbibliography
\end{document} 
Eventuell kann mir jemand behilflich sein zu begreifen, wie ich eigene Felder definiere und diese dann auslese.

Gruss,

Irena
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

csaf5941
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Sa 12. Mär 2011, 20:26

Beitrag von csaf5941 »

Da bist du fast schon am Ziel... :)
...
edit: Mit deiner Änderung am Minimalbeispiel funktioniert eh alles wie erwartet, oder?

IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

Beitrag von IrenaSekuta »


---EDIT---

Muss mich entschuldigen. Es funktioniert. Irgendwie wurde bei mir die *.bbx-Datei nicht neu erstellt. Ich ging davon aus, dass filecontents die Datei jedes mal neu erzeugt und falls sie vorhanden ist, sie überschreibt. aber offenkundig war das bei mir nicht der Fall.

Mit deiner Änderung am Minimalbeispiel funktioniert eh alles wie erwartet, oder?
Leider funktioniert es immer noch nicht.

Der beigefügte Screenshot ist das Ergebnis des Minimalbeispiels aus meinem letzten Beitrag. Wie zu erkennen ist, wird das Feld "usera" nicht ausgegeben.

Und ich war mir sicher, endlich mal etwas verstanden zu haben. :-)

gruss,

Irena
Dateianhänge
MWE.png
MWE.png (17.77 KiB) 2756 mal betrachtet
Zuletzt geändert von IrenaSekuta am Mo 20. Feb 2012, 13:04, insgesamt 2-mal geändert.
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

csaf5941
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Sa 12. Mär 2011, 20:26

Beitrag von csaf5941 »

Also wenn ich deinen Code genau so übernehme funktioniert bei mir alles einwandfrei. Vielleicht musst du die alte `bbx`-Datei löschen? Die wird nämlich nur neu erstellt wenn sie noch nicht vorhanden ist (außer du verwendest das `filecontents` package). Selbiges gilt natürlich für das `bib` file.

IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

Merci!!!

Beitrag von IrenaSekuta »

Hi csaf5941,

ja, es lag an den bbx/bib-Datei. Bin davon ausgegangen, dass filecontent diese IMMER überschreibt. Zumindest bei mir wird dies nicht gemacht.

Wieder einaml bestätigt sich, dass es sich immer lohnt auch in das Verzeichnis zu schauen. :-)

Besten Dank für die Hilfestellungen.

Gruss,

Irena
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

Benutzeravatar
domwass
TeX-Entwickler
TeX-Entwickler
Beiträge: 617
Registriert: Di 26. Aug 2008, 12:44
Kontaktdaten:

Re: Merci!!!

Beitrag von domwass »

IrenaSekuta hat geschrieben:Bin davon ausgegangen, dass filecontent diese IMMER überschreibt. Zumindest bei mir wird dies nicht gemacht.
Die von LaTeX zur Verfügung gestellte filecontents-Umgebung überschreibt NIE eine schon vorhandene Datei. Möchte man jedes Mal eine neue Datei erzeugen, kann man das Paket filecontents einbinden.

Gruß,
Dominik.-

Antworten