1

The answer of moewe appearing in this question is almost what I want to achieve:

  • one bibliography containing online references which are numbered and sorted in order of appearence (nothing to change here, moewes code is perfect!)
  • one bibliography containing all book and article references, sorted alphabetically (almost what I want!)

For the second bib, instead of only showing three letters of the authors followed by the last two numbers of the year, e.g [Sut68], I would instead like to have the full last name of the first author, followed by a comma, space and then the full year, e.g [Sutherland, 1968].

I have literally no idea how to achieve this, I tried messing around with moewes provided code, but could not find any solution apart from breaking it. I would highly appreciate if someone could just post the changed part to achieve this!

Thank you guys in advance!

Edit: Here is the code moewe provided in the answer from the question above, if that helps:

\documentclass{article}

\usepackage{filecontents}

\begin{filecontents}{biblatextest1.bib} @BOOK{BookA03, author = {Author Aaa}, title = {Some Title}, publisher = {Some Publisher}, year = 2003, } @BOOK{BookB02, author = {Author Bbb}, title = {Some Title}, publisher = {Some Publisher}, year = 2002, } \end{filecontents}

\begin{filecontents}{biblatextest2.bib} @MISC{LinkC04, author = {Author Ccc},
title = {Some Title}, year = 2004, url = {www.test1.com/bild.jpg}, } @MISC{LinkD01, author = {Author Ddd}, title = {Some Title}, year = 2001, url = {www.test2.com/bild.jpg}, } \end{filecontents}

\usepackage[style = alphabetic, labelnumber, defernumbers = true, backend = biber]{biblatex} \addbibresource{biblatextest1.bib} \addbibresource{biblatextest2.bib}

\usepackage{hyperref}

%Append keywords to identify different bibliography entries. \DeclareSourcemap{ \maps[datatype=bibtex, overwrite]{ \map{ \perdatasource{biblatextest1.bib} \step[fieldset=KEYWORDS, fieldvalue=primary, append] } \map{ \perdatasource{biblatextest2.bib} \step[fieldset=KEYWORDS, fieldvalue=secondary, append] } } }

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}} \renewbibmacro*{cite}{% \printtext[bibhyperref]{% \printfield{labelprefix}% \ifkeyword{secondary} {\printfield{labelnumber}} {\printfield{labelalpha}% \printfield{extraalpha}}}}

\defbibenvironment{bibliographyNUM} {\list {\printtext[labelnumberwidth]{% \printfield{prefixnumber}% \printfield{labelnumber}}} {\setlength{\labelwidth}{\labelnumberwidth}% \setlength{\leftmargin}{\labelwidth}% \setlength{\labelsep}{\biblabelsep}% \addtolength{\leftmargin}{\labelsep}% \setlength{\itemsep}{\bibitemsep}% \setlength{\parsep}{\bibparsep}}% \renewcommand*{\makelabel}[1]{\hss##1}} {\endlist} {\item}

\assignrefcontextkeyws[sorting=none]{secondary} \begin{document}

The first two citations \cite{LinkD01} and \cite{BookB02}. The others are \cite{LinkC04} and \cite{BookA03}.

\printbibliography[title=Bibliography, keyword=primary]

\newrefcontext[sorting=none] \printbibliography[env=bibliographyNUM,title=References, keyword=secondary, resetnumbers] \end{document}

This yields following result (also provided by moewe):

Result

As I already said, I only really want [EXA97] to be changed to [Example, 1997]. Though, it would be much much nicer to not have the whole brackets in the bibliography at all! Here a optimal solution I would love to have (I edited this in photoshop, as I have no Idea how to achieve this):

Perfect Solution

  • 2
    Questions seeking debugging help ("why isn't this code working?") must include the desired behavior, a specific problem or error and the shortest code necessary to reproduce it in the question itself. Questions without a clear problem statement are not useful to other readers. See minimal working example (MWE). – Henri Menke Sep 24 '18 at 01:51
  • I edited the post and hope all information is now provided! – LaMahuni Sep 27 '18 at 14:39

1 Answers1

1

The approach is similar to Biblatex: Two bibliographies with different styles and sortings, but this time we take authoryear as a base and copy its definition of cite.

\documentclass{article}
\usepackage[style = authoryear, labelnumber, defernumbers = true, backend = biber, autocite=inline]{biblatex}
\usepackage{hyperref}

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifkeyword{secondary}
       {\printtext[bibhyperref]{%
          \printfield{labelprefix}%
          \printfield{labelnumber}}}
       {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
          {\usebibmacro{cite:label}%
           \setunit{\printdelim{nonameyeardelim}}}
          {\printnames{labelname}%
           \setunit{\printdelim{nameyeardelim}}}%
        \usebibmacro{cite:labeldate+extradate}}}
    {\usebibmacro{cite:shorthand}}}

