biblatex: legislation verwenden
biblatex: legislation verwenden
Hallo,
ich möchte in meiner Arbeit gerne auch Gesetze und Verordnungen zitieren. Da ich den Typ misc schon für Normen verwende und die Stildateien entsprechend angepasst habe, dachte ich daran, den Typ legislation zu verwenden. Laut Dokumentation gibt es diesen Typ ja, obwohl er derzeit nicht von den Stildateien unterstützt wird.
Da das mir vorschwebende Ergebnis beinahe dem entspricht, was ich mir für misc gebastelt habe, wollte ich in der .bbx den Teil \DeclareBibliographyDriver{misc}{...} kopieren, "misc" durch "legislation" ersetzen und entsprechend meinen Vorstellungen anpassen.
Leider führt das beim Kompilieren zu mehr als 100 Fehlern. Muss ich noch irgendwo anders etwas definieren oder wo liegt mein Fehler? Kann ich auch komplett eigene Typen (@gesetz) erschaffen?
Im Endeffekt bräuchte ich für die Gesetze nur den Kurztitel wie StVG (label/sortkey), den vollen Titel Straßenverkehrsgesetz (title) und einen Zusatz wie "vom 5. Mai 2003 (BGBl. I S. 310f), letzte Änderung vom 31. Juli 2009 (BGBl. I S. 2507f.)" (note). Da es nur einige wenige Gesetze sind, wollte ich den letzten Teil einfach per /printfield{note} einbinden.
Vielleicht kann mir ja jemand helfen, wo mein (Denk-)Fehler liegt. Vielen Dank!
Grüße Lars
ich möchte in meiner Arbeit gerne auch Gesetze und Verordnungen zitieren. Da ich den Typ misc schon für Normen verwende und die Stildateien entsprechend angepasst habe, dachte ich daran, den Typ legislation zu verwenden. Laut Dokumentation gibt es diesen Typ ja, obwohl er derzeit nicht von den Stildateien unterstützt wird.
Da das mir vorschwebende Ergebnis beinahe dem entspricht, was ich mir für misc gebastelt habe, wollte ich in der .bbx den Teil \DeclareBibliographyDriver{misc}{...} kopieren, "misc" durch "legislation" ersetzen und entsprechend meinen Vorstellungen anpassen.
Leider führt das beim Kompilieren zu mehr als 100 Fehlern. Muss ich noch irgendwo anders etwas definieren oder wo liegt mein Fehler? Kann ich auch komplett eigene Typen (@gesetz) erschaffen?
Im Endeffekt bräuchte ich für die Gesetze nur den Kurztitel wie StVG (label/sortkey), den vollen Titel Straßenverkehrsgesetz (title) und einen Zusatz wie "vom 5. Mai 2003 (BGBl. I S. 310f), letzte Änderung vom 31. Juli 2009 (BGBl. I S. 2507f.)" (note). Da es nur einige wenige Gesetze sind, wollte ich den letzten Teil einfach per /printfield{note} einbinden.
Vielleicht kann mir ja jemand helfen, wo mein (Denk-)Fehler liegt. Vielen Dank!
Grüße Lars
Hallo,
ich habe es soweit hin bekommen, habe aber folgendes Problem:
liefert mit
als Ergebnis
Leider weiß ich nicht, wie ich einen eigenen bbx-Stil hier als funktionsfähiges Minimalbeispiel mit einbinde. Vielleicht kann man ja so schon etwas erkennen. Ich habe in der Stildatei mittlerweile ziemlich gebastelt, aber eigentlich dürfte keine der Änderungen ja Auswirkungen auf das Problem haben, da ich die Einträge direkt und ohne ein Makro aufrufe.
ich habe es soweit hin bekommen, habe aber folgendes Problem:
\DeclareBibliographyDriver{legislation}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \printfield{title}{\addsemicolon\space}% \printfield{note}% \usebibmacro{pageref}% \usebibmacro{finentry}}
@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)}, }
Und ich habe keine Ahnung, woher der Doppelpunkt am Anfang kommt.:Gesetz über die Durchführung von Maßnahmen des Arbeitsschutzes zur Verbesserung der Sicherheit und des Gesundheitsschutzes der Beschäftigten bei der Arbeit; vom 7. August 1996 (BGBl. I S. 1246).
Leider weiß ich nicht, wie ich einen eigenen bbx-Stil hier als funktionsfähiges Minimalbeispiel mit einbinde. Vielleicht kann man ja so schon etwas erkennen. Ich habe in der Stildatei mittlerweile ziemlich gebastelt, aber eigentlich dürfte keine der Änderungen ja Auswirkungen auf das Problem haben, da ich die Einträge direkt und ohne ein Makro aufrufe.
Besser so (ungetestet!):LarsR hat geschrieben:ich habe es soweit hin bekommen, habe aber folgendes Problem:\DeclareBibliographyDriver{legislation}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \printfield{title}{\addsemicolon\space}% \printfield{note}% \usebibmacro{pageref}% \usebibmacro{finentry}}
\DeclareBibliographyDriver{legislation}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{title}% \setunit{\addsemicolon\space}% \usebibmacro{note}% \usebibmacro{pageref}% \usebibmacro{finentry}}
sondern als Argument von \setunit, denn das achtet darauf, ob auch
wirklich etwas ausgegeben wurde, und setzt die Zeichensetzung nur dann.
Nähere Erläuterung dazu in meinem DTK-Artikel (siehe Signatur).
Mit der filecontents-Umgebung. Siehe http://biblatex.dominik-wassenhoven.de/ ... ml?de&mini.Leider weiß ich nicht, wie ich einen eigenen bbx-Stil hier als funktionsfähiges Minimalbeispiel mit einbinde.
Gruß,
Dominik.-
Ändert leider nichts, der Doppelpunkt bleibt. Ich hatte extra printfield verwendet, weil das m. E. den direktesten Zugriff auf die Einträge darstellt, ich hatte vermutet, dass der Doppelpunkt aus einem veränderten bibmacro kommt, ich find's aber beim besten Willen nicht.domwass hat geschrieben: Wichtig ist vor allem, Zeichensetzung nicht einfach so ausgeben zu lassen,
sondern als Argument von \setunit, denn das achtet darauf, ob auch
wirklich etwas ausgegeben wurde, und setzt die Zeichensetzung nur dann.
Nähere Erläuterung dazu in meinem DTK-Artikel (siehe Signatur).

