Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I need to use the features of biblatex's verbose citestyle but I don't want it to repeat the author's name in multiple citations by the same author (like the authortitle-comp option).

Currently, using the citestyle=verbose option, if I cite three works by "An Author" as:

\autocites{ANAuthor:1}{ANAuthor:2}{ANAuthor:3} 

the output is: "A. N. Author. 'First work' etc [full entry]; A. N. Author. 'Second work' etc [full entry]; A. N. Author. 'Third work' etc [full entry]."

But I need to have the output: "A. N. Author. 'First work' etc [full entry]; 'Second work' etc [full entry]; 'Third work' etc [full entry]."

Is there any way to do this in the verbose style? That is, suppress the author field in multiple citations for subsequent works by the same author?

Grateful for any assistance!


Update clarification

The only way to achieve this, I think, is to make a custom biblatex citestyle. Looking at the verbose.cbx the relevant command is the the printing of the bibhypertarget, as in the commands for full and short citations:

   \newbibmacro*{cite:full}{%  
        printtext[bibhypertarget]{%  
        \usedriver  
          {\DeclareNameAlias{sortname}{default}}  
          {\thefield{entrytype}}}%  
      \usebibmacro{shorthandintro}}

   \newbibmacro*{cite:short}{%  
      \printnames{labelname}%  
      \setunit*{\addcomma\space}%  
      \printtext[bibhyperlink]{%  
        \printfield[citetitle]{labeltitle}}}  

Does anyone know how to modify that to print the author field as blank when the same author appears previously in the same multicites command?

share|improve this question
    
I guess this is not exactly what you want but I ask to make sure. Have you tried the style verbose-note? Also, welcome to tex.sx! –  N.N. Jun 13 '11 at 11:32
    
Hi, thanks, and thanks for the welcome! :-) Alas, verbose-note is not what I want. It doesn't solve the problem of multiple citations... I might consider implementing what it does do (ie refer back) but, that's another issue, I think... –  MCS Jun 13 '11 at 13:07
1  
I think it needs a combination of authortitle-comp feature with verbose style... –  henrique Jun 18 '11 at 2:55
    
Comment on the edit: I tried to tweak things around, and came almost to the same conclusion. In fact, I think it would be better to create a new \usedriver macro, which would not print everything but will remove the author. Alas, It is well beyond my competencies. –  Martigan Jun 18 '11 at 13:50

2 Answers 2

I'm not sure whether such an approach meets your requirements, but the siam.bst file uses a last.authors string to print a line instead of authors' names if they appear consecutively (see e.g. this example). I assume changing your bst file according to what is done in siam.bst (namely, the FUNCTION {format.authors} part), notwithstanding the additions you want to make, should solve your problem.

share|improve this answer
2  
biblatex doesn't use .bst files though, so there is no .bst file to modify. –  Alan Munn Jun 17 '11 at 12:12
    
Oh. My bad, didn't know that. –  Anthony Labarre Jun 17 '11 at 12:28

As @henrique said (in the comments), a combination of authortitle-comp and verbose should work:

\documentclass[english]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{article,
  author = {Arnold Author},
  title = {A journal article},
  journaltitle = {Some Journal},
  date = {2006},
  volume = {6},
  pages = {19-75}
}
@book{book,
  author = {Arnold Author},
  title = {Some Book},
  editor = {Edmund Editor},
  location = {London},
  date = {2000},
  options = {useeditor=false}
}
@collection{coll,
  editor = {Arnold Author},
  title = {An edited volume},
  location = {London},
  date = {2002}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}

\usepackage[
  style=verbose,
]{biblatex}
\addbibresource{\jobname.bib}

\makeatletter
\newbibmacro*{cite:init}{%
  \ifnumless{\value{multicitecount}}{2}
    {\global\undef\cbx@lasthash}
    {\iffieldundef{prenote}
       {}
       {\global\undef\cbx@lasthash}}}

\newbibmacro*{cite:reinit}{%
  \global\undef\cbx@lasthash}

\renewbibmacro*{cite}{%
  \usebibmacro{cite:init}%
  \usebibmacro{cite:citepages}%
  \ifciteseen
    {\iffieldundef{shorthand}
       {\usebibmacro{cite:short}}
       {\usebibmacro{cite:shorthand}%
        \usebibmacro{cite:reinit}}}
    {\usebibmacro{cite:full}}}

\renewbibmacro*{cite:full}{%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\iffieldequals{namehash}{\cbx@lasthash}
         {\ifboolexpr{
           test {\ifuseauthor}
           and not
           test {\ifnameundef{author}}}
          {\clearname{author}}
          {\ifboolexpr{
             test {\ifuseeditor}
             and not
             test {\ifnameundef{editor}}}
            {\clearname{editor}}
            {\ifboolexpr{
               test {\ifusetranslator}
               and not
               test {\ifnameundef{translator}}}
              {\clearname{translator}}
              {}}}}
         {}%
       \DeclareNameAlias{sortname}{default}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}%
  \savefield{namehash}{\cbx@lasthash}}

\renewbibmacro*{cite:short}{%
  \iffieldequals{namehash}{\cbx@lasthash}
     {}
     {\ifnameundef{labelname}
        {}
        {\printnames{labelname}%
         \setunit{\addcomma\space}}%
      \savefield{namehash}{\cbx@lasthash}}%
  \printtext[bibhyperlink]{%
    \printfield[citetitle]{labeltitle}}}
\makeatother

\begin{document}
\autocites{article}{book}{coll}
\autocites{article}{book}{coll}

\printbibliography
\end{document}

Note that there might be problems when author and editor occur in one work (the editor will be printed before the title), but you can circuit this by adding options = {useeditor=false} to the respective entry.

share|improve this answer
2  
@domwass, the first citation still prints the author's name in both references... –  henrique Jun 22 '11 at 1:51
    
@henrique, you are right, I now edited my answer accordingly. The code for the full citations is a bit more complicated, since \clearname{labelname} is not possible, as far as I know, so that it is necessary to check if author, editor, or translator are used. –  domwass Jun 22 '11 at 8:02
    
@domwass, thanks indeed for this. Unfortunately, when I run your example I get the following error ! Package biblatex Error: Bibliography macro 'cite:full:citepages' undefined. And the output footcite in the pdf is not right either: Arnold Author. “A and not test test and not test test and not test Arnold Author. and not test test and not test test and not test Arnold Author, 2 journal article”. In: Some Journal 6 (2006), pp. 19–75; test Some Book. Ed. by Edmund Editor. London, 2000; test ed. An edited volume. London, 2002. Is this error because I'm running biblatex 0.9a, do you think? –  MCS Jun 22 '11 at 21:34
    
@MCS: Yes, the citepages option was introduced in biblatex 0.9b. (The same might be true for the \ifboolexpr syntax, though this is from the etoolbox package.) Is there any reason you are using such an old version? There have been many improvements and bugfixes since then. In the above example, you could delete the two lines which contain citepages. It should still work. –  domwass Jun 23 '11 at 9:54
    
@domwass, thanks again for your expertise with this! I'm running the Debian Stable distribution of Linux, which is pretty behind. Installing the latest version of biblatex and its dependencies makes your example work perfectly -- thank you! Unfortunately, when I try to compile my Thesis, however, I run into problems (I think the utf8x option causes the following error: ! Package biblatex Error: Incompatible package 'ucs'.) So I can either try to find a workaround (different fontenc option, XeTex etc) or just give up and hope the thesis examiners don't notice! –  MCS Jun 23 '11 at 16:07

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.