\DeclareCiteCommand{\parencite}[\mkbibbrackets]
  {\usebibmacro{prenote}}%
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\parencite}[\mkbibbrackets]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{citeyear}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\defbibenvironment{bibliographyNUM}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\assignrefcontextkeyws[sorting=none]{secondary}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{BookA03,
  author    = {Author Aaa},
  title     = {Some Title},
  publisher = {Some Publisher},
  year      = 2003,
  keywords  = {primary},
}
@BOOK{BookB02,
  author    = {Author Bbb},
  title     = {Some Title},
  publisher = {Some Publisher},
  year      = 2002,
  keywords  = {primary},
}
@MISC{LinkC04,
  author    = {Author Ccc},  
  title     = {Some Title},
  year      = 2004,
  url       = {www.test1.com/bild.jpg},
  keywords  = {secondary},
}
@MISC{LinkD01,
  author    = {Author Ddd},
  title     = {Some Title},
  year      = 2001,
  url       = {www.test2.com/bild.jpg},
  keywords  = {secondary},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}

The first two citations \autocite{LinkD01} and \autocite{BookB02}. 
The others are \autocite{LinkC04} and \autocite{BookA03}.

\printbibliography[title=Bibliography, keyword=primary]

\newrefcontext[sorting=none]
\printbibliography[env=bibliographyNUM,title=References, keyword=secondary, resetnumbers]
\end{document}

The first two citations 1 and Bbb 2002. The others are 2 and Aaa 2003.//Bibliography//Aaa, Author (2003). Some Title. Some Publisher.//Bbb, Author (2002). Some Title. Some Publisher.//References//[1] Ddd, Author (2001). Some Title. url: www.test2.com/bild.jpg.//[2] Ccc, Author (2004). Some Title. url: www.test1.com/bild.jpg.

A version that works for the outdated biblatex version on Overleaf can be found at https://v1.overleaf.com/read/cppjsymdshwd. The necessary changes were minute: It is enough to replace cite:labeldate+extradate with cite:labelyear+extrayear.

moewe
  • 175,683
  • You, Sir, are the best!!! – LaMahuni Sep 27 '18 at 16:04
  • @LaMahuni If the answer solved your question you may want to consider accepting it https://tex.stackexchange.com/help/someone-answers – moewe Sep 27 '18 at 16:21
  • I was probably happy to early.. If I copy your code into a new project, it gives me the error "Package biblatex Error: Bibliography macro 'cite:labeldate+extradate' undefined." Also one more change if possible: I would like to still have the brackets around the numbers and name/year in the text itself! Just not in the first bibliography. – LaMahuni Sep 27 '18 at 16:28
  • @LaMahuni Then your biblatex version is too old. Can you make an update? – moewe Sep 27 '18 at 16:34
  • I am using the online version of overleaf, this should be the newest version, shouldn't it? – LaMahuni Sep 27 '18 at 17:05
  • @LaMahuni No, Overleaf are running an outdated system. Try replacing cite:labeldate+extradate with cite:labelyear+extrayear, but there could be more rough edges. – moewe Sep 27 '18 at 19:59
  • @LaMahuni See the edit, please. I have included a link to a version that runs on Overleaf. – moewe Sep 27 '18 at 20:15
  • Your edit worked, thank you so much! The only last noteble thing is that hovering over the authors name does not offer the link to the bibliography, only hovering over year does.. Is there a possible fix for that? – LaMahuni Sep 27 '18 at 21:08
  • @LaMahuni Full links are not the default in biblatex. Only the unambiguous part of a label is linked. Have a look at https://tex.stackexchange.com/q/15951/35864 and the host of linked questions for more. – moewe Sep 27 '18 at 21:17
  • Okay, then I mark this as answered. Thanks again! – LaMahuni Sep 27 '18 at 21:22