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 using biblatex-chicago for my references. My bib file includes many references to conference papers that I have imported from the ACM digital library. The abbreviations to these conferences are often better know than the full titles of the conferences themselves. So for inproceedings entries, I have included the abbreviation using the series field. I would like to group the booktitle and series fields together.

\documentclass{article}
\usepackage[
    authordate,
    backend=biber,
    ]{biblatex-chicago} % biblatex setup

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@inproceedings{paper2012,
    author = {Smith, John},
date = {2012},
    title = {Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    series = {CHI '12},
    pages = {937-946},
    location = {New York, NY, USA},    
    publisher = {{ACM}},    
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

This example currently outputs the following:

Smith, John. 2012. “Paper Title” In Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems, 937–946. CHI ’12. New York, NY, USA: ACM.

instead I would like to change the output of inproceedings entries, so that booktitle and series fields are grouped together like this:

Smith, John. 2012. “Paper Title” In Proceedings of the 2012 ACM Annual Conference on Human Factors in Computing Systems — CHI ’12, 937–46. New York, NY, USA: ACM.

an important caveat being, that not all inproceedings entries have a series field.

is this possible with biblatex-chicago?

share|improve this question

3 Answers 3

up vote 3 down vote accepted

The other solutions suggested to used booktitleaddon instead of series. Personally I don't think that series is the right field to use. Consider for example Springer Lecture Notes in Computer Science series, publishing proceedings of computer science conference. Each book has its title (which often is different from the conference title), but the proceedings are know by the conference name of more often by they acronym. And then it is customary to include a reference to the LNCS series and the number in the series.

Biblatex, when used with biber, offers the p possibility to create a new field. I suggest to add the acronym field.

This can be done with

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{acronym}
\end{filecontents}

It creates a local biblatex configuration file.

Then we have to give the instructions on how to typeset the new field (in italics for in proceedings)

\DeclareFieldFormat[inproceedings]{acronym}{\textit{#1}}

The final step is to modify the appropriate bibmacro, in this case btitle+bstitle.

\newbibmacro*{btitle+bstitle}{% 
  \iffieldundef{booktitle}
  {}
  {\ifthenelse{\ifentrytype{audio}\OR\ifentrytype{music}\OR%
      \ifentrytype{video}}%
    {}%
    {\usebibmacro{cms-in:}}%
    \printtext{%
      \printfield{booktitle}%
      \setunit{\addcolon\addspace}%
      \printfield[booktitle]{booksubtitle}}%
      \setunit{\addspace---\addspace}%
      \ifentrytype{inproceedings}
        {\printfield{acronym}}
        {}%
    \newcunit
    \printfield{booktitleaddon}%
    \setunit*{\addcomma\addspace}}}

Notice we use \ifentrytype{inproceedings} to localise the change only to this entry type.

Here is the full MWE

\documentclass{article}
\usepackage[
    authordate,
    backend=biber,
    ]{biblatex-chicago} % biblatex setup

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@inproceedings{paper201x,
    author = {Smith, John},
date = {2012},
    title = {Paper Title},
    booktitle = {Long Title of the Confererence},
    acronym = {CONF'2012},
    pages = {937-946},
    series = {LNCS},
    number = {1234},
    location = {Heidelberg},    
    publisher = {Springer},    
}

@inproceedings{paper2012a,
    author = {Smith, John},
date = {2012},
    title = {Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    series = {CHI '12},
    pages = {937-946},
    location = {New York, NY, USA},    
    publisher = {{ACM}},    
}

@inproceedings{paper2012b,
    author = {Smith, John},
date = {2012},
    title = {Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    acronym = {CHI '12},
    pages = {937-946},
    location = {New York, NY, USA},    
    publisher = {{ACM}},    
}

\end{filecontents}

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{acronym}
\end{filecontents}

\DeclareFieldFormat[inproceedings]{acronym}{\textit{#1}}

\newbibmacro*{btitle+bstitle}{% InIn fix from N&B
  \iffieldundef{booktitle}
  {}
  {\ifthenelse{\ifentrytype{audio}\OR\ifentrytype{music}\OR%
      \ifentrytype{video}}%
    {}%
    {\usebibmacro{cms-in:}}%
    \printtext{%
      \printfield{booktitle}%
      \setunit{\addcolon\addspace}%
      \printfield[booktitle]{booksubtitle}}%
      \setunit{\addspace---\addspace}%
      \ifentrytype{inproceedings}
        {\printfield{acronym}}
        {}%
    \newcunit
    \printfield{booktitleaddon}%
    \setunit*{\addcomma\addspace}}}



\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

enter image description here

share|improve this answer

My advice would be to use the booktitleaddon field instead, since it is already designed to be printed at the location you want. However, these sorts of fields are usually pretty 'deep' in the driver, so you need to be careful to make sure your changes only affect inproceedings entries since it uses the same bibmacros as other "in-

I would do it like this: create new bibmacros and use the xpatch package to replace what's needed.

\documentclass{article}
\usepackage[
    authordate,
    backend=biber,
    ]{biblatex-chicago} % biblatex setup

\usepackage{xpatch}
\usepackage{xcolor}
\newcommand{\diff}[1]{\textcolor{red}{#1}}% <-- just to highlight differences

\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}% we need more entries...
@inproceedings{paper2012,
    author = {Smith, John},
    date = {2012},
    title = {Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    booktitleaddon = {\diff{CHI '12}},
    number = 33,
    series = {\diff{This is the series}},
    pages = {937-946},
    location = {New York, NY, USA},
    publisher = {{ACM}},
}

@inproceedings{paper2013,
    author = {Smith, John},
    date = {2013},
    title = {Different Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    booksubtitle = {\diff{With a Subtitle}},
    booktitleaddon = {CHI '12},
    number = 34,
    series = {\diff{This is the series}},
    pages = {937-946},
    location = {New York, NY, USA},
    publisher = {{ACM}},
}

@inproceedings{paper2011,
    author = {Smith, John},
    date = {2011},
    title = {Another Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    booksubtitle = {\diff{With a Subtitle \& No Booktitleaddon}},
    pages = {937-946},
    location = {New York, NY, USA},
    publisher = {{ACM}},
}

@incollection{paper2014,
    author = {Doe, Jane},
    date = {2014},
    title = {Jane's Paper Title},
    booktitle = {Collected Essays},
    booksubtitle = {\diff{With a Series and a Booktitleaddon}},
    series = {CHI '13},
    booktitleaddon = {\diff{This is the booktitleaddon (which is preceded by the normal comma)}},
    pages = {937-946},
    location = {New York, NY, USA},
    publisher = {{ACM}},
}

\end{filecontents*}

% we need our own bibmacros
\newbibmacro*{INP-btitle+bstitle}{%
  \iffieldundef{booktitle}
    {}
    {\printtext{%
       \printfield{booktitle}%
       \setunit{\addcolon\addspace}%
       \printfield[booktitle]{booksubtitle}}%
     \newcunit
     \setunit{\addspace ---\addspace}%
     \printfield{booktitleaddon}}}

\newbibmacro*{INP-mtitle+mstitle+vol+part+btitle+bstitle}{%
  \usebibmacro{INP-btitle+bstitle}%
  \iffieldundef{booktitle}
  {\setunit{\addperiod\addspace}}% Fix customc?
  {\setunit{\addcomma\addspace}}%
  \iffieldundef{maintitle}
  {}
  {\iffieldundef{volume}
    {\printtext{%
        \printfield{maintitle}%
      \setunit{\addcolon\addspace}%
      \printfield[maintitle]{mainsubtitle}}%
    \newcunit
    \printfield{maintitleaddon}}
  {\printfield{volume}%
    \printfield{part}%
    \setunit{\addspace}
    \bibstring{ofseries}%
    \setunit{\addspace}
    \printtext{%
      \printfield{maintitle}%
      \setunit{\addcolon\addspace}%
      \printfield[maintitle]{mainsubtitle}}%
    \newcunit
    \printfield{maintitleaddon}}}}


\addbibresource{\jobname.bib}

% this puts the booktitleaddon field in 'italics' only for @inproceedings entry types
\DeclareFieldFormat[inproceedings]{booktitleaddon}{\emph{#1}}
% this replaces a portion of the default inproceedings bibdriver with the macrs we defined above.
\xpatchbibmacro{inproceedings}{mtitle+mstitle+vol+part+btitle+bstitle}{INP-mtitle+mstitle+vol+part+btitle+bstitle}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

... And, as I was writing this, I see moewe posted a different solution. Part of it could be combined here so that you don't need to rewrite your bib entries. However, I still think mapping to booktitleaddon is the better field to use by default, if only because books are far more likely to have a subtitle than bibliographical information that needs to be put in the titleaddon field.

share|improve this answer
    
(... This wasn't meant to be community wiki. Somehow I accidentally tick that box far to often...) –  jon Mar 17 at 20:53

I think the position for the short title (your series field) is that of booksubtitle, so what we can do is the following:

We just change the series field for @inproccedings to booksubtitle. This of course only works if there is no entry that actually has a proper series entry, also booksubtitle needs to be empty.

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{inproceedings}
        \step[fieldsource=series, fieldtarget=booksubtitle]
    }
    \map{
      \pertype{proceedings}
        \step[fieldsource=series, fieldtarget=subtitle]
    }
  }
}

MWE

\documentclass{article}
\usepackage[
    authordate,
    backend=biber,
    ]{biblatex-chicago} % biblatex setup
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@inproceedings{paper2012,
    author = {Smith, John},
date = {2012},
    title = {Paper Title},
    booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
    series = {CHI '12},
    pages = {937-946},
    location = {New York, NY, USA},    
    publisher = {{ACM}},    
}
\end{filecontents*}

\addbibresource{\jobname.bib}
\nocite{*}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{inproceedings}
        \step[fieldsource=series, fieldtarget=booksubtitle]
    }
    \map{
      \pertype{proceedings}
        \step[fieldsource=series, fieldtarget=subtitle]
    }
  }
}

\begin{document}
  \printbibliography
\end{document}

enter image description here

share|improve this answer

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.