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'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

share|improve this question
    
Are you trying to typeset lists of author publications? –  Dima Aug 4 '10 at 18:30
    
No, this style is used in regular books, along with author-year inline citations. –  Carl Mummert Aug 5 '10 at 2:28
add comment

4 Answers

up vote 8 down vote accepted

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.

share|improve this answer
    
This is close to what I was looking for, and since there is nothing closer, I will accept this. Thanks for setting it up. –  Carl Mummert Nov 5 '10 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 '12 at 15:12
add comment

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)

share|improve this answer
    
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. –  Carl Mummert Aug 5 '10 at 2:31
add comment

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

share|improve this answer
    
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 '10 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. –  Carl Mummert Nov 7 '10 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 '10 at 17:45
add comment

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

share|improve this answer
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 '11 at 10:34
    
I also added a link to the package on CTAN. –  Seamus May 18 '11 at 10:35
add comment

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.