0

Is it possible to use biblatex's \printshorthands to achieve the following two effects?

  1. I would like to have three separate lists of abbreviations, for the three authors whose works are most frequently and repeatedly cited.
  2. I would like to have each abbreviation give only the title of the work and the date.

@moewe's answer gets me very close to what I need. Here's an MWE based on that answer:

\documentclass{book}

\usepackage{fontspec}

\usepackage{microtype}

\usepackage{polyglossia}
\setmainlanguage{english}

\date{}

\usepackage[style=philosophy-classic,natbib=true,backend=biber]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@Book{Frege1967,
  Title                    = {{K}leine {S}chriften},
  Address                  = {Hildesheim},
  Author                   = {Frege, Gottlob},
  Publisher                = {Georg Olms},
  Year                     = {1967},
  Shorthand                = {\emph{KS}}
}
@Article{Russell1905b,
  Title                    = {{O}n {D}enoting},
  Author                   = {Russell, Bertrand},
  Year                     = {1905},
  Number                   = {56},
  Pages                    = {479-493},
  Volume                   = {14},
  Journal                  = {Mind},
  Shorthand                = {\emph{OD}}
}
@Book{Bradley1893,
  Title                    = {{A}ppearance and {R}eality: a {M}etaphysical {E}ssay},
  Address                  = {London},
  Author                   = {Bradley, Francis Herbert},
  Publisher                = {Swan Sonnenshein},
  Year                     = {1893},
  Shorthand                = {\emph{AR}}
}
@Article{Korselt1903,
  Title                    = {{Ü}ber die {G}rundlagen der {G}eometrie},
  Author                   = {Korselt, Alwin},
  Journaltitle             = {Jahresbericht der Deutschen Mathematiker Vereinigung},
  Year                     = {1903},
  Pages                    = {402–7},
  Shorthand                = {\emph{UGG}}
}\end{filecontents}

\addbibresource{\jobname.bib}

