% $Id: philosophy-standard.bbx,v 0.7 2010/03/30 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-standard.bbx}[$Id: philosophy-standard.bbx,v 0.7 2010/03/30 valbsua beta $] \DeclareLanguageMapping{italian}{italian-philosophy} \DeclareLanguageMapping{english}{english-philosophy} %*********************************************************************************************************** % % DECLARE AND EXECUTE BIBLIOGRAPHY OPTIONS % %*********************************************************************************************************** \newbool{bbx:annotation} \newbool{bbx:library} \newbool{bbx:scauthors} \newbool{bbx:scauthorsbib} \newbool{bbx:origparens} \newbool{bbx:origbrackets} \newbool{bbx:inbeforejournal} \newbool{bbx:romanvol} \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{romanvol}[true]{% \csuse{bool#1}{bbx:romanvol}} \DeclareBibliographyOption{origparens}[true]{% \csuse{bool#1}{bbx:origparens}} \DeclareBibliographyOption{origbrackets}[true]{% \csuse{bool#1}{bbx:origbrackets}} \DeclareBibliographyOption{inbeforejournal}[true]{% \csuse{bool#1}{bbx:inbeforejournal}} \newcommand{\bbx@publocformat}{} \newcommand{\bbx@volnumformat}{} \newcommand{\bbx@origfieldsformat}{} \DeclareBibliographyOption{publocformat}[publocyear]{% \renewcommand{\bbx@publocformat}{#1}} \DeclareBibliographyOption{volnumformat}[volnumdefault]{% \renewcommand{\bbx@volnumformat}{#1}} \DeclareBibliographyOption{origfieldsformat}[semicolon]{% \renewcommand{\bbx@origfieldsformat}{#1}} \ExecuteBibliographyOptions{% publocformat=publocyear, annotation=false, library=true, scauthors=false, scauthorsbib=false, origfieldsformat=false, publocformat=false, inbeforejournal=false, volnumformat=false, origfieldsformat=semicolon, } %*********************************************************************************************************** % % AT BEGIN SHORTHANDS % %*********************************************************************************************************** % \AtBeginShorthands{\boolfalse{bbx:annotation}} %*********************************************************************************************************** % % AT BEGIN BILIOGRAPHY % %*********************************************************************************************************** \AtBeginBibliography{% % SMALL CAPS AUTHORS NAME \ifbool{bbx:scauthorsbib}{% \DeclareNameFormat{sortname}{% \ifnumequal{\value{listcount}}{1} {\iffirstinits {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}} {\ifblank{#3}{\usebibmacro{name:last-first}{\textsc{#1}\nopunct}{\textsc{#3}}{\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}} }{}% } %*********************************************************************************************************** % % 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}}% {}% } %*********************************************************************************************************** % % 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}{} % Nuovi comandi per avere la traduzione tra parentesi \newcommand{\origleftparen}{\pureleftparen} \newcommand{\origrightparen}{\purerightparen} \newcommand{\origleftbracket}{\bibleftbracket} \newcommand{\origrightbracket}{\bibrightbracket} \newcommand{\backrefleftparen}{\pureleftparen} \newcommand{\backrefrightparen}{\purerightparen} \newcommand{\backrefparens}[1]{\backrefleftparen#1\backrefrightparen} \renewcommand*{\newunitpunct}{\addcomma\space} \renewcommand*{\subtitlepunct}{\addperiod\space} \renewcommand*{\intitlepunct}{\addspace} \newcommand*{\volnumpunct}{\addcomma\space} \appto\biburlsetup{\Urlmuskip=0mu\relax} %--------------------------------------------------------------------- % fields format %--------------------------------------------------------------------- % TITLE \DeclareFieldFormat[inbook]{title}{\mkbibemph{#1}} \DeclareFieldFormat[thesis]{title}{\mkbibemph{#1}} % CITETITLE \DeclareFieldFormat[inbook]{citetitle}{\mkbibemph{#1}} \DeclareFieldFormat[thesis]{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}} \DeclareFieldFormat{pureparens}{\mkpureparens{#1}} \DeclareFieldFormat{volume}{\ifbool{bbx:romanvol}{\textsc{\RN{#1}}}{#1}} \DeclareFieldFormat[article]{volume}{\ifbool{bbx:romanvol}{\textsc{\RN{#1}}}{#1}} %*********************************************************************************************************** % % NEW MACROS % %*********************************************************************************************************** \renewbibmacro*{pageref}{% \iflistundef{pageref} {} {\setunit{\addperiod\space}% \printtext[backrefparens]{% \ifnumgreater{\value{pageref}}{1} {\bibstring{backrefpages}\ppspace} {\bibstring{backrefpage}\ppspace}% \printlist[pageref][-\value{listtotal}]{pageref}\adddot}\nopunct}} %*********************************************************************************************************** \renewbibmacro*{publisher+location+date}{% \ifdefstring{\bbx@publocformat}{loccolonpub} {\usebibmacro{loccolonpub}}{\ifdefstring{\bbx@publocformat}{locpubyear} {\usebibmacro{locpubyear}} {\usebibmacro{publocyear}}}} \renewbibmacro*{institution+location+date}{% \ifdefstring{\bbx@publocformat}{loccolonpub} {\usebibmacro{inloccolonpub}}{\ifdefstring{\bbx@publocformat}{locpubyear} {\usebibmacro{inlocpubyear}} {\usebibmacro{inpublocyear}}}} \renewbibmacro*{organization+location+date}{% \ifdefstring{\bbx@publocformat}{loccolonpub} {\usebibmacro{orgloccolonpub}}{\ifdefstring{\bbx@publocformat}{locpubyear} {\usebibmacro{orglocpubyear}} {\usebibmacro{orgpublocyear}}}} %*********************************************************************************************************** % 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-. %*********************************************************************************************************** %\ifdefstring{\bbx@origfieldsformat}{parens} % {\setunit{\addspace\origleftparen}}% % {\ifdefstring{\bbx@origfieldsformat}{brackets}{\setunit{\addspace\origleftbracket}}{\setunit{\addsemicolon\space}}} \newbibmacro*{origfields}{% \iflistundef{origlocation}% {}% {\ifdefstring{\bbx@origfieldsformat}{parens} {\setunit{\addspace\origleftparen}}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\setunit{\addspace\origleftbracket}}{\setunit{\addsemicolon\space}}}% \iffieldundef{reprinttitle}% {\printtext{\bibstring{transtolang}}\nopunct} {\printtext{\bibstring{reprint}}\nopunct} \setunit{\addspace}% \iffieldundef{reprinttitle}% {\usebibmacro{origtitle}}% {\usebibmacro{reprinttitle}}% \newunit\newblock \usebibmacro{origpublisher+origlocation+origdate}% \ifdefstring{\bbx@origfieldsformat}{parens} {\origrightparen}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\origrightbracket}{}}}} \newbibmacro*{origpublisher+origlocation+origdate}{% \ifdefstring{\bbx@publocformat}{loccolonpub} {\usebibmacro{origloccolonpub}\setunit{\bibpagespunct}% \printfield{userc}}{\ifdefstring{\bbx@publocformat}{locpubyear} {\usebibmacro{origlocpubyear}\setunit{\bibpagespunct}% \printfield{userc}} {\usebibmacro{origpublocyear}\setunit{\bibpagespunct}% \printfield{userc}}}} % Questa macro gestisce la forma: ``Publisher, Location Year'', relativamente alla traduzione %*********************************************************************************************************** \newbibmacro*{origpublocyear}{% \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*{origloccolonpub}{% \iflistundef{origlocation}{}% {\printlist{origlocation}}% \iflistundef{origpublisher}% {\setunit*{\addspace}% \printorigdate}% {\setunit*{\addcolon\space}% \printlist{origpublisher}% \setunit*{\addcomma\space}% \printorigdate}% \newunit} % Questa macro gestisce la forma: ``Location, Publisher, Year'', relativamente alla traduzione %*********************************************************************************************************** \newbibmacro*{origlocpubyear}{% \iflistundef{origlocation}{}% {\printlist{origlocation}}% \iflistundef{origpublisher}% {\setunit*{\addspace}% \printorigdate}% {\setunit*{\addcomma\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}{}{% \ifdefstring{\bbx@origfieldsformat}{parens} {\setunit{\addspace\origleftparen}}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\setunit{\addspace\origleftbracket}}{\setunit{\addsemicolon\space}}}% \printtext{\bibstring{transtolang}% \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}% \ifdefstring{\bbx@origfieldsformat}{parens} {\origrightparen}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\origrightbracket}{}}}}} % La macro che gestisce il titolo della traduzione (origtitle) nelle voci inbook %*********************************************************************************************************** \newbibmacro*{origtitle:inbook}{% \iflistundef{origlocation}{}{% \ifdefstring{\bbx@origfieldsformat}{parens} {\setunit{\addspace\origleftparen}}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\setunit{\addspace\origleftbracket}}{\setunit{\addsemicolon\space}}}% \printtext{\bibstring{transtolang}% \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}% \ifdefstring{\bbx@origfieldsformat}{parens} {\origrightparen}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\origrightbracket}{}}}}} \newbibmacro*{articletranslated}{% \iflistundef{origlocation}{}{% \ifdefstring{\bbx@origfieldsformat}{parens} {\setunit{\addspace\origleftparen}}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\setunit{\addspace\origleftbracket}}{\setunit{\addsemicolon\space}}}% \printtext{\bibstring{transtolang}% \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}% \ifdefstring{\bbx@origfieldsformat}{parens} {\origrightparen}% {\ifdefstring{\bbx@origfieldsformat}{brackets}{\origrightbracket}{}}}}} %*********************************************************************************************************** %*********************************************************************************************************** \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}% } %*********************************************************************************************************** %*********************************************************************************************************** \newbibmacro*{volnumdefault}{% \printfield{volume}% \setunit*{\volnumpunct}% \printfield{number}} \newbibmacro*{volnumparens}{% \nopunct% \printtext[pureparens]{% \printfield{volume}% \setunit*{\volnumpunct}% \printfield{number}}\addcomma\space} \newbibmacro*{volnumstrings}{% \iffieldundef{volume}{}{% \bibstring{volume}\setunit*{\addnbspace}\printfield{volume}}% \setunit*{\volnumpunct}% \iffieldundef{number}{}{% \bibstring{number}\setunit*{\addnbspace}\printfield{number}}} \renewbibmacro*{journal+issuetitle}{% \usebibmacro{journal}% \setunit*{\addspace}% \iffieldundef{series} {} {\newunit \printfield{series}% \setunit{\addspace}}% \newunit \ifdefstring{\bbx@volnumformat}{volnumstrings}{\usebibmacro{volnumstrings}}% {\ifdefstring{\bbx@volnumformat}{volnumparens}{\usebibmacro{volnumparens}}% {\usebibmacro{volnumdefault}}}% \setunit{\addcomma\space}% \printfield{eid}% \setunit{\addspace}% \usebibmacro{issue+date}% \setunit{\addcolon\space}% \usebibmacro{issue}% \newunit} \renewbibmacro*{title+issuetitle}{% \usebibmacro{periodical}% \setunit*{\addspace}% \iffieldundef{series} {} {\newunit \printfield{series}% \setunit{\addspace}}% \newunit \ifdefstring{\bbx@volnumformat}{volnumstrings}{\usebibmacro{volnumstrings}}% {\ifdefstring{\bbx@volnumformat}{volnumparens}{\usebibmacro{volnumparens}}% {\usebibmacro{volnumdefault}}}% \setunit{\addcomma\space}% \printfield{eid}% \setunit{\addspace}% \usebibmacro{issue+date}% \setunit{\addcolon\space}% \usebibmacro{issue}% \newunit} \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 \ifbool{bbx:inbeforejournal}{\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}} \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}} \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