11

When taking notes in my research notebook, I often end up citing many papers because the paper I am writing a summary of has cited them: I want to record adequate justification of each claim, and I want to be able to track down the sources if I need to in the future.

However, it is not practical for me to stop and read every reference the current paper is citing. Therefore, some of my the references in my notebook I have read, and some I have not read. This bothers me, because they are not explicitly marked as such in the actual document.

How can I cite my Bibtex sources (I am actually using JabRef with biber under Miktex/Texstudio) in such a way that I can distinguish those I have read from those I haven't?

What logical levels I want

Ideally, I would like three classes:

  • References I have read
  • References I haven't read but intend to read
  • References I haven't read and don't plan to

But if only binary discrimination is possible, the last two can be collapsed into a single group.

What I want it to look like

Ideally, I would like each class of reference be marked when it is referenced. For instance:

It has recently been discovered that water is wet[1] and the sky is blue[+2], but it is still controversial whether a pound of iron is heavier than a pound of cotton[-3].

Here, [1] is a reference I have read, [+2] is a reference I haven't read but plan to, and [-3] is a reference I don't want to read. The actual format doesn't matter, so long as it's compatible with major citation styles (numerical and author-year) - it can be stars, daggers, color, kind of bracket, font, a letter, etc. (though simple is better)

Then the bibliography would look like so:

1. Brooks, R. Surprising fluidic characteristics of dihydrogen monoxide. Journal of Fluidic Chemistry 30 (July 2013), 40-52.

+2. Brown, N., Blum, M., Maruyama, E., and Martinez, P. A novel, powerful spectrometric method for evaluating chromaticity. Proceedings of the Royal Astrological Society (May 1999).

-3. Martinez, M., and Morrison, R. T. Which one is heavier: Separating facts from fiction. 17th International Conference of Boring Arguments (Oct. 2012).

Again, the exact symbols don't matter. Alternatively to this scheme, it would also be fine if it could output three separate bibliographies, with each class of reference in its own bibliography.

I would prefer to be able to tell at a glance which references I've read and which ones I haven't both in the text and the bibliography(ies), but if that is hard, then it would suffice if I could by looking at the bibliography only.

4
  • 2
    If you want to mark this information in the entry, it is simply a matter of adding the info to the entry. If you use the keywords field for biblatex, then you can have biblatex spit out different ref. lists according to keywords. You can also add arbitrary fields to a BibTeX (or biblatex) entry: both engines will quietly ignore any fields they have not been instructed to use. Thus an field in the form of @article{key, ... SuperbestRead = {notyet} ...} will surely be ignored. Note if you want the output to be different based on a 'yes|no|todo' distinction, the answer is more involved.
    – jon
    Jun 13 '14 at 3:41
  • @jon I've added a better description of what I want. I think you have the right idea.
    – Superbest
    Jun 13 '14 at 5:48
  • It is not exactly the same question, but I'd like to know how to achive the same thing, but leaving the reference as it is (that is, [1] in the text, but [1*] in the bibliography).
    – Clément
    Jun 13 '14 at 13:52
  • This answer could probably be a good starting point.
    – Clément
    Jun 13 '14 at 13:57
5

An alternative would be to split your bibliography into three sub-bibliographies, again thanks to biblatex. You filter them with keywords, and add a prefixnumber to every one of them.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=bibtex]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@article{Hubert2013,
author={Hubert, Michel},
title={A First Example},
journal={An example of journal},
year=2013,
keywords={to-be-read}
}
@article{Hubert2012,
author={Hubert, Michel},
title={A Second Example},
journal={An example of journal},
year=2012,
keywords={read}
}
@article{Hubert2011,
author={Hubert, Michel},
title={A Third Example},
journal={An example of journal},
year=2011,
keywords={other}
}
\end{filecontents*}
\addbibresource{bib}
\begin{document}
\cite{Hubert2011, Hubert2012, Hubert2013}
\printbibliography[heading=subbibliography,
    title={To be read},
    keyword=to-be-read,
    prefixnumbers=+]
\printbibliography[heading=subbibliography,
    title={Read},
    keyword=read]
\printbibliography[heading=subbibliography,
    title={Not to be read},
    keyword=other,
    prefixnumbers=-]
\end{document}

An example of the output
(source: toile-libre.org)

The bonus point is that you just have to change the keyword to change its citation key.

The bad news is that your bibliography is necessarily slitted into three sub-bibliography.