Muss ich dann die gesamte bbx eingeben? Das sind ja einige Zeilen Code.Mit der filecontents-Umgebung. Siehe http://biblatex.dominik-wassenhoven.de/ ... ml?de&miniLeider weiß ich nicht, wie ich einen eigenen bbx-Stil hier als funktionsfähiges Minimalbeispiel mit einbinde.
Ich habe gerade mal eine unveränderte authoryear.bbx genommen, in test.bbx umbenannt und dort nur den o.g. BibliographyDriver eingefügt, das bringt leider nicht, der Doppelpunkt bleibt erhalten.
Was ich auch nicht verstehe: Ich habe mal die standard.bbx und die biblatex.def sowie die Stildatei nach \addcolon durchsucht, das tritt aber eigentlich immer in Verbindung mit \space auf, ich habe aber gerade kein Leerzeichen zwischen dem führenden Doppelpunkt und dem Titel. Wenn ich customa anstatt legislation bzw. usera anstatt title verwende, bleibt das Problem auch bestehen. Ich bin echt überfragt.
Was ich auch nicht verstehe: Ich habe mal die standard.bbx und die biblatex.def sowie die Stildatei nach \addcolon durchsucht, das tritt aber eigentlich immer in Verbindung mit \space auf, ich habe aber gerade kein Leerzeichen zwischen dem führenden Doppelpunkt und dem Titel. Wenn ich customa anstatt legislation bzw. usera anstatt title verwende, bleibt das Problem auch bestehen. Ich bin echt überfragt.
Also folgendes Minimalbeispiel funktioniert jedenfalls:
Es muss also an anderen Einstellungen liegen. Kopiere am besten deine
Anpassungen in die .tex-Datei selbst und komprimiere so lange, bis der
Fehler nicht mehr auftritt. Dann machst du den letzten Schritt rückgängig
und hast die Fehlerquelle vermutlich gefunden.
Gruß,
Dominik.-
\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}} \begin{document} \cite{ArbSchG} \printbibliography \end{document}
Anpassungen in die .tex-Datei selbst und komprimiere so lange, bis der
Fehler nicht mehr auftritt. Dann machst du den letzten Schritt rückgängig
und hast die Fehlerquelle vermutlich gefunden.
Gruß,
Dominik.-
Hallo
ich habe mittlerweile herausgefunden, dass der Doppelpunkt aus der cbx-Datei kommt, und zwar genau aus diesem Teil:
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.
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}}}
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.
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}
Ich würde eher ein neues bibmacro definieren, dass für die Ausgabe des
Labels in der Bibliographie zuständig ist:
Ü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.]
______________________________________________________________
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}
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.]
______________________________________________________________