19

I'm looking for a BibTeX style that formats the reference list at the end in the way shown below. The key points are:

  • The references are sorted by the (list of) authors, and then each author has a list of references keyed by year.
  • Each author has a full line for the name, and then the references for that author are listed below with no name, not even "—"

I'm not too worried about the exact punctuation; if I had any class that sorted by authors, I could hack the punctuation if I had to.

I have seen this style in various books. One modern example is Jech's Set Theory, 3rd edition. But I have never found a BibTeX style that generates this kind of output.


Example of desired output:

Jones, Sam 
[2001] "Paper", Journal, etc
[2002] "Other paper", Journal, etc

Lewis, Jo
[1999a] Some book, Publisher, etc
[1999b] "Another paper", Big Journal, etc

2
  • Are you trying to typeset lists of author publications?
    – Dima
    Aug 4, 2010 at 18:30
  • No, this style is used in regular books, along with author-year inline citations. Aug 5, 2010 at 2:28

4 Answers 4

9

I finally managed to create a solution using biblatex. This package by default replaces recurring author or editor names with a dash, and the macros involved can be redefined to achieve "grouping by author":

  • Set the \bibnamesep length (which controls the spacing between different authors) to a positive value;
  • Redefine \bibnamedash (which is invoked to typset the "recurring" dash) to do nothing;
  • Create a new macro \authoryearpunct that a) starts a new line b) for this line, undoes the hanging indentation controlled by the \bibhang length c) capitalizes the following string (e.g. "Editor")
  • Insert this macro at the appropriate places (whenever author/editor names are actually typeset);
  • Reformat the year (brackets instead of braces, no period).

Annotations like "Editor" and "Translator" will be typeset at the start of the new line, which accounts for the possibility that the same person is author of one cited work and editor/translator of another.

EDIT: Your style example includes no works with editor instead of author. That said, it should be possible to put the "editor" annotation after the year (immediately before the title).

\documentclass{article}

\usepackage[style=authoryear]{biblatex}

\setlength{\bibnamesep}{\baselineskip}
\renewcommand*{\bibnamedash}{}
\newcommand*{\authoryearpunct}{\\\hspace*{-\bibhang}\bibsentence}
\renewcommand*{\labelnamepunct}{\addspace}

\makeatletter

\renewbibmacro*{date+extrayear}{%
  \iffieldundef{year}
    {}
%    {\printtext[parens]{\printdateextra}}}% DELETED
    {\printtext[brackets]{\printdateextra}}}% NEW

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\usebibmacro{bbx:savehash}%
        \printnames{author}%
%   \iffieldundef{authortype}% DELETED
%     {\setunit{\addspace}}% DELETED
%     {\setunit{\addcomma\space}}}% DELETED
    \setunit{\authoryearpunct}}% NEW
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
    \setunit{\addspace}}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\addspace}}%
  \usebibmacro{date+extrayear}}

\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{editor}%
%   \setunit{\addcomma\space}% DELETED
    \setunit{\authoryearpunct}% NEW
    \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\addspace}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\addspace}}%
  \usebibmacro{date+extrayear}}

\renewbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{translator}%
%   \setunit{\addcomma\space}% DELETED
    \setunit{\authoryearpunct}% NEW
    \usebibmacro{bbx:savehash}}%
     \usebibmacro{translator+othersstrg}%
     \clearname{translator}%
     \setunit{\addspace}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\addspace}}%
  \usebibmacro{date+extrayear}}

\makeatother

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{a01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{a02,
  author = {Author, A.},
  year = {2002},
  title = {A title that goes to great lengthts in expounding the matter at hand and therefore doesn't fit into one line},
}
@misc{b03,
  editor = {Buthor, B.},
  year = {2003},
  title = {Bravo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

EDIT: Somehow this worked without the \makeatletter-\makeatother combo. Added nevertheless.

2
  • This is close to what I was looking for, and since there is nothing closer, I will accept this. Thanks for setting it up. Nov 5, 2010 at 12:30
  • 1
    @lockstep: Thanks for the code! However, there's a minor bug: if an entry doesn't have a date/year (for whatever reason), then no line break will be inserted. If I insert a \newline before each instance of \setunit{\authoryearpunct} instead of inserting a newline in \authoryearpunct itself things seem to work better.
    – Zhen Lin
    Feb 4, 2012 at 15:12
4

Try the biblatex-philosophy style, it does exactly what you want.

3
  • 1
    Welcome to TeX-SX. From what I can tell, biblatex-philosophy is a collection of three distinct styles. Could you explain which one does what the questioner needed and how to achieve it? I couldn't see from the documentation how to achieve this. (The documentation of biblatex-philosophy on CTAN is in italian only, so I may have missed something.)
    – Seamus
    May 18, 2011 at 10:34
  • I also added a link to the package on CTAN.
    – Seamus
    May 18, 2011 at 10:35
  • 1
    The interesting style here is philosophy-modern.
    – moewe
    Sep 30, 2015 at 16:27
3

The jurabib style/package is able to do something sort of like this, if you use it with the bibformat=ibidemalt option.

\usepackage[bibformat=ibidemalt]{jurabib}

It will group references by author name but it won't put the year in front of each one.

I would suggest contacting the authors or publishers of books you've seen that use this format, and ask if any of them were prepared using LaTeX and if so, could they point you to a BibTeX style file that does what you want. If not, you could try to prepare a custom style file that does it for you, probably by copying jurabib.sty and modifying it. BibTeX uses a wacky language to define styles, but once you spend some time with it, it's not too opaque. (Alternatively: search this site for a mention of biblatex, which might be easier if it works for you)

1
  • I'm quite certain some of the books were typeset in some form of TeX (apart from the obvious appearance, the copyright page of Jech's book explicitly says so). But for all I know the bibliography was typed manually. Aug 5, 2010 at 2:31
2

Since neither of the answers was very satisfying, I spent an afternoon with btxhak.pdf learning BibTex. I modified the amsalpha style to produce the type of output I was looking for. This is just a rough hack; it would need to be proofread very carefully for any production document. But it does seem to do the job. Since there is no way to post files here, all I can do is link to them: example pdf and source code .tar.gz

4
  • In example.pdf, the format for author names is first name - last name, which is inconsistent with the specification in your original question.
    – lockstep
    Nov 7, 2010 at 21:21
  • Yes, you're right. That would be fixable in the bst file with more work. It's like that because I didn't know any bibtex, so I started with an existing file and went from there. Now that I have done it, I see that it would not be extremely hard to simply reimplement everything from scratch, which make it easier to control the formatting. The AMS code is somewhat convoluted so it's not trivial to change formatting in it. I'm leaving your solution marked as accepted, in any case. But I don't know biblatex, unfortunately. I wanted to post the bst file here in case someone might find it useful. Nov 7, 2010 at 23:15
  • I'm sorry for being snippy in my first comment, and I applaud your progress in tweaking amsalpha to fit your proposed style.
    – lockstep
    Nov 9, 2010 at 17:45
  • Could you revise the link of the files which isn't useful any more?
    – M. Logic
    Sep 9, 2021 at 1:15

You must log in to answer this question.

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