BibLaTex: Hrsg. falsch und firstfull

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: Hrsg. falsch und firstfull

von Marko » Di 16. Jun 2009, 21:14

Hallo zusammen,

mein Problem konnte ich beheben. Bei meinem letzten Minimalbeispiel muss lediglich der DeclareCiteCommand{\cite}-Block durch den neuen Block unten ersetzt werden, außerdem kommt ein \newbool dazu. Im Precode-Teil prüfe ich, ob citeseen true oder false ist und speichere mir das Ergebnis in "cbx:citeseen" ab.

Das Ergebnis ist jetzt also das gewünschte :D

Wenn jemand eine bessere Lösung oder Fehler findet oder irgendwelche Gefahren bzw. Schönheitsfehler sieht, einfach melden!

Viele Grüße und nochmals danke,
Marko
\newbool{cbx:citeseen}

\DeclareCiteCommand{\cite}
   {\ifciteseen{\booltrue{cbx:citeseen}}{\boolfalse{cbx:citeseen}}
   		\usebibmacro{prenote}\ifbool{cbx:citeseen}{\bibleftbracket}{}}%precode
   {\ifbool{cbx:citeseen}
   		{\usebibmacro{citeindex}%
		    \printtext[bibhyperref]{%
		      \printfield{labelalpha}%
		      \printfield{extraalpha}}}
   		{\usedriver
     		{\DeclareNameAlias{sortname}{default}}
     		{\thefield{entrytype}}}}%loopcode
   {\multicitedelim}%sepcode
   {\usebibmacro{postnote}\ifbool{cbx:citeseen}{\bibrightbracket}{}}%postcode

von Marko » Di 16. Jun 2009, 07:00

domwass hat geschrieben:Falls du keine Fehlermeldung bekommen hast, spricht viel dafür, dass das bibmacro bei alphabetic anders heißt und dein neues bibmacro damit gar nicht verwendet wird. Sieh in alphabetic.cbx nach, wie die Zitierung dort aufgebaut ist.
Danke für den Tipp, das hat mir weitergeholfen! Bei "alphabetic" ist \cite mit \DeclareCiteCommand definiert und nicht als Bibmacro.

Edit: Heute morgen hatte ich noch Probleme mit Zeilenumbruch und zusätzlichen ";". Diese konnte ich beheben, da hatte ich Fehler bei der Klammersetzung.


Was jetzt noch unschön ist, ist eine zusätzliche schließende Klammer "]" am Ende von \fullcite.

Das Ergbenis des ersten Cite ist:

Manuela Musterfrau. "Ein Beitrag". In: Irgendein Buch. Hrsg. von Manfred Mustermann. 2. Aufl. 2008]

Beim zweiten stimmt alles:
[Mus08]
\documentclass{scrreprt}

\usepackage{filecontents}
\begin{filecontents}{literatur.bib}
@incollection{B1,
  author = {Manuela Musterfrau},
  title = {Ein Beitrag},
  booktitle = {Irgendein Buch},
  editor = {Manfred Mustermann},
  edition = {2},
  year = {2008}
}
\end{filecontents}

\usepackage[ngerman]{babel}
\usepackage[babel]{csquotes} 

\usepackage[style=alphabetic]{biblatex}
\bibliography{literatur}

\DefineBibliographyStrings{ngerman}{%
bytypeeditor = {hrsg.}
} 

\ExecuteBibliographyOptions{
  citetracker=true}

\DeclareCiteCommand{\cite}
   {\usebibmacro{prenote}\ifciteseen{\bibleftbracket}{}}%precode
   {\ifciteseen
   		{\usebibmacro{citeindex}%
		    \printtext[bibhyperref]{%
		      \printfield{labelalpha}%
		      \printfield{extraalpha}}}
   		{\usedriver
     		{\DeclareNameAlias{sortname}{default}}
     		{\thefield{entrytype}}}}%loopcode
   {\multicitedelim}%sepcode
   {\usebibmacro{postnote}\ifciteseen{\bibrightbracket}{}}%postcode