\newcommand*{\generateauthorcategory}[3]{%
  \DeclareBibliographyCategory{by#1}%
  \DeclareIndexNameFormat{cat#1}{%
    \ifboolexpr{test {\ifdefstring{\namepartfamily}{#2}}
                and test {\ifdefstring{\namepartgiven}{#3}}}
      {\addtocategory{by#1}{\thefield{entrykey}}}
      {}}%
  \AtDataInput{\indexnames[cat#1][1-999]{author}}}

\generateauthorcategory{frege}{Frege}{Gottlob}
\generateauthorcategory{russell}{Russell}{Bertrand}

\DeclareBibliographyDriver{shorthand}{%
  \usebibmacro{title}%
  \newunit\newblock
  \printdate}

\begin{document}

\frontmatter

\title{A Book}

\maketitle

\tableofcontents{}

\chapter*{Abbreviations}

Full details of these works are in the Bibliography.

\printshorthands[title={Works of Gottlob Frege}, category=byfrege]

\printshorthands[title={Works of Bertrand Russell}, category=byrussell]

\section*{Other Primary Sources}

\mainmatter{}

\part{Part}

\chapter{Chap}

\citet{Frege1967}

\citet{Russell1905b}

\citet{Bradley1893}

\citet{Korselt1903}

\backmatter

\printbibliography[heading=bibintoc]

\end{document}

The style I'm following requires the list of abbreviations to come before the TOC. I've tried to adapt moewe's answer by a new \chapter*{Abbreviations}. A couple of problems with the result:

  1. The abbreviations for Frege's works and for Russell's works each start on a new page, after the introductory note that the full details are in the main biblio.
  2. I still need a separate list for other authors, here Bradley and Korselt entries.
5
  • 3
    Very likely so. As far as I can reach, "1" should probably be straightforward. I suppose "2" is doable. But, what have you tried so far? Furthermore, more details on your settings are certainly necessary for you to receive properly specific answers, for which a minimal working example (MWE) / minimal working example with bibliography (MWEB) would be required.
    – gusbrs
    Dec 13 '17 at 21:21
  • Have a look at the edited answer. I'm having some trouble uploading images at the moment. Can you explain what you want with point 1 please?
    – moewe
    Dec 14 '17 at 19:47
  • @moewe. Sorry I wasn't clear with 1. On the current MWE, I get the chapter* title Abbreviations on one page, my introductory note on the following page, the shortshands from author 1, Frege, on the following page, the shorthands from author 2, Russell, on the page after that. It would be nice not to have these 4 page breaks. I'll try to upload a PDF output soon.
    – ss1789
    Dec 16 '17 at 8:07
  • I added heading=subbibliography maybe that helps. But I don't think that between \chapter*{Abbreviations} Full details of these works are in the Bibliography. there is a page break.
    – moewe
    Dec 16 '17 at 8:10
  • @moewe Great, now it works wonderfully; thanks.
    – ss1789
    Dec 17 '17 at 17:54
5

It is possible to filter certain names, for example with my solution from Add arguments to \declaresourcemap based on Audrey's solution to biblatex: filter out publications from a specific author in the references dynamically

\newcommand*{\generateauthorcategory}[3]{%
  \DeclareBibliographyCategory{by#1}%
  \DeclareIndexNameFormat{cat#1}{%
    \ifboolexpr{test {\ifdefstring{\namepartfamily}{#2}}
                and test {\ifdefstring{\namepartgiven}{#3}}}
      {\addtocategory{by#1}{\thefield{entrykey}}}
      {}}%
  \AtDataInput{\indexnames[cat#1][1-999]{author}}}

\generateauthorcategory{elk}{Elk}{Anne}
\generateauthorcategory{kant}{Kant}{Immanuel}

But it is also possible to do that with keywords manually, or automatically. See biblatex: separating publications of a specific author in the bibliography. We could also use hashes to filter the entries, that would be more accurate in cases where you have authors with very similar names, but the general procedure is bit more awkward Highlight an author in bibliography using biblatex allowing bibliography style to format it.

Of course you will still have to specify the names of the three most frequently cited authors, they are not determined automatically.

With

\DeclareBibliographyDriver{shorthand}{%
  \usebibmacro{title}%
  \newunit\newblock
  \printdate}

you only get title and date for the list of shorthands.

\documentclass{book}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{elk:bronto,
  author    = {Anne Elk},
  title     = {Theory of Brontosauruses},
  shorthand = {Bronto},
  date      = {1972},
  publisher = {Monthy and Co.},
  location  = {London},
}
@book{elk:diplo,
  author    = {Anne Elk},
  title     = {Theory of Diplodocuses},
  shorthand = {Diplo},
  date      = {1974},
  publisher = {Monthy and Co.},
  location  = {London},
}
@book{frege,
  author    = {Frege, Gottlob},
  title     = {Kleine Schriften},
  date      = {1967},
  shorthand = {\emph{KS}},
  location  = {Hildesheim},
  publisher = {Georg Olms},
}
\end{filecontents}

\addbibresource{biblatex-examples.bib}
\addbibresource{\jobname.bib}

\newcommand*{\generateauthorcategory}[3]{%
  \DeclareBibliographyCategory{by#1}%
  \DeclareIndexNameFormat{cat#1}{%
    \ifboolexpr{test {\ifdefstring{\namepartfamily}{#2}}
                and test {\ifdefstring{\namepartgiven}{#3}}}
      {\addtocategory{by#1}{\thefield{entrykey}}}
      {}}%
  \AtDataInput{\indexnames[cat#1][1-999]{author}}}

\generateauthorcategory{elk}{Elk}{Anne}
\generateauthorcategory{kant}{Kant}{Immanuel}

\DeclareBibliographyDriver{shorthand}{%
  \usebibmacro{title}%
  \newunit\newblock
  \printdate}

\begin{document}
\cite{kant:ku,kant:kpv,elk:diplo,elk:bronto,frege}

\chapter*{Shorthands}
Introductory notes on shorthands. Full details can be found in the bibliography.
\printshorthands[title={Shorthands by Kant}, heading=subbibliography, category=bykant]
\printshorthands[title={Shorthands by Elk}, heading=subbibliography, category=byelk]
\printshorthands[title={Shorthands by other authors}, heading=subbibliography, notcategory=byelk, notcategory=bykant]
\printbibliography
\end{document}

shorthands chapter of the MWE

0

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.