biblatex: legislation verwenden

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


LarsR
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mi 18. Aug 2010, 21:47

Beitrag von LarsR »

Danke für die Hinweise, ich habe im Moment keine Zeit, das umzusetzen und auszuprobieren, werde mich in den kommenden Tagen damit beschäftigen.

LarsR
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mi 18. Aug 2010, 21:47

Beitrag von LarsR »

Hallo nochmal,

es lässt mir keine Ruhe, allerdings scheine ich da langsam an meine Grenzen zu stoßen. Das habe ich mir alles so zusammen gebastelt, da ich den Doppelpunkt bei Normen zum Anhängung des Datums der Fassung breuche (siehe Minimalbeispiel). In meiner richtigen Datei habe ich das Datumsformat noch entsprechend umgestellt, so dass es DIN 1000:2010-09-01 lautet, aber das ist hier ja nachrangig, daher habe ich es im Minimalbeispiel weg gelassen.
\documentclass[ngerman]{scrartcl} 
\listfiles 
\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
@legislation{ArbSchG, 
label = {ArbSchG}, 
sortkey = {ArbSchG}, 
title = {Gesetz über die Durchführung von Maßnahmen des Arbeitsschutzes zur Verbesserung der Sicherheit und des Gesundheitsschutzes der Beschäftigten bei der Arbeit}, 
note = {vom 7. August 1996 (BGBl. I S. 1246)}, 
} 
@misc{DIN, 
label = {DIN 1000}, 
sortkey = {DIN 1000}, 
title = {DIN-Norm}, 
date = {2010-09-01}} 

@book{Test, 
Author = {Theo Test}, 
title = {Testbuch}, 
date = {2010-09-01},
publisher = {Testverlag},
location = {Berlin},
edition = {11}
} 


\end{filecontents} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage{babel,csquotes} 

\usepackage[ 
  style=authoryear 
]{biblatex} 
\bibliography{\jobname} 
\DeclareBibliographyDriver{legislation}{% 
  \usebibmacro{bibindex}% 
  \usebibmacro{begentry}% 
  \usebibmacro{title}% 
  \setunit{\addsemicolon\space}% 
  \printfield{note}% 
  \usebibmacro{pageref}% 
  \usebibmacro{finentry}} 
    
\renewbibmacro*{cite}{% 
  \iffieldundef{shorthand} 
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} 
       {\usebibmacro{cite:label}% 
       \setunit{\addcolon}} 
       {\textsc{\printnames{labelname}}%      %Kapitälchen 
        \setunit{\nameyeardelim}}% 
        \usebibmacro{cite:labelyear+extrayear}} 
    {\usebibmacro{cite:shorthand}}}      
      
    
\renewbibmacro*{begentry}{% 
\begingroup% 
\defcounter{maxnames}{1}% 
\textbf{[\usebibmacro{cite}]}\\% 
\endgroup% 
}% 

\begin{document} 
\cite{ArbSchG} 

\cite{DIN}

\cite{test}
\printbibliography 
\end{document}

Zur Not könnte ich auf den Doppelpunkt bei @misc auch verzichten, aber dann habe ich bei dem, was ich mir da zusammen gebaut habe, entweder kein Leerzeichen an der richtigen Stelle (DIN 10002010) oder eines an der falschen Stelle [ArbSchG ] (s. zweites Minimalbeispiel).
\documentclass[ngerman]{scrartcl} 
\listfiles 
\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
@legislation{ArbSchG, 
label = {ArbSchG}, 
sortkey = {ArbSchG}, 
title = {Gesetz über die Durchführung von Maßnahmen des Arbeitsschutzes zur Verbesserung der Sicherheit und des Gesundheitsschutzes der Beschäftigten bei der Arbeit}, 
note = {vom 7. August 1996 (BGBl. I S. 1246)}, 
} 
@misc{DIN, 
label = {DIN 1000}, 
sortkey = {DIN 1000}, 
title = {DIN-Norm}, 
date = {2010-09-01}} 

@book{Test, 
Author = {Theo Test}, 
title = {Testbuch}, 
date = {2010-09-01},
publisher = {Testverlag},
location = {Berlin},
edition = {11}
} 

\end{filecontents} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage{babel,csquotes} 

\usepackage[ 
  style=authoryear 
]{biblatex} 
\bibliography{\jobname} 
\DeclareBibliographyDriver{legislation}{% 
  \usebibmacro{bibindex}% 
  \usebibmacro{begentry}% 
  \usebibmacro{title}% 
  \setunit{\addsemicolon\space}% 
  \printfield{note}% 
  \usebibmacro{pageref}% 
  \usebibmacro{finentry}} 
    
\renewbibmacro*{cite}{% 
  \iffieldundef{shorthand} 
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} 
       {\usebibmacro{cite:label}}%
       {\textsc{\printnames{labelname}}%      %Kapitälchen 
        \setunit{\nameyeardelim}}% 
        %\setunit*{\addspace}
       \usebibmacro{cite:labelyear+extrayear}}
   {\usebibmacro{cite:shorthand}}}      
    
\renewbibmacro*{begentry}{% 
\begingroup% 
\defcounter{maxnames}{1}% 
\textbf{[\usebibmacro{cite}]}\\% 
\endgroup% 
}% 

\begin{document} 
\cite{ArbSchG} 

\cite{DIN}

\cite{test}
\printbibliography 
\end{document}
Kapitälchen möchte ich nur im Verweis in eckigen Klammern, daher habe ich das so gelöst. Mit der anderen Lösungen werden die Namen im Literaturverzeichnis alle in Kapitälchen gesetzt?

Bezüglich der Autoren: Ich soll im Text den ersten Autorennamen und das Jahr in eckigen Klammern verwenden, im Literaturverzeichnis dann diesen Klammer-Ausdruck wiederholen (eben um es schnell finden zu können) und in der Quellenangabe darunter dann alle Autoren angeben. Das klappt im Originaldokument auch, kann sein, dass ich das hier ins Minimalbeispiel nicht eingebaut habe.

Wie gesagt, ich fürchte, dass ich die Stile mittlerweile ziemlich verbastelt habe und ich bei den Macros nicht durchblicke. Eigentlich klappte nach einigem Ausprobieren immer alles, was ich mir wünschte, aber da meine Programmierkenntnisse nicht ausreichend sind, rächt sich einiges später wieder.

Irgendwie müsste ich das aber so hin bekommen, zur Not wie gesagt auch in der Form [DIN 1000 2010], aber dann darf bei [ArbSchG ] das Leerzeichen nicht auftauchen.

Wenn ich mehrere cite-Stile verwende (z. B. einen eigenen für @misc) funktioniert die Wiederholung der Verweise im Literaturverzeichnis nicht mehr so einfach, oder?

Wäre nett, wenn sich das noch einmal jemand anschauen könnte, auch wenn ich vielleicht langsam nerve. :)

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

Beitrag von domwass »

Ich hab jetzt keine Zeit, mir alles anzugucken, aber ich hatte dir doch gesagt,
dass es sinnvoller ist, für die Angabe in eckigen Klammern im
Literaturverzeichnis ein eigenes bibmacro zu verwenden (basierend auf cite).
Dort kann man dann Anpassungen machen wie die Verwendung von
Kapitälchen, die du ja sonst nicht haben willst. Außerdem hast du dann nicht
das Problem, dass du an der einen Stelle einen Doppelpunkt brauchst, den du
an der anderen aber nicht haben willst.

Gruß,
Dominik.-

LarsR
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mi 18. Aug 2010, 21:47

Beitrag von LarsR »

Hallo,

vielleicht habe ich ja einen Denkfehler, aber wenn ich im Text cite verwende und im Literaturverzeichnis cite:bib und beide das gleiche Ergebnis liefern sollen, dann baue ich beide auch gleich auf und habe in beiden den gleichen Fehler? Ich weiß ja eben nicht, wie ich das anders machen kann.

Danke und Gruß Lars

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

Beitrag von domwass »

LarsR hat geschrieben:Das habe ich mir alles so zusammen gebastelt, da ich den Doppelpunkt bei Normen zum Anhängung des Datums der Fassung breuche (siehe Minimalbeispiel).
Das lässt sich wohl am besten mit einer EntryOption lösen, die du dann bei
DIN-Normen setzt.
\newbool{din}
\DeclareEntryOption{din}[true]{%
  \csuse{bool#1}{din}}

\renewbibmacro*{cite}{% 
  \iffieldundef{shorthand} 
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
      {\usebibmacro{cite:label}%
          \ifbool{din}
            {\setunit{\addcolon}}
            {\setunit{\addspace}}}
       {\printnames{labelname}%
        \setunit{\nameyeardelim}}%
      \usebibmacro{cite:labelyear+extrayear}} 
    {\usebibmacro{cite:shorthand}}}
Die Verwendung erfolgt dann in der bib-Datei:
@misc{DIN, 
label = {DIN 1000}, 
sortkey = {DIN 1000}, 
title = {DIN-Norm}, 
date = {2010-09-01},
options = {din}}
Kapitälchen möchte ich nur im Verweis in eckigen Klammern, daher habe ich das so gelöst. Mit der anderen Lösungen werden die Namen im Literaturverzeichnis alle in Kapitälchen gesetzt?
Man kann zwischen Text und Literaturverzeichnis unterscheiden (indem
man im Argument von \AtBeginBibliography umdefiniert), aber dann
werden auch die Namen in cite-Befehlen in der Bibliographie genauso
behandelt wie der Rest der Bibliographie. Die einzige Möglichkeit, die ich
nach wie vor sehe, ist, ein bibmacro zu schreiben, dass du dann bei der
Umdefinierung von begentry benutzt. Aber ich wiederhole mich. Was ist
denn auch so schlimm daran? Du kannst ja exakt dasselbe Makro
benutzen wie cite, nur den Namen in Kapitälchen ausgeben lassen.

Gruß,
Dominik.-

LarsR
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mi 18. Aug 2010, 21:47

Beitrag von LarsR »

Habe deine Tipps jetzt umgesetzt und alles ist wieder so, wie ich es benötige. Vielen Dank, auch für die Geduld mit mir, auf die EntryOption wäre ich wohl selbst nie gekommen.

Antworten