[Tex/LaTex] remove comma between address/publisher and year and after parentheses

biblatex

I need citations (mostly) as footnotes in the following form:

Book first appearance:

F. Author ­– T.S. Author, The Longtitle and not the Shorttitle, Address 1965, 4.

Second appearance:

F. Author ­– T.S. Author, Shorttitle (cf. nt. 1) 5.

Article in journal first appearance:

A. Author, "Title of the Article", Journal Title 65 (1968) 113­-126.

So far I got to:

F. Author ­– T.S. Author, The Longtitle and not the Shorttitle, Address, 1965, 4.

F. Author ­– T.S. Author, Shorttitle (cf. nt. 1), 5.

A. Author, "Title of the Article", Journal Title 65 (1968), 113­-126.

As you see, I didn't achieve to get rid of the commas between address and year and after the two parentheses. So far I got with the following code:

\documentclass{scrartcl}
\begin{filecontents*}{mybib.bib}
@BOOK{Abook,
 author = "First Author and The Second Author",
 title = {The Longtitle and not the Shorttitle},
 shorttitle = {Shorttitle},
 publisher = "The Publisher",
 address =  "Address",
 year = "1965"}
@article{Aarticle,
Author = {Article Author},
Journal = {Journal Title},
Pages = {113-126},
Title = {Title of the Article},
Volume = {65},
Year = {1968}}
\end{filecontents*}

\usepackage[style=verbose-note,firstinits=true]{biblatex}

\renewbibmacro*{footcite:note}{%
  \ifnameundef{labelname}
    {\printfield{label}}
    {\printnames[first-last]{labelname}}%
    {\setunit*{\nametitledelim}%
     \printfield[title]{labeltitle}}%
  \setunit*{\space\printtext{(}}%
  \printtext{%
    \bibstring{seenote}\addnbspace
    \ref{cbx@\csuse{cbx@f@\thefield{entrykey}}})%
    \iftoggle{cbx:pageref}
      {\ifsamepage{\the\value{instcount}}
                  {)\csuse{cbx@f@\thefield{entrykey}}}
         {}
     {\addcomma\space\bibstring{page}\addnbspace
      \pageref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}}
      {}}}

\renewcommand{\newunitpunct}{\addcomma\space}
\renewcommand*{\mkbibnamefirst}[1]{{\iffirstinits{\let~\-}{}#1}}

\renewcommand*{\multinamedelim}{~--\space}
\renewcommand*{\finalnamedelim}{~--\space}

\renewbibmacro{in:}{%
  \ifentrytype{article}{}{%
  \printtext{\bibstring{in}\intitlepunct}}}

\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{pages}{#1}

\AtEveryCitekey{%
  \clearlist{publisher}%
}

\DefineBibliographyStrings{english}{%
  seenote = {cf. nt.},
}

\bibliography{mybib}

\begin{document}

Here and there. \footcite[4]{Abook}

There and here. \footcite[5]{Abook}

Up and down. \footcite{Aarticle}

\end{document}

My first attempt to get any further was to use \ifciteseen the following way:

\renewcommand*{\postnotedelim}{%
  \ifciteseen 
  {\space}
  {\addcomma\space}}

This does not work as also the first appearance is treated as already seen (I think because it is nested with another \ifciteseen inside \newbibmacro*{footcite}.

So my second try was:

\newbibmacro*{footcite}{%
  \usebibmacro{cite:citepages}%
  \ifciteseen
    {\renewcommand*{\postnotedelim}{\space}
    {\iffieldundef{shorthand}
       {\usebibmacro{footcite:note}}
       {\usebibmacro{footcite:shorthand}}}}
    {\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}

This solved part of the problem, but created another one: It retained the comma in the first appearance of the book (god), removed the comma in the second appearance (god), added a space between the footnote number and the citation (bad).

For the commas between the address and year and after the parenthesis in the article citation I didn't find any idea how to proceed.

So any suggestions how to get rid of the three commas mentioned, without touching the others?

Best Answer

You need to insert \nopunct into appropriate places for these two different problems.

For the year, this is in the biblatex macro issue+date and you can insert it before the final \newunit:

\renewbibmacro{issue+date}{%
  \printtext[parens]{%
    \iffieldundef{issue}
      {\usebibmacro{date}}
      {\printfield{issue}%
       \setunit*{\addspace}%
       \usebibmacro{date}}}%
  \nopunct\newunit}

For the see note, it should be part of your redefinition of footnote:cite after your closing parenthesis. I would also suggest moving the opening parenthesis into the same block.

Putting this into your code, we get:

Sample output

from

\documentclass{scrartcl}
\begin{filecontents*}{mybib.bib}
@BOOK{Abook,
 author = "First Author and The Second Author",
 title = {The Longtitle and not the Shorttitle},
 shorttitle = {Shorttitle},
 publisher = "The Publisher",
 address =  "Address",
 year = "1965"}
@article{Aarticle,
Author = {Article Author},
Journal = {Journal Title},
Pages = {113-126},
Title = {Title of the Article},
Volume = {65},
Year = {1968}}
\end{filecontents*}

\usepackage[style=verbose-note,firstinits=true]{biblatex}

\renewbibmacro*{footcite:note}{%
  \ifnameundef{labelname}
    {\printfield{label}}
    {\printnames[first-last]{labelname}}%
    {\setunit*{\nametitledelim}%
     \printfield[title]{labeltitle}}%
  \setunit*{\space}%
  \printtext{%
  (%
    \bibstring{seenote}\addnbspace
    \ref{cbx@\csuse{cbx@f@\thefield{entrykey}}})\nopunct%
    \iftoggle{cbx:pageref}
      {\ifsamepage{\the\value{instcount}}
                  {)\csuse{cbx@f@\thefield{entrykey}}}
         {}
     {\addcomma\space\bibstring{page}\addnbspace
      \pageref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}}
      {}}}

\renewcommand{\newunitpunct}{\addcomma\space}
\renewcommand*{\mkbibnamefirst}[1]{{\iffirstinits{\let~\-}{}#1}}

\renewcommand*{\multinamedelim}{~--\space}
\renewcommand*{\finalnamedelim}{~--\space}

\renewbibmacro{in:}{%
  \ifentrytype{article}{}{%
  \printtext{\bibstring{in}\intitlepunct}}}

\renewbibmacro{issue+date}{%
  \printtext[parens]{%
    \iffieldundef{issue}
      {\usebibmacro{date}}
      {\printfield{issue}%
       \setunit*{\addspace}%
       \usebibmacro{date}}}%
  \nopunct\newunit}

\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{pages}{#1}

\AtEveryCitekey{%
  \clearlist{publisher}%
}

\DefineBibliographyStrings{english}{%
  seenote = {cf.~nt.\adddot},
}


\bibliography{mybib}

\begin{document}

Here and there. \footcite[4]{Abook}

There and here. \footcite[5]{Abook}

Up and down. \footcite{Aarticle}

\end{document}