0

How can I remove certain fields from the citation in Biber?

My example document:

\documentclass[11pt]{article}
\usepackage[backend=biber,firstinits=true,citestyle=ieee]{biblatex} 
\addbibresource{example_library.bib}

\begin{document}

Dummy text \cite{Zaharia2012}.

\printbibliography
\end{document}

With an example library example_library.bib of:

@article{Zaharia2012,
abstract = {We present Resilient Distributed Datasets (RDDs), a distributed memory abstraction that lets programmers perform in-memory computations on large clusters in a fault-tolerant manner. RDDs are motivated by two types of applications that current computing frameworks handle inefficiently: iterative algorithms and interactive data mining tools. In both cases, keeping data in memory can improve performance by an order of magnitude. To achieve fault tolerance efficiently, RDDs provide a restricted form of shared memory, based on coarse-grained transformations rather than fine-grained updates to shared state. However, we show that RDDs are expressive enough to capture a wide class of computations, including recent specialized programming models for iterative jobs, such as Pregel, and new applications that these models do not capture. We have implemented RDDs in a system called Spark, which we evaluate through a variety of user applications and benchmarks.},
archivePrefix = {arXiv},
arxivId = {EECS-2011-82},
author = {Zaharia, Matei and Chowdhury, Mosharaf and Das, Tathagata and Dave, Ankur},
doi = {10.1111/j.1095-8649.2005.00662.x},
eprint = {EECS-2011-82},
isbn = {978-931971-92-8},
issn = {00221112},
journal = {NSDI'12 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation},
pmid = {2011},
title = {{Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing}},
year = {2012}
}

renders as: enter image description here

How can I reduce the fields and only get an Output similarly to:

[1] M. Zaharia, M. Chowdhury, T. Das, et al. "Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing". In: NSDI'12 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation (2012).

Even when adding:

\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldsource=entrykey, match=\regexp{\Actan\Z}, final]
      \step[fieldset=url, null]
      \step[fieldset=arxivId, null]
      \step[fieldset=archivePrefix, null]
    }
  }
}
\AtEveryCitekey{\clearfield{archivePrefix}\clearlist{issn}}
\AtEveryBibitem{\clearlist{archivePrefix, arxivId, issn}} 
\AtEveryBibitem{\clearlist{url}} 
\AtEveryBibitem{\clearlist{issn}}

these additional fields are not cleared.

1

Thanks to the first \step the sourcemap shown in the question only applies to entries with the entry key ctan. Since the key of the example entry is Zaharia2012, the mapping does not apply.

The shown \clearlist and \clearfield statements wouldn't work for a variety of reasons. archivePrefix is a convenience/legacy alias for the proper field eprinttype, so only \clearfield{eprinttype} would work. issn and url are fields not lists, so they would need to be cleared with \clearfield. \clearlist{archivePrefix, arxivId, issn} doesn't work because \clearlist accepts only one list name and not a whole list of them.

Since you are already using sourcemaps I suggest you clear all fields with a sourcemap.

Try

\documentclass{article}
\usepackage[backend=biber, giveninits=true, citestyle=ieee]{biblatex}

\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldset=doi, null]
      \step[fieldset=url, null]
      \step[fieldset=eprint, null]
      \step[fieldset=eprinttype, null]
      \step[fieldset=arxivId, null]
      \step[fieldset=archivePrefix, null]
      \step[fieldset=issn, null]
      \step[fieldset=isbn, null]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@article{Zaharia2012,
  archivePrefix = {arXiv},
  arxivId       = {EECS-2011-82},
  author        = {Zaharia, Matei and Chowdhury, Mosharaf
                   and Das, Tathagata and Dave, Ankur},
  doi           = {10.1111/j.1095-8649.2005.00662.x},
  eprint        = {EECS-2011-82},
  isbn          = {978-931971-92-8},
  issn          = {00221112},
  journal       = {NSDI'12 Proceedings of the 9th USENIX conference
                   on Networked Systems Design and Implementation},
  pmid          = {2011},
  title         = {Resilient distributed datasets},
  subtitle      = {A fault-tolerant abstraction for in-memory cluster computing},
  year          = {2012}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Dummy text \cite{Zaharia2012}.

\printbibliography
\end{document}

I didn't change this in the example, but from what I can see it looks as if the entry should be an @inproceedings and not an @article.


In this particular case where you want to get rid of URLs, DOIs, eprints and ISSN/ISBN you could also use the style options url=false, doi=false, eprint=false, isbn=false,. So it would be enough to load biblatex as

\usepackage[backend=biber, citestyle=ieee, giveninits=true, 
  url=false, doi=false, eprint=false, isbn=false,]{biblatex}

But those options are only available for those few fields and not for more.

  • It is still rendering the full bib resource including DOI and other deleted fields for me using PDF latex. – Georg Heiler Nov 16 '19 at 13:45
  • Thanks for the hint. Indeed. That should be proceedings. – Georg Heiler Nov 16 '19 at 13:46
  • @GeorgHeiler Oh yeah, I forgot the DOI. Sorry. Please try again. – moewe Nov 16 '19 at 13:46
  • I still see imgur.com/a/3V9hKZk the full thing - not reduced by any of the fields which are nulled out. – Georg Heiler Nov 16 '19 at 13:50
  • @GeorgHeiler Did you run LaTeX, Biber, LaTeX, LaTeX after you added the new code? Did you try the code in a new file in an empty folder? – moewe Nov 16 '19 at 13:51

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.