\begin{document}
Erster Verweis auf B1\\
\cite{B1}

Zweiter Verweis auf B1\\
\cite{B1}
\end{document}
Meine Vermutung ist, dass das "\ifciteseen" nach dem "prenote" auf true gesetzt wird und bei dem "postnote" dann die rechte Klammer ausgibt.

Stimmt meine Vermutung oder liegt der Fehler woanders? Gibt es eine Lösung für das Problem?

Viele Grüße,
Marko

Re: BibLaTex: Hrsg. falsch und firstfull

von Marko » Di 16. Jun 2009, 06:48

lockstep hat geschrieben: Ungetesteter Lösungsvorschlag: Da du das babel-Paket mit der Option ngerman einbindest, solltest du bei \DefineBibliographyStrings ebenfalls mit ngerman statt mit german arbeiten (biblatex 0.8d scheint diesbezüglich heikler geworden zu sein).
Danke, das war es!

Komisch ist aber trotzdem, dass ich bisher den Herausgeber von "german" angepasst habe und die Ausgabe bei "ngerman" mit verändert (und auch noch falsch) wurde. Ich werde dafür wie Dominik vorgeschlagen hat einen Bug-Report auf der Sourceforge-Seite von biblatex einstellen.

Re: BibLaTex: Hrsg. falsch und firstfull

von lockstep » Mo 15. Jun 2009, 21:42

Marko hat geschrieben: Wenn ich jetzt mittels
\DefineBibliographyStrings{german}{%
bytypeeditor = {hrsg.}
}
den Herausgeber anpassen möchte, bekomme ich

Manuela Musterfrau. "Irgendein Buch\. In: R von Manfred Mustermann. 2008

Von dem "Hrsg." ist also nur noch "R" geblieben. Das Problem habe ich erst seit der Umstellung auf die neueste BibLaTex-Version (zumindest ist es mir erst danach aufgefallen).
Ungetesteter Lösungsvorschlag: Da du das babel-Paket mit der Option ngerman einbindest, solltest du bei \DefineBibliographyStrings ebenfalls mit ngerman statt mit german arbeiten (biblatex 0.8d scheint diesbezüglich heikler geworden zu sein).

Re: BibLaTex: Hrsg. falsch und firstfull

von domwass » Mo 15. Jun 2009, 10:08

Marko hat geschrieben:Ich verwende den Style "alphabetic" und bekomme ohne weitere Anpassung folgende Ausgabe bei einem fullcite:

Manuela Musterfrau. "Irgendein Buch\. In: Hg. von Manfred Mustermann. 2008
Da fehlt ein Buchtitel, deshalb kommt der Herausgeber direkt nach dem 'in'. Mit folgendem Minimalbeispiel geht's:
\documentclass{scrreprt} 

\usepackage{filecontents} 
\begin{filecontents}{literatur.bib} 
@incollection{B1, 
  author = {Manuela Musterfrau}, 
  title = {Ein Beitrag},
  booktitle = {Irgendein Buch}, 
  editor = {Manfred Mustermann}, 
  year = {2008} 
} 
\end{filecontents} 

\usepackage[ngerman]{babel} 
\usepackage[babel]{csquotes} 

\usepackage[style=alphabetic]{biblatex} 
\bibliography{literatur} 

\begin{document} 

\fullcite{B1} 
\printbibliography 

\end{document}
Wenn ich jetzt mittels
\DefineBibliographyStrings{german}{%
bytypeeditor = {hrsg.}
}
den Herausgeber anpassen möchte, bekomme ich

Manuela Musterfrau. "Irgendein Buch\. In: R von Manfred Mustermann. 2008

