PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fussnoten in biblatex anpassen



shortener
01-08-2009, 11:29
Hallo,

ich würde in biblatex gerne die Ausgabe der Felder in den Fussnoten anpassen. So, dass ich beispielsweise sagen kann:

-Beim Eintragstyp @online sollen die Felder author, title, urlday, urlmonth und urlyear ausgegeben werden.

Ich weiss, dass ich die Ausgabe im Literaturverzeichnis mit


\DeclareBibliographyDriver{online}{
...
}


steuern kann. Leider kann ich im Code die Stelle für die Anpassung der Zitierweisen nicht finden.

Vielen Dank für eure Hilfe.

ElEsido
01-08-2009, 17:20
Ich stand vor dem selben Problem für die Typen jurisdiction und legislation. Ich habe das so gelöst:

Den cite-Befehl umdefinieren und dabei die gewünschten Typen abfangen und in ein eigenes Makro weisen:


\DeclareCiteCommand{\cite}%
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\ifthenelse{\equal{\thefield{entrytype}}{jurisdict ion}}{\usebibmacro{meincite-jura}}{\ifthenelse{\equal{\thefield{entrytype}}{le gislation}}{\usebibmacro{meincite-jura}}{\usebibmacro{cite}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
und im Makro, das im style-File oberhalb der Definition des cite-Befehls stehen muss, die Zitierweise definieren:

\newbibmacro{meincite-jura}{%
\iffieldundef{shorttitle}{\printfield{title}}{\pri ntfield{shorttitle}}\addcomma\addspace%
\iffieldundef{howpublished}{%
\printfield{journaltitle}%
\printfield{year}\addslash%
\iffieldundef{issue}{}{\thefield{issue}}%
\iffieldundef{number}{}{\thefield{number}}%
}{\printfield{howpublished}}}

Ob das der Königsweg ist, weiss ich nicht, aber es sollte funktionieren.

shortener
01-08-2009, 19:25
Vielen Dank für deine Antwort!

Es hat wunderbar geklappt.

shortener
01-08-2009, 23:49
Vielen Dank für deine Antwort!

Es hat wunderbar geklappt.

Es gibt nun doch noch ein Problem, dass ich vorher noch nicht entdeckt hatte und zwar folgendes:

Ich hab folgende Anpassungen vorgenommen


\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}
\iffieldequalstr{entrytype}{online}
{\usebibmacro{meincite-online}}
{\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}


und für footnote


\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\bibsentence
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\iffieldequalstr{entrytype}{online}
{\usebibmacro{meincite-online}}
{\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}


und



\newbibmacro*{urldate}{
\iffieldundef{urlyear}
{}
{\setunit{\addspace}
\printtext[urldate]{\biburldate}}}

\newbibmacro{meincite-online}{
\printnames{author}
\iffieldundef{shorttitle}
{\printfield{title}}
{\printfield{shorttitle}}
\addspace
\iffieldundef{date}
{\usebibmacro{urldate}}
{\usebibmacro{date}}
}


Das funktioniert soweit ganz gut. Wenn man aber genau hinschaut erkennt man ein Problem:

http://img188.imageshack.us/img188/3892/latexerror.jpg

Es entsteht ein Leerraum zwischen der Zahl und dem ersten Buchstaben.

Ich hoffe, dass du mir helfen kannst.

shortener
02-08-2009, 11:24
So, ich habe jetzt eine Lösung gefunden. Ich weiss nicht, ob sie perfekt ist, aber auf den ersten Blick scheint sie zu funktionieren.

Ich spreche jetzt nur für footcite. Der Rest funktioniert ja analog.



\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{%\bibsentence
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\iffieldequalstr{entrytype}{online} %if entrytype = @online
{{\usedriver{\DeclareNameAlias{sortname}{default}} {footcite:\thefield{entrytype}}}} %true
{\usebibmacro{cite}} %false
{\multicitedelim}
{\usebibmacro{cite:postnote}}


darunter definiere ich Folgendes:



\newbibmacro*{urldate}{
\iffieldundef{urlyear}
{}
{\setunit{\addspace}\printtext[urldate]{\biburldate}}
}

\DeclareBibliographyDriver{footcite:online}{
\usebibmacro{author}
\newunit
\printfield{labeltitle}
\newunit
\usebibmacro{urldate}
}


Mit diesen Anpassungen funktioniert es ganz gut. Den input für diese Idee habe ich im biblatex manual ab S. 153 (4.10.1 Mixing programming interfaces) gefunden.

(keine Gewähr, dass alle Klammern richtig geschlossen sind. Hab das nur schnell mal zusammenkopiert)

edit: Bis anhin hat es funktioniert. Jetzt tut es wieder nicht. Manchmal sind in der PDF-Ausgabe auch die anderen Fussnoten verschoben...
Ich habe keine Ahnung was da los ist.

ElEsido
02-08-2009, 14:37
Danke für den Hinweis mit den Lücken, die hatte ich auch, ohne sie zu bemerken...

Habe das Problem bei mir gelöst, indem ich jedes Makro mit Stern definiert und an die Enden jeder Zeile ein % gesetzt habe. Versuchs doch mal so:

\newbibmacro*{urldate}{%
\iffieldundef{urlyear}%
{}%
{\setunit{\addspace}%
\printtext[urldate]{\biburldate}}}

\newbibmacro*{meincite-online}{%
\printnames{author}%
\iffieldundef{shorttitle}%
{\printfield{title}}%
{\printfield{shorttitle}}%
\addspace%
\iffieldundef{date}%
{\usebibmacro{urldate}}%
{\usebibmacro{date}}%
}

shortener
02-08-2009, 15:19
Super, danke dir! Es funktioniert einwandfrei. Hoffentlich bleibt das so :cool: