Seite 1 von 1

biblatex: eigener Literaturstil

Verfasst: Do 16. Feb 2012, 09:47
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

Verfasst: Sa 18. Feb 2012, 21:17
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

Verfasst: Mo 20. Feb 2012, 10:36
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

Verfasst: Mo 20. Feb 2012, 11:47
von csaf5941
Da bist du fast schon am Ziel... :)
...
edit: Mit deiner Änderung am Minimalbeispiel funktioniert eh alles wie erwartet, oder?

Verfasst: Mo 20. Feb 2012, 12:46
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

Verfasst: Mo 20. Feb 2012, 12:54
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.

Merci!!!

Verfasst: Mo 20. Feb 2012, 13:03
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

Re: Merci!!!

Verfasst: Mo 20. Feb 2012, 13:38
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.-