[Tex/LaTex] Biblatex : custom articles and books

biblatex

I recently started to use Biblatex and customize it a bit with some of your answers (A lot actually !!) but I'm still struggling with some of the features I like as I, sadly, don't understand much to most of the commands…

First, I'd like to show you what I've already done because there is probably a lot to say about it!

    \usepackage[language=french,sorting=nyt, hyperref=true,urldate=long,
    bibstyle=authortitle,citestyle=verbose,dateabbrev=false]{biblatex}

    \addbibresource{These.bib}

    \defbibheading{bibliography}{
    \setcounter{secnumdepth}{-1}
    \chapter{Bibliographie thématique}
    \markboth{\itshape Bibliographie thématique}{}
    }       

                        %******** Custom Bibliography *********

    \makeatletter
    \def\MKbibnamefirst#1{\expandafter\mkbibnamefirst@i#1..\@nil}
    \def\mkbibnamefirst@i#1.#2.#3\@nil{#1}

    \renewbibmacro*{name:last-first}[4]{%
      \ifuseprefix
        {\usebibmacro{name:delim}{#3#1}%
         \usebibmacro{name:hook}{#3#1}%
         \ifblank{#3}{}{%
           \ifcapital
             {\mkbibnameprefix{{#3}}\isdot}
         {\mkbibnameprefix{#3}}%
           \ifpunctmark{'}{}{\addhighpenspace}}%
         \mkbibnamelast{#1}\isdot
         \ifblank{#4}{}{\addlowpenspace\mkbibnameaffix{#4}\isdot}%
         \ifblank{#2}{}{\addlowpenspace\mkbibnamefirst{#2}}}
        {\usebibmacro{name:delim}{#1}%
         \usebibmacro{name:hook}{#1}%
         \mkbibnamelast{#1}\isdot
         \ifblank{#4}{}{\addlowpenspace\mkbibnameaffix{#4}\isdot}%
    %     \ifblank{#2#3}{}{\addcomma}%
         \ifblank{#2}{}{\addlowpenspace\MKbibnamefirst{#2}}%
    %     \ifblank{#3}{}{\addlowpenspace\mkbibnameprefix{#3}\isdot}
    }}
    \makeatother

    % Commas as separators
    \renewcommand*{\newunitpunct}{\addcomma\space}

    % Comma before and after journal volume
    \renewbibmacro*{volume+number+eid}{%
      \setunit*{\addcomma\space}% NEW
      \printfield{volume}%
      \setunit*{\addcomma\space}% NEW
      \printfield{number}%
      \setunit{\addcomma\space}%
      \printfield{eid}}

    % Prefixes for journal volume and number
    \DeclareFieldFormat[article]{volume}{\bibstring{volume}~#1}% volume of a journal
    \DeclareFieldFormat[article]{number}{\bibstring{number}~#1}% number of a journal

    % Comma before date; date not in parentheses
    \renewbibmacro*{issue+date}{%
      \setunit*{\addcomma\space}% NEW
        \iffieldundef{issue}
          {\usebibmacro{date}}
          {\printfield{issue}%
           \setunit*{\addspace}%
        \usebibmacro{date}}% NEW
      \newunit}

    % Issue/date macros removed after journal number
    \renewbibmacro*{journal+issuetitle}{%
      \usebibmacro{journal}%
      \setunit*{\addspace}%
      \iffieldundef{series}
        {}
        {\newunit
         \printfield{series}%
         \setunit{\addspace}}%
      \usebibmacro{volume+number+eid}%
      \newunit}

    % "In:" removed for articles; issue/date macros added after note+pages macro
    \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{journal+issuetitle}%
      \newunit
      \usebibmacro{byeditor+others}%
      \newunit
      \usebibmacro{note+pages}%
      \setunit{\addspace}
      \usebibmacro{issue+date}
      \setunit{\addcolon\space}
      \usebibmacro{issue}
      \newunit\newblock
      \iftoggle{bbx:isbn}
        {\printfield{issn}}
        {}%
      \newunit\newblock
      \usebibmacro{doi+eprint+url}%
      \newunit\newblock
      \usebibmacro{addendum+pubstate}%
      \setunit{\bibpagerefpunct}\newblock
      \usebibmacro{pageref}%
      \usebibmacro{finentry}}

    \DeclareFieldFormat[book]{title}{\mkbibquote{\mkbibemph{#1}}}

%Switch t. to vol.
\DeclareFieldFormat[article]{volume}{vol.~#1}

%Put ibid, op cit & co in italics
\renewcommand*{\mkibid}{\emph}

%Interligne entre les items Biblio
\DeclareFieldFormat{shorthandwidth}{#1}
\setlength{\bibitemsep}{6pt}

%Change p. to pp.
\DefineBibliographyStrings{french}{%
  pages = {pp\adddot},

    \begin{document}
    (...)
    \nocite{*}
    \begin{singlespace}
    \hyphenpenalty 10000
    \printbibheading
    \printbibliography[keyword=enreg,heading=subbibliography,title=Enregistrements audiovisuels des auditions]
    \printbibliography[keyword=justice,heading=subbibliography,title=Justice]
    \printbibliography[keyword=management,heading=subbibliography,title=Management et modernisation]
    \printbibliography[keyword=visio,heading=subbibliography,title=Visioconférence]
    \end{singlespace}
    \end{document}

I'd like to modify the appearance of my articles and books :

FOR ARTICLES :
I'm getting :
LASTNAME Firstname, « Title », Journal, Vol. 10, no 3, pp. 56 – 79, month year.
And I'd like :
LASTNAME Firstname, « Title », Journal, month year, vol. 10, no 3, pp. 56 – 79.
Which means:
– Get the month year block after the journal

FOR BOOKS :
I'm getting :
LASTNAME Firstname, «Title», Address : Publisher, year, 271 p.
And I'd like :
LASTNAME Firstname, «Title», Publisher, Address, year, 271 p.
Which means:
– Get the year after the adress
– Get in order the publisher separated from the adress with a comma

I realise that it's a lot to ask!! But I couldn't get nowhere with my experimentations and I'm lacking time to do more sad failures!!

Tks very much in advance for any help, or comment on my present modifications !
😉

Best Answer

This answer will be a work in progress, and it will quite possibly not cover all requests. That said, do the following:

  • Delete the code line \DeclareRangeCommands{\pno\ppno};
  • Add the code line \DeclareFieldFormat[book]{title}{\mkbibquote{\mkbibemph{#1}}};
  • Add the package option dateabbrev=false.

One way to switch from "t." to "vol." for articles would be to choose language=english. Is that what you want? Please explain.

EDIT: For @book entries, use the pagetotal field instead of the pages field.

EDIT 2: For @book & friends, add the following to your preamble:

\renewbibmacro*{publisher+location+date}{%
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \printlist{location}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

To be consistent, you should also change the bibmacros institution+location+date and organization+location+date along these lines. (The originals are located in standard.bbx.)

EDIT 3: For @article, the following seems to work at first glance (and I didn't bother to check it thouroughly):

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \setunit{\addcomma\space}%
  \usebibmacro{volume+number+eid}%
  \newunit}

@Doompa: That's it for now. If your style still needs finetuning, please add any requests to your original question (your edits became quite confusing for me). Also think about why you want a particular change.

Related Question