9

Using the example below, how could I modify the separator between last name and the initial? Currently this is a comma e.g. Fox, P. and it should be just a space: Fox P.

And a similar problem: How could I remove the period behind the initial?

\RequirePackage{filecontents}
\begin{filecontents}{sample.bib}
@ARTICLE{liu:11,
  author = {Peter Fox and Richard Rabbit and Franc Bird},
  title = {Animals are the better humans},
  journal = {Horse and Hound},
  year = {2011},
  volume = {10},
  pages = {11--15}
}
\end{filecontents}

\documentclass[a4paper,ngerman]{scrartcl}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage[style=authortitle,firstinits=true]{biblatex}

\bibliography{sample}
\begin{document}
Samplecite~\cite{liu:11}.

\printbibliography
\end{document}

Current status alt text

2
  • @Vivi: It's great that you're putting so much work into improving questions, but it's leading to the front page being filled with old questions. I think there's an unwritten policy of not having more than five minorly corrected questions on the front page at the same time.
    – Jake
    Jun 21, 2011 at 5:49
  • 1
    @Jake: sorry, I wasn't aware.
    – Vivi
    Jun 22, 2011 at 2:44

1 Answer 1

7

put it right after loading the package biblatex. If I understand it right, then you only want to strip the dot from the first initial.

\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{\MakeCapital{#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

alt text

4
  • Thank you very much, it is working perfectly. Could you explain the two \def bits and what \@nil is doing? (this is part of a solution at mrunix.de so you will find it there in a minute :))
    – Martin H
    Jan 11, 2011 at 10:51
  • 3
    @Martin: the dot at the initial has to be stripped from the data which is returned by biber or bibtex. If you really know that every bib entry has correct author names it can be done easier. But in this case it also recognizes empty author entries. In this case there is no dot and the macro would fail. with \@nil I can define an end of a parameter sequence. If your have no name then #1 is empty and returned.
    – user2478
    Jan 11, 2011 at 10:57
  • I need somewhat different formatting, namely "Fox P., R. Rabbit" instead of "Fox P, R. Rabbit" (as required by national standards of my country). How to modifiy your script (add a dot after "Fox P" before ",") to keep it working with any number of authors? I meean that "Fox P." sould not transform to "Fox P.." in case of single author. Feb 27, 2011 at 5:25
  • 1
    @Igor: If you've got a question, then you should ask it in a new post (and neither in a comment nor in an answer); otherwise people won't notice it. Follow-up questions like this are more than welcome! In your new question, you can link to this one to provide the background. (Then you should remove what you posted here as it is not an answer.) Mar 2, 2011 at 10:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .