LukasCBossert / biblatex-arthistory-bonn

Zitier- und Bibliographieregeln gemäß der Kunstgeschichte Universität Bonn
3 stars 1 forks source link

Potential major issue: Optionale weitere Anpassung des citation styles? #13

Closed AlfonsoMuskedunder closed 7 years ago

AlfonsoMuskedunder commented 7 years ago

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 in biblatex. 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!

LukasCBossert commented 7 years ago

Ist an sich möglich. Habe ich für archaeologie mit der Option seenote eingebaut.

LukasCBossert commented 7 years ago

Wie soll die erste Fußnote eines Eintrages aussehen? Wird das Label (idR Autor Jahr) am Anfang aufgeführt? Hast du ein Beispiel?

LukasCBossert commented 7 years ago

@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}}}%
}
``
AlfonsoMuskedunder commented 7 years ago

@LukasCBossert Die allererste Zitation wird ohne Kurzform bz. label, sondern genau gemäß der Langform in der Bibliographie angegeben.

moewew commented 7 years ago

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.

LukasCBossert commented 7 years ago

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

LukasCBossert commented 7 years ago
\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.

LukasCBossert commented 7 years ago

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.

moewew commented 7 years ago

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}})

LukasCBossert commented 7 years ago

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}}}}
moewew commented 7 years ago

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?

LukasCBossert commented 7 years ago

bei den ersten Lösungsansätzen war das Resultat in der Bibliographie gleich.

Ich stelle später ein MWE zusammen.

moewew commented 7 years ago

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

?

LukasCBossert commented 7 years ago

Fußnoten sind gut, aber Bibliographie wieder mit (doppeltem) Vollzitat.

bildschirmfoto 2016-10-10 um 18 15 26
moewew commented 7 years ago

Ist das schon mit der richtigen Logik? Wenn ja, dann wäre mir ein Beispiel viel lieber als ein Bild.

LukasCBossert commented 7 years ago

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.

moewew commented 7 years ago

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

LukasCBossert commented 7 years ago

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!