1

This is a follow up to 2 answered questions: Can one set up 2 kinds of shorthand lists in biblatex? and Can one use biblatex to print only title of related entry in bibliography?

I'm trying to combine these answers to produce a sectioned list of abbreviations and a sectioned bibliography.

I would like to have the section of the abbreviations of Frege's works give not the German titles but the related English titles.

David Purton's answer to the second question, defining a relatedtype={englishtitle} and a \newbibmacro*{related:englishtitle} solves the problem of having the Frege entries in the bibliography give the English titles.

In the MWE below I tried to put \usebibmacro{related:englishtitle} in a new driver \DeclareBibliographyDriver{fregeabbrevs}, to print the English Frege titles in the section of the abbreviations list:

\documentclass{book}

\usepackage[backend=biber,style=authoryear]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}

@Inproceedings{Frege1897a,
  author        = {Frege, Gottlob},
  title         = {Über die Begriffsschrift des Herrn Peano und meine eigene},
  booktitle     = {Berichte über die Verhandlungen der Königlich Sächsischen Gesellschaft der Wissenschaften zu Leipzig: Mathematisch-physische Klasse},
  date          = {1897},
  pages         = {361--378},
  volume        = {48},
  related       = {Frege1984h},
  relatedtype   = {englishtitle},
  shorthand     = {PCN},
}
@Inbook{Frege1984h,
  author   = {Frege, Gottlob},
  title    = {On Mr. Peano's Conceptual Notation and My Own},
  date     = {1984},
  pages    = {234--248},
  crossref = {Frege1984},
}
@Book{Frege1984,
  author     = {Frege, Gottlob},
  title      = {Collected Papers on Mathematics, Logic, and Philosophy},
  date       = {1984},
  location   = {Oxford},
  publisher  = {Blackwell},
  translator = {Black, Max},
  editor     = {McGuinness, Brian},
  shorthand  = {CP},
}
@Article{Moore1899,
  author       = {Moore, G. E.},
  title        = {The Nature of Judgment},
  journaltitle = {Mind},
  date         = {1899},
  volume       = {8},
  number       = {30},
  pages        = {176--193},
  shorthand    = {NJ},
}
@Book{Lewis1918,
  author         = {Lewis, C. I.},
  title          = {A Survey of Symbolic Logic},
  date           = {1918},
  location       = {Berkeley, CA},
  publisher      = {University of California Press},
  series         = {Semicentennial publications of the University of California, 1868-1918},
  shorthand  = {SL}
}
@Collection{Beaney2013,
  editor    = {Michael Beaney},
  title     = {The Oxford Handbook of the History of Analytic Philosophy},
  date      = {2013},
  publisher = {Oxford University Press},
  location  = {Oxford},
}

\end{filecontents}
\addbibresource{\jobname.bib}

% Main primary sources categories
\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{moore}{Moore}{G.\bibnamedelimi E.}

% Filter for other, i.e., not main, primary sources
\defbibfilter{notmainprimary}{%
not category=byfrege %
and not category=bymoore %
}

% Check to distinguish primary from secondary sources
\defbibcheck{primarysource}{%
\iffieldint{year}
{\ifnumless{\thefield{year}}{1936}
{}
{\skipentry}}
{\skipentry}}
\defbibcheck{secondarysource}{%
\iffieldint{year}
{\ifnumgreater{\thefield{year}}{1935}
{}
{\skipentry}}
{\skipentry}}

% Generating entries for the 3 abbreviations lists
\DeclareBiblistFilter{fregeabbrevs}{
    \filter[type=field,filter=shorthand]
}
\DeclareBiblistFilter{mainabbrevs}{
    \filter[type=field,filter=shorthand]
}
\DeclareBiblistFilter{moreabbrevs}{
    \filter[type=field,filter=shorthand]
}

% Sorting the abbreviations lists
\DeclareSortingTemplate{fregeabbrevs}{ \sort[final]{ \field{sortshorthand} } \sort{ \field{shorthand} } }
\DeclareSortingTemplate{mainabbrevs}{ \sort[final]{ \field{sortshorthand} } \sort{ \field{shorthand} } }
\DeclareSortingTemplate{moreabbrevs}{ \sort[final]{ \field{sortshorthand} } \sort{ \field{shorthand} } }

%
\newbibmacro*{related:englishtitle}[1]{%
  \entrydata{#1}{%
    \printtext{English title:}%
    \setunit{\addspace}%
    \usebibmacro{title}}}

% Drivers for printing abbreviations lists
\DeclareBibliographyDriver{fregeabbrevs}{%   
\usebibmacro{related:englishtitle}%   
\newunit\newblock   
\printdate}
\DeclareBibliographyDriver{mainabbrevs}{%   
\usebibmacro{title}%   
\newunit\newblock   
\printdate}
\DeclareBibliographyDriver{moreabbrevs}{%
\renewbibmacro*{date+extradate}{}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\addcomma\space}\newblock
\usebibmacro{title}%
\setunit{\addcomma\space}\newblock
\printdate}

