Closed AlfonsoMuskedunder closed 7 years ago
Ist an sich möglich. Habe ich für archaeologie
mit der Option seenote
eingebaut.
Wie soll die erste Fußnote eines Eintrages aussehen? Wird das Label (idR Autor Jahr) am Anfang aufgeführt? Hast du ein Beispiel?
@moewew die Option firstcitefull
schält zwar prima um, dass in der Fußnote ein Vollzitat kommt, aber leider bleibt es nicht bei der ersten Nennung mit Vollzitat, sondern jede weitere wird auch zitiert. Zudem wird das label
in der Bibliographie auch zum Vollzitat. Mir scheint, dass wir das Problem bei archaeologie
auch mal hatten, aber ich weiß nicht mehr, wie es gelöst wurde:
\newbool{cbx:firstcitefull}
\newbool{cbx:seen}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{postnote}{#1}
\DeclareBibliographyOption{firstcitefull}[true]{\csuse{bool#1}{cbx:firstcitefull}}%
\newcommand*{\cbx@fseen@names}{}
\newcommand*{\cbx@tseen@names}{}
\newrobustcmd*{\cbx@nameseen}[1]{%
\iftoggle{blx@footnote}
{\listcsxadd{cbx@fseen@names}{#1}}
{\listcsxadd{cbx@tseen@names}{#1}}}
\newrobustcmd*{\cbx@ifnameseen}[1]{%
\iftoggle{blx@footnote}%
{\xifinlistcs{#1}{cbx@fseen@names}}%
{\xifinlistcs{#1}{cbx@tseen@names}}}
\newbibmacro{cite:exhibcatalog}{%
\printtext[bibhyperref]{\bibstring{exhibcatalog}%
\setunit{\addspace}%
\printfield{venue}%
\setunit{\addspace}%
\printeventdate}%
}
\newbibmacro{cite:catalog}{%
\printtext[bibhyperref]{\bibstring{catalog}%
\setunit{\addspace}%
\printfield{label}%
\setunit{\addspace}%
\printdate}}
\newbibmacro*{cite:firstcitefull}{%
\ifciteseen%
{\usebibmacro{{cite:normal}}}%
{\usebibmacro{cite:various}%
\setunit{\addcolon\addspace}%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
\newbibmacro*{cite:reference}{%
\printfield[bibhyperref]{title}}
\newbibmacro*{cite:various}{%
\printtext[bibhypertarget]{%
\ifentrytype{catalog}%
{\usebibmacro{cite:catalog}}%
{\ifentrytype{exhibcatalog}%
{\usebibmacro{cite:exhibcatalog}}%
{\ifentrytype{reference}%
{\usebibmacro{cite:reference}}%
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}}}}}
\newbibmacro*{cite:normal}{%
\global\boolfalse{cbx:loccit}%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}%
{\usebibmacro{cite:ibid}}%
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}%
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}}%
{\usebibmacro{cite:various}}}%
{\usebibmacro{cite:shorthand}}}}
\renewbibmacro*{cite}{%
\ifbool{cbx:firstcitefull}
{\usebibmacro{cite:firstcitefull}}
{\usebibmacro{cite:normal}}%
\ifciteseen{\global\booltrue{cbx:seen}}%
{\global\boolfalse{cbx:seen}}%
\usebibmacro{savestuff}%
}
\renewbibmacro*{cite:postnote}{%
\ifbool{cbx:loccit}
{}
{\iffieldundef{urlyear}
{\usebibmacro{postnote}}
{\usebibmacro{postnote}%
\newunit%
\bibstring{urlseen}%
\setunit{\addspace}%
\usebibmacro{urldate}}}%
}
``
@LukasCBossert Die allererste Zitation wird ohne Kurzform bz. label, sondern genau gemäß der Langform in der Bibliographie angegeben.
Ich stehe mal wieder etwas auf dem Schlauch und bin mir nicht ganz sicher, was das Problem ist.
Möglicherweise sind nicht alle benötigten Tracker (zumindest citetracker=context
sollte drin sein) über die Paketoptionen bestellt/aktiviert worden; das ist aber wahrscheinlich zu einfach.
Wenn ich mir den Code so ansehe, sind da eine Sache etwas umständlich. Weiso baust Du eine Abfrage in cite:firstcitefull
und eine in cite
ein? Das wäre für mich sinnvoll, wenn cite:firstcitefull
noch in anderen Situationen aufgerufen wird. Ansonsten hätte ich einfach auf "\ifciteseen
&& \ifbool{cbx:firstcitefull}
" getestet: wenn ja gibt es ein Vollzitat, wenn nein, dann eben cite:normal
.
Bei \usebibmacro{{cite:normal}}
ist ein Klammerpaar zu viel, weiß nicht, ob das was macht, es sieht aber auf jeden Fall komisch aus.
Eigentlich musst du, wenn Du die richtigen Tracker aktiviert hast, sie nicht selber mit cbx:seen
faken. Mir ist nicht ganz klar, was hier damit erreicht wird.
Prima, es lag am fehlenden tracker - dann kam die Fehlermeldung mit dem Klammerpaar, was zuvor nie aufgetaucht ist. Ich konnte auch ziemlich viel Code-Ballast abwerfen: die cbx:seen
-Sache kommt von archaeologie
, bzw. ist auch ein copy/paste-Relikt von geschichtsfrkl
.
Aber es geht wohl auch prima ohne.
Nur die Abfrage bekomme ich nicht hin:
\renewbibmacro*{cite}{%
\ifbool{cbx:firstcitefull}
\and \ifciteseen
{\usebibmacro{cite:normal}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
Führt zu ! Misplaced \crcr. \endtabular ->\crcr \egroup \egroup $\egroup
\renewbibmacro*{cite}{%
\ifboolexpr{test {\ifbool{cbx:firstcitefull}} and test {\ifciteseen}}
{\usebibmacro{cite:normal}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
Damit wird immer ein Vollzitat ausgeben.
Bei firstcitefull=true
und
\renewbibmacro*{cite}{%
\ifboolexpr{test {\ifbool{cbx:firstcitefull}} and test {\ifciteseen}}
{\usebibmacro{cite:normal}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
sehen die Zitate in der Fußnote wie gewünscht aus (zuerst Vollzitat, dann Autor-Jahr-Kurzzitat), dafür werden für die Bibliographie auch alle label
verändert; die jetzt als Vollzitat ausgegeben werden.
Mhh, OK, wenn es so funktionierte wie es vorher war mit den getrennten Abfragen, dann lass es lieber so. Ich verstehe zwar nicht ganz, warum es so nicht geht aber OK. (Statt \ifboolexpr{test {\ifbool{cbx:firstcitefull}} and test {\ifciteseen}}
geht übrigens schöner \ifboolexpr{bool {cbx:firstcitefull} and test {\ifciteseen}}
)
Bei dem Lösungsansatz von mir zuvor hat es auch die Label als Vollzitat ausgegeben, da hat sich also nichts verändert.
Komischerweise lässt sich cbx:firstcitefull
nun nicht mehr ausschalten, d.h. als ob \ifciteseen
immer positiv beantwortet wird:
\renewbibmacro*{cite}{%
\ifboolexpr{bool {cbx:firstcitefull} and test {\ifciteseen}}
{\usebibmacro{cite:normal}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
Vom Code her sieht es in Ordnung aus, eigentlich sollte es so funktionieren. Kannst Du ein Beispiel zeigen und die bei dir verwendete Version des Stiles kennzeichnen?
Was war denn mit dem ursprünglichen Ansatz (vor meinen Vorschlägen). Da funktionierte doch alles oder nicht?
bei den ersten Lösungsansätzen war das Resultat in der Bibliographie gleich.
Ich stelle später ein MWE zusammen.
Bei genauerer Betrachtung, habe ich das Gefühl ein Depp zu sein. Die Abfrage \ifboolexpr{bool {cbx:firstcitefull} and test {\ifciteseen}}
ist wahr genau dann, wenn Du cbx:firstcitefull
auf true
gesetzt hast (also ein erstes Vollzitat möchtest) und \ifciteseen
true
- also das Zitat bereits gesehen - ist.
Du möchtest ein Vollzitat im Falle von cbx:firstcitefull
==true
& 'Erstzitat'. 'Erstzitat' heißt aber \ifciteseen
==false
(wäre es true
, hätten wir es ja vorher schon gesehen!). Also brauchen wir cbx:firstcitefull
==true
& \ifciteseen
==false
(und das heißt not test {\ifciteseen}
)
Was ist also mit
\renewbibmacro*{cite}{%
\ifboolexpr{bool {cbx:firstcitefull} and not test {\ifciteseen}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\usebibmacro{cite:normal}}}
oder mit De Morgan äquivalent
\renewbibmacro*{cite}{%
\ifboolexpr{test {\ifciteseen} or not bool {cbx:firstcitefull}}
{\usebibmacro{cite:normal}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
?
Fußnoten sind gut, aber Bibliographie wieder mit (doppeltem) Vollzitat.
Ist das schon mit der richtigen Logik? Wenn ja, dann wäre mir ein Beispiel viel lieber als ein Bild.
tut mir leid für das Bild - das war nur auf die schnelle: Jetzt auf dem Weg zur Sbahn kam die Lösung:
in der bbx:arthistory
:
\newbibmacro{labelwidthbib}{%
\begingroup%
\DeclareFieldFormat{bibhyperref}{##1}%
\csuse{blx@hook@cite}%
\csuse{blx@hook@citekey}%
\defcounter{maxnames}{\blx@maxcitenames}%
\usebibmacro{cite:normal}%<---- geändert.
\endgroup%
}
Damit funktioniert die Option ohne Murren.
Damit bekommst Du in der Bibliographie auf jeden Fall immer das kurze Zitat. Da das wohl so gewünscht ist, ist das eine vernünftige Lösung. (Man könnte natürlich auch lokal \boolfalse{cbx:firstcitefull}
setzen und doch noch cite
verwenden, aber so spart man sich die Abfrage.)
prima. Freut mich, dass die Lösung dann doch so trivial ist. Genau, in der Bibliographie soll immer zuerst das kurze Zitat kommen.
Es zeigt sich, dass dieser ganze Kram mit cbx:seen
gar nicht notwendig ist (ggf. muss ich das in archaeologie.cbx
auch ausmisten....) Danke dir!
Aus dem Leitfaden geht ja klar hervor, dass i.d.R. nach dem
authoryear-ibid
-Schema zitiert werden soll.Nun ist es aber offenbar gängige Praxis, dass abweichend von diesem Schema bei der allerersten (und nur dieser!) Nennung eines Dokuments eine volle Zitation vorgenommen wird, also etwa nach dem
verbose
-Stil inbiblatex
. Anscheinend verfahren nicht nur andere Doktoranden so, sondern sogar Helens Doktorvater.Der Leitfaden nennt diese Praxis nicht einmal, insofern wäre man vermutlich safe, wenn man sie nicht anwendete. Andererseits machen es trotzdem die meisten.
Wäre es programmiertechnisch ein großer Mehraufwand, diese Praxis zu ermöglichen? Ich fühl mich etwas schlecht, das erst jetzt zu erwähnen, aber Helen hat diesbzgl. heute morgen nochmal Rückmeldung erhalten von einem anderen Doktoranden. Wenn es nicht geht, wäre es sicherlich auch nicht schlimm!