% $Id: philosophy-verbose.bbx,v 0.5 2010/03/07 Valbusa$ % Copyright 2009-2010 Ivan Valbusa. This package is author-maintained. % Permission is granted to copy, distribute and/or modify this software under the % terms of the LaTeX Project Public License, version 1.3c % http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt. \ProvidesFile{philosophy-verbose.bbx}[$Id: philosophy-verbose.bbx,v 0.5 2010/03/07 valbsua beta $] \RequireBibliographyStyle{authortitle} \DeclareLanguageMapping{italian}{italian-philosophy} %*********************************************************************************************************** % % DECLARE AND EXECUTE BIBLIOGRAPHY OPTIONS % %*********************************************************************************************************** \newbool{bbx:locpubyear} \newbool{bbx:annotation} \newbool{bbx:library} \newbool{bbx:scauthors} \newbool{bbx:scauthorsbib} \newbool{bbx:origparens} \newbool{bbx:origbrackets} \newbool{bbx:itbackref} \DeclareBibliographyOption{locpubyear}[true]{% \csuse{bool#1}{bbx:locpubyear}} \DeclareBibliographyOption{annotation}[true]{% \csuse{bool#1}{bbx:annotation}} \DeclareBibliographyOption{library}[true]{% \csuse{bool#1}{bbx:library}} \DeclareBibliographyOption{scauthors}[true]{% \csuse{bool#1}{bbx:scauthors}} \DeclareBibliographyOption{scauthorsbib}[true]{% \csuse{bool#1}{bbx:scauthorsbib}} \DeclareBibliographyOption{origparens}[true]{% \csuse{bool#1}{bbx:origparens}} \DeclareBibliographyOption{origbrackets}[true]{% \csuse{bool#1}{bbx:origbrackets}} \DeclareBibliographyOption{itbackref}[true]{% \csuse{bool#1}{bbx:itbackref}} \ExecuteBibliographyOptions{% locpubyear=false, annotation=false, library=true, scauthors=false, scauthorsbib=false, itbackref=false, origparens=false, origbrackets=false} %*********************************************************************************************************** % % AT BEGIN SHORTHANDS % %*********************************************************************************************************** % \AtBeginShorthands{\boolfalse{bbx:annotation}} %*********************************************************************************************************** % % AT BEGIN DOCUMENT % %*********************************************************************************************************** \AtBeginDocument{% \ifbool{bbx:origbrackets}{\booltrue{bbx:origparens} \renewcommand{\origleftparen}{\bibleftbracket} \renewcommand{\origrightparen}{\bibrightbracket}}% {}% \ifbool{bbx:scauthors} {\booltrue{bbx:scauthorsbib}\booltrue{cbx:scauthorscite}}% {}% } %*********************************************************************************************************** % % AT BEGIN BILIOGRAPHY % %*********************************************************************************************************** \AtBeginBibliography{% \global\boolfalse{cbx:loccit}% \citetrackertrue % ITLIAN BACKREF \ifbool{bbx:itbackref} {\renewbibmacro*{pageref}{% \iflistundef{pageref} {}% {\setunit{\addperiod\space}% \ifnum\value{pageref}>1\relax \printtext[backrefparens]{Citato\addspace alle\addspace \bibstring{pages}\ppspace% \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct \else \printtext[backrefparens]{Citato\addspace a\addspace \bibstring{page}\ppspace% \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct \fi}}}% {\renewbibmacro*{pageref}{% \iflistundef{pageref} {} {\setunit{\addperiod\space}% \ifnum\value{pageref}>1\relax \printtext[backrefparens]{\bibstring{see}\space% \bibstring{pages}\ppspace% \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct \else \printtext[backrefparens]{\bibstring{see}\space% \bibstring{page}\ppspace% \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct \fi}}} % SMALL CAPS AUTHORS NAME \ifbool{bbx:scauthorsbib}{\DeclareNameFormat{sortname}{% \ifnumequal{\value{listcount}}{1} {\iffirstinits {\usebibmacro{name:last-first}{\textsc{#1}}{\textsc{#4}}{\textsc{#5}}{\textsc{#7}}} {\usebibmacro{name:last-first}{\textsc{#1}}{\textsc{#3}}{\textsc{#5}}{\textsc{#7}}}% \ifblank{#3#5} {} {\usebibmacro{name:revsdelim}}} {\iffirstinits {\usebibmacro{name:first-last}{\textsc{#1}}{\textsc{#4}}{\textsc{#5}}{\textsc{#7}}} {\usebibmacro{name:first-last}{\textsc{#1}}{\textsc{#3}}{\textsc{#5}}{\textsc{#7}}}}% \usebibmacro{name:andothers}} }{}} %*********************************************************************************************************** % % FIELDS FORMAT % %*********************************************************************************************************** %--------------------------------------------------------------------- % new commands %--------------------------------------------------------------------- \newcommand*{\pureleftparen}{\blx@postpunct(} \newcommand*{\purerightparen}{\blx@postpunct)\midsentence} \newrobustcmd{\mkpureparens}[1]{% \blx@postpunct \begingroup \let\mkpureparens\blx@noparens \pureleftparen#1\blx@postpunct\purerightparen \endgroup} % Definisco ora alcuni comandi che servono per il formato dei campi. \newcommand{\annotationfont}{\sffamily} \newcommand{\libraryfont}{} \newcommand{\backrefleftparen}{(} \newcommand{\backrefrightparen}{)} \newcommand{\backrefparens}[1]{\backrefleftparen#1\backrefrightparen} % Nuovi comandi per avere la traduzione tra parentesi \newcommand{\origleftparen}{\bibleftparen} \newcommand{\origrightparen}{\bibrightparen} \renewcommand*{\newunitpunct}{\addcomma\space} \renewcommand*{\subtitlepunct}{\addperiod\space} \appto\biburlsetup{\Urlmuskip=0mu\relax} %--------------------------------------------------------------------- % fields format %--------------------------------------------------------------------- % TITLE \DeclareFieldFormat[inbook]{title}{\mkbibemph{#1}} % CITETITLE \DeclareFieldFormat[inbook]{citetitle}{\mkbibemph{#1}} % ORIGTITLE \DeclareFieldFormat{origtitle}{\mkbibemph{#1}} % USERA \DeclareFieldFormat{usera}{\mkbibemph{#1}} \DeclareFieldFormat[article]{usera}{\mkbibquote{#1}} \DeclareFieldFormat[inbook]{usera}{\mkbibemph{#1}} \DeclareFieldFormat[incollection]{usera}{\mkbibquote{#1}} % USERC \DeclareFieldFormat{userc}{\mkpageprefix[bookpagination]{#1}} % URL \DeclareFieldFormat{url}{\url{#1}} % ANNOTATION LIBRARY \DeclareFieldFormat{annotation}{\annotationfont #1} \DeclareFieldFormat{library}{\libraryfont #1} % PARENS \DeclareFieldFormat{backrefparens}{\mkpureparens{#1}} %*********************************************************************************************************** % % NEW MACROS % %*********************************************************************************************************** %%*********************************************************************************************************** %\renewbibmacro*{pageref}{% % \iflistundef{pageref} % {}% % {\setunit{\addperiod\space}% % \ifnum\value{pageref}>1\relax % \printtext[backrefparens]{\bibstring{see}\space% % \bibstring{pages}\ppspace% % \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct%MOD % \else % \printtext[backrefparens]{\bibstring{see}\space% % \bibstring{page}\ppspace% % \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct%MOD % \fi}} %*********************************************************************************************************** \renewbibmacro*{publisher+location+date}{% \ifbool{bbx:locpubyear}% {\usebibmacro{colonloc}} {\usebibmacro{commaloc}}} % Macro per la forma ``Publisher, Location Year''. %*********************************************************************************************************** \newbibmacro*{commaloc}{% \iflistundef{publisher}% {}% {\printlist{publisher}} \setunit*{\addcomma\space}% \printlist{location}% \setunit*{\addspace}% \usebibmacro{date}% \newunit} % Macro per la forma ``Location: Publisher, Year'' %*********************************************************************************************************** \newbibmacro*{colonloc}{% \printlist{location}% \iflistundef{publisher}% {\setunit*{\addspace}} {\setunit*{\addcolon\space}}% \printlist{publisher}% \setunit*{\addcomma\space}% \usebibmacro{date}% \newunit} %*********************************************************************************************************** %*********************************************************************************************************** \renewbibmacro*{bbx:editor}[1]{% \ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}} {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND \NOT\iffirstonpage\AND \(\NOT\boolean{bbx@inset}\OR \iffieldequalstr{entrysetcount}{1}\)} {\bibnamedash} {\printnames{editor}% \setunit{\addspace}% #MOD# \usebibmacro{bbx:savehash}}% \usebibmacro{#1}% \clearname{editor}} {\global\undef\bbx@lasthash}} \renewbibmacro*{author}{% \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}% {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND \NOT\iffirstonpage\AND \(\NOT\boolean{bbx@inset}\OR \iffieldequalstr{entrysetcount}{1}\)} {\bibnamedash}% {\printnames{author}% \setunit{\addcomma\space}% \usebibmacro{bbx:savehash}}% \usebibmacro{authorstrg}} {\global\undef\bbx@lasthash}} %*********************************************************************************************************** % Definisco le macro che verranno utilizzate per stampare le informazioni relative alla traduzione, che sono state inserite all'interno dei record bibliografici nei campi orig-. %*********************************************************************************************************** \newbibmacro*{origfields}{% \iflistundef{origlocation}% {}% {\ifbool{bbx:origparens}{\setunit{\addspace\origleftparen}}{% \setunit{\addsemicolon\space}}% \iffieldundef{reprinttitle}% {\printtext{\bibstring{reprintas}}\nopunct} {\printtext{\bibstring{reprint}}\nopunct} \setunit{\addspace}% \iffieldundef{reprinttitle}% {\usebibmacro{origtitle}}% {\usebibmacro{reprinttitle}}% \newunit\newblock \usebibmacro{origpublisher+origlocation+origdate}% \ifbool{bbx:origparens}{\origrightparen}{}% }} \newbibmacro*{origpublisher+origlocation+origdate}{% \ifbool{bbx:locpubyear}% {\usebibmacro{origcolonloc}% \setunit{\bibpagespunct}% \printfield{userc}} {\usebibmacro{origcommaloc}% \setunit{\bibpagespunct}% \printfield{userc}}} % Questa macro gestisce la forma: ``Publisher, Location Year'', relativamente alla traduzione %*********************************************************************************************************** \newbibmacro*{origcommaloc}{% \iflistundef{origpublisher}% {\printlist{origlocation}% \setunit*{\addspace}% \printorigdate}% {\printlist{origpublisher}% \setunit*{\addcomma\space}% \printlist{origlocation}% \setunit*{\addspace}% \printorigdate}% \newunit} % Questa macro gestisce la forma: ``Location: Publisher, Year'', relativamente alla traduzione %*********************************************************************************************************** \newbibmacro*{origcolonloc}{% \iflistundef{origlocation}{}% {\printlist{origlocation}}% \iflistundef{origpublisher}% {\setunit*{\addspace}% \printorigdate}% {\setunit*{\addcolon\space}% \printlist{origpublisher}% \setunit*{\addcomma\space}% \printorigdate}% \newunit} % La macro che gestisce il titolo della traduzione (origtitle) %*********************************************************************************************************** \newbibmacro*{origtitle}{% \iffieldundef{origtitle}{}{ \printfield[origtitle]{origtitle}% \setunit{\addcomma\space}} \iffieldundef{userb}{}{% \printfield{userb}% }} % La macro che gestisce il titolo della ristampa (reprinttitle) %*********************************************************************************************************** \newbibmacro*{reprinttitle}{% \iffieldundef{reprinttitle}{}{% \iffieldsequal{reprinttitle}{title}{}{% \printfield[title]{reprinttitle}% \setunit{\addcomma\space}}} \iffieldundef{userb}{}{% \printfield{userb}% }} % La macro che gestisce il titolo della traduzione (origtitle) nelle voci incollection %*********************************************************************************************************** \newbibmacro*{origtitle:incollection}{% \iflistundef{origlocation}{}{% \ifbool{bbx:origparens}{\setunit{\addspace\origleftparen}}{% \setunit{\addsemicolon\space}}% \printtext{\bibstring{reprintas}% \iffieldundef{usera}% {\setunit{\addspace}}% {\setunit{\addspace}% \printfield[usera]{usera}% \setunit{\addcomma\space}% \usebibmacro{in:}}% \setunit{\addspace}% \newblock \iffieldundef{origtitle}{}{% \printfield[origtitle]{origtitle}% \setunit{\addcomma\space}} \iffieldundef{userb}{}{% \printfield{userb}% \newunit} \usebibmacro{origpublisher+origlocation+origdate}% \ifbool{bbx:origparens}{\origrightparen}{}% }}} % La macro che gestisce il titolo della traduzione (origtitle) nelle voci inbook %*********************************************************************************************************** \newbibmacro*{origtitle:inbook}{% \iflistundef{origlocation}{}{% \ifbool{bbx:origparens}{\setunit{\addspace\origleftparen}}{% \setunit{\addsemicolon\space}}% \printtext{\bibstring{reprintas}% \iffieldundef{usera}% {\setunit{\addspace}}% {\setunit{\addspace}% \printfield{usera}% \setunit{\addcomma\space}% \usebibmacro{in:}}% \setunit{\addspace}% \newblock \iffieldundef{origtitle}{}{% \printfield[origtitle]{origtitle}% \setunit{\addcomma\space}}% \iffieldundef{userb}{}{% \printfield{userb}% \newunit}% \usebibmacro{origpublisher+origlocation+origdate}% \ifbool{bbx:origparens}{\origrightparen}{}% }}} \newbibmacro*{articletranslated}{% \iflistundef{origlocation}{}{% \ifbool{bbx:origparens}{\setunit{\addspace\origleftparen}}{% \setunit{\addsemicolon\space}}% \printtext{\bibstring{reprintas}% \iffieldundef{usera}% {\setunit{\addspace}}% {\setunit{\addspace} \printfield{usera}% \setunit{\addcomma\space}% \usebibmacro{in:}% \setunit{\addspace}}% \iffieldundef{origtitle}{}{% \printfield[origtitle]{origtitle}% \newunit\newblock} \iffieldundef{userb}{}{% \printfield{userb} \newunit} \usebibmacro{origpublisher+origlocation+origdate}% \ifbool{bbx:origparens}{\origrightparen}{}% }}} %*********************************************************************************************************** %*********************************************************************************************************** \renewbibmacro*{annotation}{% \ifbool{bbx:library}{% \setunit{\addperiod\space}% \iffieldundef{library} {\printfile[library]{\bibannotationprefix\thefield{entrykey}.tex}} {\printfield{library}}} {} } \renewbibmacro*{finentry}{% \ifbool{bbx:annotation}% {\iffieldundef{annotation}% {\finentry}% {\setunit{\addperiod\par\nobreak}% \printtext[annotation]{\printfield{annotation}\finentry\par}}}% {\finentry}} %*********************************************************************************************************** \renewbibmacro*{addendum+pubstate}{% \printfield{addendum}% \newunit\newblock \printfield{pubstate}% \newunit\newblock \usebibmacro{origfields}% \newunit\newblock \usebibmacro{annotation}% } %*********************************************************************************************************** %*********************************************************************************************************** \newbibmacro*{artaddendum+pubstate}{% \printfield{addendum}% \newunit\newblock \printfield{pubstate}% \newunit\newblock \usebibmacro{articletranslated}% \newunit\newblock \usebibmacro{annotation}% } % Questa è una nuova macro, analoga alla pecedente, ma per le voci \bibtype{inbook} %*********************************************************************************************************** \newbibmacro*{inbookaddendum+pubstate}{% \printfield{addendum}% \newunit\newblock \printfield{pubstate}% \newunit\newblock \usebibmacro{origtitle:inbook}% \newunit\newblock \usebibmacro{annotation}% } % Questa è una nuova macro, analoga alla pecedente, ma per le voci \bibtype{incollection} %*********************************************************************************************************** \newbibmacro*{incolladdendum+pubstate}{% \printfield{addendum}% \newunit\newblock \printfield{pubstate}% \newunit\newblock \usebibmacro{origtitle:incollection}% \newunit\newblock \usebibmacro{annotation}% } %*********************************************************************************************************** %*********************************************************************************************************** \DeclareBibliographyDriver{article}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{bytranslator+others}% \newunit\newblock \printfield{version}% \newunit\newblock %\usebibmacro{in:}% \usebibmacro{journal+issuetitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \usebibmacro{note+pages}% \newunit\newblock \iftoggle{bbx:isbn} {\printfield{issn}} {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{artaddendum+pubstate}% \newunit\newblock \usebibmacro{pageref}% \usebibmacro{finentry}} \DeclareBibliographyDriver{incollection}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{in:}% \iffootnote{% \iffieldundef{crossref}% {\usebibmacro{incollection:full}}% {\printtext{\setunit{\unspace}}% Thanks to Sander Gliboff \cbx@crossref{\thefield{crossref}}% \newunit\newblock \usebibmacro{pageref}% \usebibmacro{finentry}}}{\usebibmacro{incollection:full}}% } \newbibmacro*{incollection:full}{% \usebibmacro{maintitle+booktitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \printfield{edition}% \newunit \iffieldundef{maintitle} {\printfield{volume}% \printfield{part}} {}% \newunit \printfield{volumes}% \newunit\newblock \usebibmacro{series+number}% \newunit\newblock \printfield{note}% \newunit\newblock \usebibmacro{publisher+location+date}% \newunit\newblock \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} {\printfield{isbn}} {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{incolladdendum+pubstate}% \newunit\newblock \usebibmacro{pageref}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inbook}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\labelnamepunct}\newblock \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{in:}% \iffootnote{% \iffieldundef{crossref}% {\usebibmacro{inbook:full}}% {\printtext{\setunit{\unspace}}% Thanks to Sander Gliboff \cbx@inbookcrossref{\thefield{crossref}}% \newunit\newblock \usebibmacro{pageref}% \usebibmacro{finentry}}}{\usebibmacro{inbook:full}}% } \newbibmacro*{inbook:full}{% \usebibmacro{bybookauthor}% \newunit\newblock \usebibmacro{maintitle+booktitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \printfield{edition}% \newunit \iffieldundef{maintitle} {\printfield{volume}% \printfield{part}} {}% \newunit \printfield{volumes}% \newunit\newblock \usebibmacro{series+number}% \newunit\newblock \printfield{note}% \newunit\newblock \usebibmacro{publisher+location+date}% \newunit\newblock \usebibmacro{chapter+pages}% \newunit\newblock \iftoggle{bbx:isbn} {\printfield{isbn}} {}% \newunit\newblock \usebibmacro{doi+eprint+url}% \newunit\newblock \usebibmacro{inbookaddendum+pubstate}% \newunit\newblock \usebibmacro{pageref}% \usebibmacro{finentry}} \endinput