1
  • Note that I have no idea if this answer is compatible with biber, for I never used it.
    – Clément
    Jun 14 '14 at 20:40
7

The recent-developed Bibulous project makes this easy to implement. Taking the OP's example, we have a database file (readtag.bib) in which a readtag field is inserted into each entry:

@article{Brooks2013,
  author = {R. Brooks},
  title = {Surprising fluidic characteristics of dihydrogen monoxide},
  journal = {Journal of Fluidic Chemistry},
  volume = 30,
  month = 7,
  year = 2013,
  pages = {40-52},
  readtag = {{}}
}

@article{Brown1999,
  author = {N. Brown and M. Blum and E. Maruyama and P. Martinez},
  title = {A novel, powerful spectrometric method for evaluating chromaticity},
  journal = {Proceedings of the Royal Astrological Society},
  month = 5,
  year = 1999,
  readtag = {+}
}

@inproceedings{Martinez2012,
  author = {M. Martinez and R. T. Morrison},
  title = {Which one is heavier: Separating facts from fiction},
  booktitle = {17th International Conference of Boring Arguments},
  month = 10,
  year = 2012,
  readtag = {-}
}

Next we can develop a style file (readtag.bst) that makes use of the readtag field:

TEMPLATES:
article = \textbf{[<readtag>]<citenum>}. <au>, <title>. \textit{<journal>}[ <volume>] ([<month.monthabbrev()> ]<year>)[, <startpage>--<endpage>|, <startpage>|, <eid>].
inproceedings = \textbf{[<readtag>]<citenum>}. <au>, <title>. \textit{<booktitle>}[ <volume>] ([<month.monthabbrev()> ]<year>)[, <startpage>--<endpage>|, <startpage>|, <eid>].

SPECIAL-TEMPLATES:
citelabel = (<citenum>)
readtag = -                     ## default tag is "have not read"

OPTIONS:
namelist_format = last_name_first

Finally, we can use the readtag.tex file

\documentclass{article}
\makeatletter
   \renewcommand{\@biblabel}[1]{}
   \renewcommand{\@cite}[2]{{#1\if@tempswa , #2\fi}}
\makeatother

\begin{document}
It has recently been discovered that water is wet\cite{Brooks2013} and the sky is blue\cite{Brown1999}, but it is still controversial whether a pound of iron is heavier than a pound of cotton\cite{Martinez2012}.

\bibliographystyle{readtag}
\bibliography{readtag}
\end{document}

The \renewcommand{\@cite}... line here is used here to allow the citation labels in the text to be different than those in the reference list. Compiling readtag.tex and replacing BibTeX with Bibulous as the bibliography engine gives the resulting formatted reference list

enter image description here

2
  • So this requires me to switch from biber to bibulous?
    – Superbest
    Jun 13 '14 at 20:23
  • @Superbest: yes, Bibulous is not compatible with biber, since both are intended as BibTeX replacements. Installing Bibulous is as easy as installing Python, downloading bibulous.py and letting your IDE know to use it instead of BibTeX or Biber.
    – nzh
    Jun 13 '14 at 22:51
1

A first step toward a simpler solution, that uses biblatex, could be to use the shorthand field. From the biblatex manual:

field (literal) A special designation to be used by the citation style instead of the usual label. This field is intended for citation aliasing. If defined, it overrides the default la- bel. If any of the cited bibliography entries includes a shorthand field, biblatex automatically builds a list of shorthands which may be printed in addition to the regular bibliography; see § 3.5.3 for details. See also label.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=bibtex]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@article{Hubert2013,
author={Hubert, Michel},
title={A First Example},
journal={An example of journal},
year=2013,
shorthand={+1}
}
@article{Hubert2012,
author={Hubert, Michel},
title={A Second Example},
journal={An example of journal},
year=2012,
shorthand={-2},
}
@article{Hubert2011,
author={Hubert, Michel},
title={A Third Example},
journal={An example of journal},
year=2011,
shorthand={3},
}
\end{filecontents*}
\addbibresource{bib}
\begin{document}
\cite{Hubert2011, Hubert2012, Hubert2013}
\printbibliography
\end{document}

An example of output
(source: toile-libre.org)

The bad point is that it is not compatible with any citation style: you have to define by hand the key that will appear in your document!

1
  • Note that I have no idea if this answer is compatible with biber, for I never used it.
    – Clément
    Jun 14 '14 at 20:41

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.