[Tex/LaTex] No comma between location and year, year in parentheses in case of a journal

biblatex

question: I need the following entry in the bibliography

Doe John, Title of Book, Location Year.

or, if it's an article

Doe John, Title of Article, Journal Volume (Year) pages

I have the following code:

\renewbibmacro*{publisher+location+date}{%
        \iffieldundef{location}{%
            \printtext[parens]{%
                \printlist{year}\addspace%
                }}{%
            \printfield{location}\addspace%
            \printlist{year}\addspace%
        }
}

however the output for this is:

  1. Book:

Doe John, Title of Book, ( ).

  1. Article:

Doe John, Title of Article Volume (Year).

However, the book should be displayed as follows:

Doe John, Title of book, Location Year.

Any help appreciated.

MWE (complete):

\documentclass[10pt,twoside,headings=normal,headsepline=true,numbers=noenddot]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{helvet}
\usepackage{nomencl}
\usepackage{shorttoc}
\usepackage{tocloft}
\usepackage{hyperref}
\usepackage[left=4.5cm,right=4.5cm,top=5.5cm,bottom=5.5cm]{geometry}
\usepackage[backend=biber,sorting=nty,style=verbose,isbn=false,url=false,publisher=false]{biblatex}
\usepackage{nomencl}
\usepackage{makeidx}
\usepackage{filecontents}
\begin{filecontents}{MWE.bib}
@INCOLLECTION{Doe1999,
  author = {John Doe},
  title = {Title of Book},
  publisher = {Kluwer Law International},
  year = {1999},
  volume = {25},
  series = {Series},
  shortauthor = {Doe},
  shorttitle = {Title of Book}
}
\end{filecontents}
\renewcommand\thechapter{\arabic{chapter}.}
\renewcommand\thesection{ยง \arabic{section}}
\renewcommand\thesubsection{\Roman{subsection}.}
\renewcommand\thesubsubsection{\arabic{subsubsection}.}
\renewcommand\theparagraph{\alph{paragraph})}
\renewcommand\thesubparagraph{\alph{paragraph}\alph{subparagraph})}
\newcommand\thesubsubparagraph{\alph{paragraph}\alph{subparagraph}\alph{subsubparagraph})}
\renewcommand{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\mkbibnamefirst}[1]{\textsc{#1}}
\renewcommand{\mkbibnameprefix}[1]{\textsc{#1}}
\renewcommand{\mkbibnameaffix}[1]{\textsc{#1}}
\renewcommand*{\revsdnamepunct}{}
\defbibheading{lit}{\chapter*{Lit}}
\defbibheading{mat}{\chapter*{Mat}}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished,shorttitle,journal]{title}{#1}
\renewbibmacro*{finentry}{
                \ifnameundef{shortauthor}
                {
                    \iffieldundef{shorttitle}{%
                    \adddot}{
                    \printtext[parens]{%
                    {cit.}\addspace
                    \printfield{shorttitle}%
                    }\adddot
                    }
                }
                {
                    \iffieldundef{shorttitle}
                    {
                        \printtext[parens]{%
                        {cit.}\addspace
                        \printnames{shortauthor}%
                        }\adddot
                    }
                    {
                        \printtext[parens]{%
                        {cit.}\addspace
                        \printnames{shortauthor}\addcomma\addspace
                        \printfield{shorttitle}%
                        }\adddot
                    }
                }
                }\finentry
\renewbibmacro*{publisher+location+date}{%
        \iffieldundef{location}{%
            \printtext[parens]{%
                \printlist{year}\addspace%
                }}{%
            \printlist{location}\addspace%
            \printlist{year}\addspace%
        }
}
\AtEveryBibitem{\clearfield{publisher}}
\renewcommand{\newunitpunct}{\addcomma\addspace}
\ifpunct{\renewcommand*{\nameyeardelim}{\addspace}}{}
\addbibresource{MWE.bib}
\let\abk\nomenclature%
\makenomenclature
\makeindex
\dedication{\hfill You really reading this shit?}
\author{XYZ}
\title{XYZ}
\setlength{\parindent}{0in}
\setlength\overfullrule{50pt}
\begin{document}
\frontmatter
\pagenumbering{Roman}
\maketitle
\dedication
\thispagestyle{empty}
\renewcommand*{\dictumauthorformat}[1]{#1}
\renewcommand*{\dictumrule}{}
\dictum[Winston Churchill]{If you're going through hell, keep going.}
\newpage
\addcontentsline{ubs}{chapter}{Preface}
\chapter*{Vorwort}
\input{Preface}
\newpage
\addcontentsline{ubs}{chapter}{Overview}
\shorttoc{Overview}{1}
\newpage
\addcontentsline{ubs}{chapter}{ToC}
\tableofcontents
\addcontentsline{ubs}{chapter}{Nomenclature}
\printnomenclature
\printbibliography[title={Lit},heading=lit,notkeyword=mat]
\printbibliography[title={Mat},heading=mat,keyword=mat]
\mainmatter
Lorem ipsum\footcite[p. 1]{Doe1999}.
\backmatter
\addcontentsline{ubs}{chapter}{Index}
\printindex
\end{document}

Also, I would be grateful if someone could advice on how to use only the text in the (cit. shortauthor, shorttitle) in the actual footnote..

Best Answer

The verbose style and its variants follow an authortitle-style bibliography, which is closely based on the standard style defined in standard.bbx.

From this file you can see that the punctuation preceding publication dates are set by a few different bibliography macros, depending on the entry type: issue+date for @article, publisher+location+date for most books, institution+location+date for reports and theses, organization+location+date for @misc, and location+date for @booklet and @unpublished.

In issue+date publication dates are already set in parentheses. To remove punctuation before the page reference you can redefine the \bibpagespunct command from biblatex.def in your preamble:

\renewcommand*{\bibpagespunct}{%
  \ifentrytype{article}{\addspace}{\addcomma\space}}

To remove page prefixes (e.g. "p." and "pp.") add:

\DeclareFieldFormat{page}{#1}
\DeclareFieldFormat{pages}{#1}

The comma preceding the publication date in other entry types can originate from a few different places. For example in publisher+location+date:

\newbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \iflistundef{publisher}
    {\setunit*{\addcomma\space}}% <- HERE
    {\setunit*{\addcolon\space}}%
  \printlist{publisher}%
  \setunit*{\addcomma\space}% <- OR HERE
  \usebibmacro{date}%
  \newunit}

Same goes for the other *location+date macros. To remove the commas change all relevant instances of \addcomma\space to \addspace in your redefinitions. Otherwise you can use the following dirty trick (at your own risk):

\renewbibmacro*{date}{\setunit{\addspace}\printdate}

In all these publications dates, if you are just wanting to print the publication year add the following to your preamble.

\AtEveryBibitem{%
  \clearfield{month}%
  \clearfield{day}}

\AtEveryCitekey{%
  \clearfield{month}%
  \clearfield{day}}

Your last request about use of shortauthor and shorttitle in citations would be better addressed as a new question. It needs to be clarified anyway.

Related Question