14

Introduction

I am required to use bibliography style, that is so far from anything made with BibLaTeX I have been able to find, that I do not have an idea how to achieve it. I am pretty confident that it is possible to achieve required style with BibLaTeX. Unfortunatelly package's documentation does not make it at all easy for beginners to find answers for this kind of questions.

I do not know if my question covers every quirk of the required style. However, I hope the answers could give me enough understanding of the system, that I could find further answers on my own.

Any help is appreciated. Partial answers can also be beneficial. For example answer to points 1-3 should already lead me to right direction. Also following kind of hints can help me to understand the system and to find my own answers. "Driver's handle this kind of stuff in BibLaTeX. Study lines xyz from file abc. This is where BibLaTeX does itself same kind of stuff for default style efg."

Style I am required to use

1) Basic formatting should be following where: (1) author's name should occupy it's own individual line; (2) followed by an year in the next line; (3) and everything else aligned similarly as default 'numeric' and 'alphabetic' styles do.

Last name, First name
Year[tab]Title. Subtitle. Publisher's address: Publisher.

2) Multiple works by same author should be combined together in a following way.

Nahin, Paul J.
2010     An Imaginary Tale The Story Of [The Square Root Of Minus One]. Princeton, NJ:
         Princeton University Press.
2011     Dr. Euler's Fabulous Formula Cures Many Mathematical Ills. Princeton, NJ:
         Princeton University Press.

3) If work does not have an author, but only editor(s) or translator(s), work's title should replace author-line like this. However the title is also present in it's normal place.

The Princeton Companion To Mathematics
2008     The Princeton Companion To Mathematics. Ed. by Timothy Gowers et. al. Princeton,
         NJ: Princeton University Press.

4) Multiple authors in author line should be separed by &-sign.

Larson, Ron & Edwards, Bruce H.
2014     Calculus. 10th ed. Boston, MA: Brooks/Cole, Cengage Learning.

5) With classical works in place of year there is a user chosen shorthand and publisher's year is put after publisher's name.

Euclid
Elms     The Elements, Books I-XIII. Complete And Unabridged. Transl. by Thomas L. Heath.
         New York: Barnes & Noble, 2006.

6) If the shorthand is missing bibliography file there should be just a dash.

Euclid
-        The Elements, Books I-XIII. Complete And Unabridged. Transl. by Thomas L. Heath.
         New York: Barnes & Noble, 2006.
  • 2
    I really like this question, and I hope we get some good instructive answers to it. – Alan Munn Jan 9 '16 at 15:49
  • 2
    It might not be exactly what you want, but have a look at Ivan Valbusa's biblatex-philosophy bundle, specifically the philosophy-modern style. The changes and trickery needed for this are not for the faint-hearted (there clearly went a lot of thought and code into getting the result), but the code is very readable and in fact much shorter than I expected it to be. – moewe Jan 9 '16 at 16:42
  • The standard answer for getting into customising biblatex styles is of course Guidelines for customizing biblatex styles and you can have a look around at other biblatex customisation questions and answers to get a feel for the matter. – moewe Jan 9 '16 at 16:49
  • May be the answer to this question could help. – Fran Jan 9 '16 at 21:54
  • 1
    @moewe Thank you for pointing out the biblatex-philosophy bundle. After two days of cutting and pasting, I managed to build quite promising solution that is based on the philosophy-modern and authoryear styles. I will post it here, when I get it cleaned up and finished. – ojs Jan 11 '16 at 19:57
2

Here is a solution based on https://tex.stackexchange.com/a/83891/16895

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@Book{a,
  author =    {Nahin, Paul J.},
  title =     {An Imaginary Tale The Story Of [The Square Root Of Minus One]},
  year =      {2010},
  publisher = {Princeton University Press},
  location =  {Princeton, NJ},
}

@Book{b,
  author =    {Nahin, Paul J.},
  title =     {Dr. Euler's Fabulous Formula Cures Many Mathematical Ills},
  year =      {2011},
  publisher = {Princeton University Press},
  location =  {Princeton, NJ},
}

@Book{c,
  title =     {The Princeton Companion To Mathematics},
  year =      {2008},
  editor =    {Timothy Gowers},
  publisher = {Pr},
  location =  {Princeton, NJ},
}

@Book{d,
  author =    {Larson, Ron and Edwards, Bruce H.},
  title =     {Calculus},
  year =      {2014},
  publisher = {Brooks/Cole, Cengage Learning},
  location =  {Boston, MA},
}

@Book{e,
  author =     {Euclid},
  title =      {The Elements, Books I--XIII. Complete and Unabridged},
  translator = {Thomas L. Heath},
  location =   {New York},
  keywords =   {classic},
  shorthand =  {Elms},
}

@Book{f,
  author =     {Euclid},
  title =      {The Elements, Books I--XIII. Complete and Unabridged},
  year =       {2006},
  translator = {Thomas L. Heath},
  location =   {New York},
  keywords =   {classic},
}  
\end{filecontents}


\usepackage[utf8]{inputenc}
\usepackage{biblatex}

\addbibresource{\jobname.bib}

\makeatletter
\newcommand{\@currentauthor}{}
\newcommand{\@current}{}
\newlength{\mybibindent}
\setlength{\mybibindent}{3em}

\renewcommand{\finalnamedelim}{\addspace\&\addspace}


\AtEveryBibitem{%
  \savename{labelname}{\@current}%
  \ifdefstrequal{\@currentauthor}{\@current}
    {\par}
    {\item[]%
      \usebibmacro{author-or-title}\par}%
    \usedriver{}{special}%
    \hspace*{-\mybibindent}\makebox[\mybibindent][l]{\usebibmacro{referencelabel}}%
}

\newbibmacro{author-or-title}{%
  \ifnameundef{author}
    {\printfield{title}}
    {\printnames[family-given]{labelname}}
}

\newbibmacro{referencelabel}{%
  \ifkeyword{classic}
    {\iffieldundef{shorthand}
      {--}
      {\printfield{shorthand}}}%
    {\printdateextra}%
}

\DeclareBibliographyDriver{special}{%
\savename{labelname}{\@currentauthor}%
}
\makeatother

\renewbibmacro{author/translator+others}{}
\renewbibmacro{author/editor+others/translator+others}{}

\defbibenvironment{bibliography}
  {\list
    {}
    {\setlength{\itemindent}{-\mybibindent}%
      \setlength{\leftmargin}{\mybibindent}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}}
  {\endlist}
  {}

\begin{document}
Hello world  \nocite{*}
\printbibliography

\end{document}

The main tricks is to get the format for the bibliography. The key trick is to store the value current and previous label name to determine if we have a new authors or the author(s) of the current entry are the same as the previous one.

Then simple conditionals can be used to determine whether to use the names of the authors or the title of the entry. Similar for classic works. Notice, that I have use a keyword to determine if a work is a classic or not (otherwise it is not clear to me how to distinguish a the case of a non-classical with shorthand with date from a classic with shorthand, but the date is the date of the modern publication).

Here is the output:

enter image description here

0

I think what you are looking for is Merlin package. You can customize bibliographic styles with it. It requires some work, though.

http://www.ctan.org/tex-archive/macros/latex/contrib/custom-bib/

Edit: I'm sorry, this is for BibTeX. Still, I leave it here in case someone needs it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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