% Environment for abbreviation lists, to italicize by \emph the shorthands
\defbibenvironment{abbrevs}
{\list
{\printfield[shorthandwidth]{shorthand}}
{\setlength{\labelwidth}{\shorthandwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{\emph{##1}\hss}}}
{\endlist}
{\item}

% Titles for 4 parts of Bibliography: two main authors, other primary sources, secondary sources
\defbibheading{subbibtitleonly}[\bibname]{%
\section*{#1}}

\begin{document}
\chapter*{Abbreviations}

Full details of these works are in the Bibliography.

\printbiblist[env=abbrevs,title={Works of Frege}, heading=subbibtitleonly, category=byfrege]{fregeabbrevs}
\printbiblist[env=abbrevs,title={Works of Moore}, heading=subbibtitleonly, category=bymoore]{mainabbrevs}
\printbiblist[env=abbrevs,title={Other Primary Works}, heading=subbibtitleonly, check=primarysource, notcategory=byfrege, notcategory=bymoore]{moreabbrevs}

\nocite{Frege1897a,Moore1899,Lewis1918,Beaney2013}

\chapter*{Bibliography}

\printbibliography[title={Works by Frege}, heading=subbibtitleonly, category=byfrege]
\printbibliography[title={Works by Moore}, heading=subbibtitleonly, category=bymoore]
\printbibliography[title={Other Primary Sources}, heading=subbibtitleonly, check=primarysource, notcategory=byfrege, notcategory=bymoore]
\printbibliography[title={Secondary Sources}, heading=subbibtitleonly, check=secondarysource, notcategory=byfrege, notcategory=bymoore]

\end{document}

But the result yields no titles at all:

enter image description here

So, how to put the English title, "On Mr. Peano's Conceptual Notation and My Own," after PCN, and before the date?

Another couple of questions:

  • There is a period after "The Nature of Judgment", but a comma after A Survey of Symbolic Logic; how can I make them uniformly commas?
  • Can the comma be made to appear inside the closing quote of the title, i.e.: "The Nature of Judgment,"?
2

Use

\DeclareBibliographyDriver{fregeabbrevs}{%   
  \iffieldequalstr{relatedtype}{englishtitle}
    {\entrydata{\thefield{related}}{\usebibmacro{title}}}
    {}%   
  \newunit\newblock   
  \printdate}

to get the English title.

Your punctuation is not uniform because all \DeclareBibliographyDrivers but \DeclareBibliographyDriver{moreabbrevs} use \newunit while the latter uses \setunit{\addcomma\space}. You can either define \renewcommand*{\newunitpunct}{\addcomma\space} and use \newunit; or you use \setunit{\addcomma\space} everywhere. What is better depends on what you want in the actual bibliography. If you want commas there as well, use \renewcommand*{\newunitpunct}{\addcomma\space}; if you want to keep the full stops there, you need to go for explicit \setunit{\addcomma\space} elsewhere.

The comma is moved inside the quotation marks if you load babel with the american language option.

| improve this answer | |
  • For some reason I can only move the comma inside with \usepackage[american]{babel} \usepackage[english=american]{csquotes} Using \usepackage{polyglossia} \setmainlanguage[variant=american]{english} doesn't work. But alas I need fontspec; are the commands I'm using for polyglossia incorrect? Or is there some other method for working with polyglossia? – ss1789 Feb 13 '18 at 15:03
  • @ss1789 In your MWE it is enough to just load \usepackage[american]{babel}. It also worked for me with \usepackage{csquotes}, the exact settings of csquotes are not relevant here. – moewe Feb 13 '18 at 15:08
  • @ss1789 Ah OK. You can use babel with XeLaTeX/LuaLaTeX and fontspec, you don't have to use polyglossia. If you are writing in English I would even prefer babel over polyglossia. polyglossia support in biblatex is not perfect and polyglossia development seems to have stalled in recent years. – moewe Feb 13 '18 at 15:10

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.