Von dem "Hrsg." ist also nur noch "R" geblieben. Das Problem habe ich erst seit der Umstellung auf die neueste BibLaTex-Version (zumindest ist es mir erst danach aufgefallen).
Erstell am besten einen Bug-Report auf der Sourceforge-Seite von biblatex.
Außerdem hätte ich gerne die "firstfull"-Funktionalität von "authortitle-dw" in meinem Style.
Dazu ein paar Bemerkungen:
  1. Hast du auch einen neuen bool-Schalter 'cbx:firstfull' angelegt?
  2. cbx:herename solltest du herausnehmen (wenn du es nicht anderweitig benötigst).
  3. Du musst natürlich \renewbibmacro verwenden, da das bibmacro 'cite' schon definiert ist - bzw.: Falls du keine Fehlermeldung bekommen hast, spricht viel dafür, dass das bibmacro bei alphabetic anders heißt und dein neues bibmacro damit gar nicht verwendet wird. Sieh in alphabetic.cbx nach, wie die Zitierung dort aufgebaut ist.
Erstell am besten ein vollständiges Minimalbeispiel mit allen deinen Änderungen, dann kann man besser nachvollziehen, woran es liegen könnte.

Gruß,
Dominik.-

BibLaTex: Hrsg. falsch und firstfull

von Marko » So 14. Jun 2009, 14:30

Hallo,

ich benutze MikTeX 2.7 und BibLaTex 0.8d und habe ein Problem, wenn ich den Herausgeber anpassen möchte.

Ich verwende den Style "alphabetic" und bekomme ohne weitere Anpassung folgende Ausgabe bei einem fullcite:

Manuela Musterfrau. "Irgendein Buch\. In: Hg. von Manfred Mustermann. 2008

Wenn ich jetzt mittels
\DefineBibliographyStrings{german}{%
bytypeeditor = {hrsg.}
}
den Herausgeber anpassen möchte, bekomme ich

Manuela Musterfrau. "Irgendein Buch\. In: R von Manfred Mustermann. 2008

Von dem "Hrsg." ist also nur noch "R" geblieben. Das Problem habe ich erst seit der Umstellung auf die neueste BibLaTex-Version (zumindest ist es mir erst danach aufgefallen).

Hier mein Code:
\documentclass{scrreprt}

\usepackage{filecontents}
\begin{filecontents}{literatur.bib}
@incollection{B1,
  author = {Manuela Musterfrau},
  title = {Irgendein Buch},
  editor = {Manfred Mustermann},
  year = {2008}
}
\end{filecontents} 

\usepackage[ngerman]{babel}
\usepackage[babel]{csquotes}

\usepackage[style=alphabetic]{biblatex}
\bibliography{literatur}

%Herausgeber anpassen
\DefineBibliographyStrings{german}{%
bytypeeditor = {hrsg.}
}

\begin{document}

Hier kommt die Referenz: 

\fullcite{B1}

\printbibliography

\end{document}

Außerdem hätte ich gerne die "firstfull"-Funktionalität von "authortitle-dw" in meinem Style.

Ich habe dazu die cbx-Datei angepasst und verschiedene Sachen ausprobiert, z.B. mit
\DeclareBibliographyOption{firstfull}[true]{%
  \csuse{bool#1}{cbx:firstfull}}

\newbibmacro*{cite}{%
  \global\boolfalse{cbx:herename}%
  \global\boolfalse{cbx:loccit}%
  \global\let\cbx@tempa\empty
  \ifbool{cbx:firstfull}
    {\ifciteseen
      {\usebibmacro{cite:normal}}
      {\usebibmacro{cite:firstfull}}}
    {\usebibmacro{cite:normal}}}
und den darauf folgenden Zeilen. Geändert hat das an der Ausgabe nichts, ich hatte das Gefühl, dass BibLaTeX in die Zeilen von "\newbibmacro*{cite}" gar nicht reingeht. "firstfull=true" war gesetzt, ich habe es auch ohne den Parameter versucht und die Variable komplett rausgenommen.

Gibt es hier vielleicht schon eine einfache Lösung? Gesucht habe ich danach auch schon, aber ohne Erfolg.

Vielen Dank schonmal für die Hilfe und noch einen schönen Sonntag,
Marko

Nach oben