biblatex: legislation verwenden

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: biblatex: legislation verwenden

von LarsR » Do 30. Sep 2010, 19:09

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.

von domwass » Do 30. Sep 2010, 14:16

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.-

von LarsR » Do 30. Sep 2010, 08:58

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

von domwass » Do 30. Sep 2010, 08:41

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.-

von LarsR » Mi 29. Sep 2010, 21:54

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. :)

von LarsR » Mi 29. Sep 2010, 19:35

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

von domwass » Di 28. Sep 2010, 17:04

Ich würde eher ein neues bibmacro definieren, dass für die Ausgabe des
Labels in der Bibliographie zuständig ist:
\documentclass[ngerman]{scrartcl} 
\listfiles 
\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
@legislation{ArbSchG, 
shorthand = {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)}, 
} 
@BOOK{book,
    author = {Buchautor, Hans-Wilhelm and Zweitautor, Zwentibold and Drittautorin, Dorothea},
title = {Irgendein Buch},
  address = {Buch am Wald},
  year = {2000}
}
\end{filecontents} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage{babel,csquotes} 

\usepackage[ 
  style=authoryear,
	maxnames=1
]{biblatex} 
\bibliography{\jobname} 
\DeclareBibliographyDriver{legislation}{% 
  \usebibmacro{bibindex}% 
  \usebibmacro{begentry}% 
  \usebibmacro{title}% 
  \setunit{\addsemicolon\space}% 
  \printfield{note}% 
  \usebibmacro{pageref}% 
  \usebibmacro{finentry}} 

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
    
\newbibmacro*{cite:bib}{% 
  \iffieldundef{shorthand} 
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} 
       {\usebibmacro{cite:label}}% folgende Zeile weggelassen
       {\printnames{labelname}%
        \setunit{\nameyeardelim}}% 
        \usebibmacro{cite:labelyear+extrayear}} 
    {\usebibmacro{cite:shorthand}}}
    
\renewbibmacro*{begentry}{% 
\begingroup% 
\defcounter{maxnames}{1}% 
\textbf{[\usebibmacro{cite:bib}]}\\% 
\endgroup% 
}% 

\begin{document} 
\cite{ArbSchG} 

\cite{book}

\printbibliography[maxnames=3]
\end{document}
Übrigens ist es inkonsistent, im Text mehrere Autoren anzugeben und im
Label in der Bibliographie nur einen, weil das Label ja gerade dazu da ist,
dass man von den Verweisen im Text schnell den Eintrag im
Literaturverzeichnis findet. Ich habe deshalb im Text und in den Labels
maxnames=1 verwendet, in der Bibliographie ansonsten aber
maxnames=3.

Autorennamen mit Kapitälchen bekommt man übrigens durch eine
Umdefinierung von \mkbibnamelast.

Gruß,
Dominik.-
______________________________________________________________

Edit: »label = {…}« durch »shorthand = {…}« ersetzt, da shorthand für
die Benutzerebene gedacht ist, label dagegen automatisch generiert wird.]
______________________________________________________________

von LarsR » Di 28. Sep 2010, 16:18

Auch hier die Frage, ob vielleicht jemand eine Idee hat, wie ich das addcolon besser unterbringe.

von LarsR » Do 23. Sep 2010, 20:55

Dann schiebe ich mal das Minimalbeispiel hinterher, hatte ein re bei renewbibmacro vergessen:
\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)}, 
} 
\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\space}} 
       {\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} 

\printbibliography 
\end{document}

von LarsR » Do 23. Sep 2010, 18:59

Hallo

ich habe mittlerweile herausgefunden, dass der Doppelpunkt aus der cbx-Datei kommt, und zwar genau aus diesem Teil:
\newbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
       \setunit{\addcolon\space}}
       {\textsc{\printnames{labelname}}%		%Kapitälchen
        \setunit{\nameyeardelim}}%
        \usebibmacro{cite:labelyear+extrayear}}
    {\usebibmacro{cite:shorthand}}}
Das hatte ich mal geändert, um bei DIN-Normen die Form DIN1000:2010-05-01 hinzubekommen, wobei DIN1000 label ist und 2010-05-01 date.

Wie kann ich das am besten anders lösen?

edit: So ganz habe ich noch nicht verstanden, wo das Problem liegt, vermutlich bei den aufgerufenen Macros? Ich habe es auch noch nicht geschafft, das in ein kompilierbares Minimalbeispiel zu packen ... Wenn ich addcolon durch addcomma o.ä, ersetze, wird aus dem Doppelpunkt jedenfalls ein Komma, daher gehe ich davon aus, dass es an diesem Teil liegt.

Nach oben