What is your workflow for managing references? How does this workflow scale?

Do you use programs like zotero, mendeley, jabref? What are their pros and cons?

Does it allow easy integration of BibLaTeX or it is BibTeX only?

  • 1
    This might work best as a CW?
    – Seamus
    May 23, 2011 at 12:00
  • 3
    This all seems a bit diffuse to me. @Seamus has done a good job of trying to answer the various parts, but without a bit more detail some of it is quite hard. For example, 'workflow' depends on the editor you use.
    – Joseph Wright
    May 23, 2011 at 12:10
  • 1
    To make clearer what @Joseph has in mind: please list what features/properties your "dream" workflow should have, and the answers you get will be much more focused. Generic and subjective questions ("best" is obviously different for different disciplines and users), while acceptable, are frowned upon on TeX-SE. May 23, 2011 at 12:14
  • @Seamus, yeah, propably it will be better as a CW and/or break it seperate questions. @Martin I am just trying to get ideas... Currently my references are manageable even by hand, but I am a bit worried about the scaling.
    – pmav99
    May 23, 2011 at 12:28
  • 1
    Take a look at the answers to tex.stackexchange.com/q/1612/86 as it might give you some ideas (for context, imagine collaborating with yourself!). May 23, 2011 at 13:12

4 Answers 4


I use Zotero and I found this workflow works well so far, let me know if you find a better way to get the same job done. The following workflow will provide

automated human-error-proof bibliography citation in LaTeX, or a road map for bibliogrpahy management and citation in PhD thesis

Workflow settings:

The below workflow makes use of Zotero citation manager + biblatex + Biber backend + TexStudio as text editor in order to automate the whole process of bibliography citation in LaTeX, finally, without manual data entry which is prone to human error. Zotero is doing all of the heavy work of capturing citations from the web and nicely tagging them (I prefer all references to be in one folder for one project, so that tagging can be more efficiently utilized to find relevant entries). For differences between different packages and backends in LaTeX, this can be of help. TexStudio is easy to learn, and well documented, feature-full, intuitive, and supports both biblatex and biber, you might want to read this blog for more info. But first, you have to tweak of all these tools in order to get there, and as follows:

Zotero citation manager:

It is a versatile bibliography management tool. You should know how to use Zotero by reading the documentation and tutorials and assuming you have a data bank of all references in this open-source free software, you want now to export these entries into another file of .bib extension to be used by biblatexin LaTeX file. Keep Zotero backup folder at a different path from FireFox default.

  • Download the bibtex-citep.js translator from here

  • Add this file to translators folder of Zotero, to know this path in your platform, open Zotero -> Tools -> Options -> Advanced -> Files and Folders Tab, under Data Directory Locations (from here also you can custom a different path from Firefox to any safe location you like) -> Show Data Directory: this will show you the directory of Zotero if you forget where it is, then add the downloaded file of translator into translators folder

  • Edit bibtex-citep.js file using any text editor of your liking, I use NotePad++ and change two lines only as shown below, this will let you do copy and paste of the citation key only from within Zotero of particular reference(s) into LaTeX document without being surrounded by ad hoc markup strings:

    //Zotero.write((first ? "\\citep{" : ",") + citekey); //original one commented out to be
    Zotero.write(citekey); //replaced by doctorate  
    first = false;  
    //Zotero.write("}"); //original line commented out to be...  
    Zotero.write("");// replaced by doctorate  
  • From Zotero options, go to Export tab and select BibTex-citep from drop down menu of Defualt Output Format, this step just to enable the use of Ctrl+Shift+C shortcut after hacking BibTex-citep translator, no more. The export format will be, according to the update below, in the more elegant biblatex format.

Zotero (version 4.0.17) has updated the export list and thankfully included the BibLaTex format (see image below). This means that the way to the big moment was greatly shortened, and you can happily skip all of the above steps.
enter image description here

  • Now, here is the big moment, every time you want to cite a reference, all what you have to do, is to select that/those reference(s) and copy from within Zotero into the clipboard by pressing Ctrl+Shift+C and paste that into your LaTeX document in the text editor of your like, this will auto-magically generate the citation key which is unique to each data entry, do not waste your time generating your own, you will forget many of them after a while, let the keys be generated in silico, without introducing human error, the keys will be generated by combination of author_title_year and those keys are going to be identified by biblatex since they are the same in the .bib file exported from Zotero; trust me open the file and see them by your own eyes.

  • If you discover any typo or fields lacking in the bibliography always do the corrections from within Zotero and not from within the .bib file, as the latter would be always updated based on ever changing Zotero database. Therefore, it is very important to make sure that you export the most recent Zotero database before compiling your PDF. Additionally, if you want to do some formatting stuff to some words in your titles or anything else, e.g. species names, the radical way to do it, is from within Zotero itself once and for all, see my answer here, alternatively you have to do latex mark-up from within your exported .bib file each time exported, which I don't think is an elegant solution.

  • To export the .bib file, you select the whole database of Zotero and right click then choose export itmes, select BibLaTeX format and not the BibTex-citep or BibTex, save the .bib file in the path location where your .tex file can identify

TexStudio Text Editor:

  • Options -> Configure TexStudio -> Build; change Default Bibliography to biber

  • Options -> Configure TexStudio -> Build; change Default Compiler to XeLaTeX to support some fonts, otherwise keep the default

  • After finishing your .tex file, compile by pressing F6+F11+F6 as shortcut to LaTeX typesetting, bibliography biber backend, and LaTeX typesetting again

Biblatex customization:

  • This is the most difficult step and requires reading the manual to customize styles

  • I came up with the one style, originally taken from here with some tweak to get rid of some fields in exported .bib file in bibtex format from Zotero, you can change it as you like, see the comments in the below code

  • Please note that I used \begin{filecontents}{\jobname.bib} to \end{filecontents} of this code you don't need to do your own bibliography, but this is only to have a minimal working example (MWE) here in this post. Typically, what would you like to do in your own case is to uncomment this line, instead, to feed biblatex with your own .bib file that was exported from Zotero; \addbibresource{C:/Users/Dropbox/phd/ref/Exported Items.bib}

  • Don't forget to press F6+F11+F6 in TexStudio to compile your PDF file. Done!


%=====================Language, Fonts============================  
\usepackage{courier,amsmath,amsfonts} %fonts
\usepackage{xcolor} %
\usepackage{hyperref} %
    colorlinks, linkcolor={dark-red},
    citecolor={dark-blue}, urlcolor={medium-blue} %url can be magenta 
\usepackage{filecontents} % just to provide a .bib file for the MWE, comment out if you have your own .bib file that can be fed into biblatex by \addbibresource{C:/Users/Dropbox/ph...etc, you can find this line below, just uncomment it and add your own .bib file
    title = {Bacterial type {IV} secretion systems: versatile virulence machines},
    volume = {7},
    issn = {1746-0921},
    shorttitle = {Bacterial Type {IV} secretion systems},
    doi = {10.2217/fmb.11.150},
    number = {2},
    journal = {Future microbiology},
    author = {Voth, Daniel E and Broederdorf, Laura J and Graham, Joseph G},
    month = feb,
    year = {2012},
    note = {{PMID:} 22324993},
    keywords = {Bacterial Proteins, Bacterial Secretion Systems, {DNA}, Bacterial, Gram-Negative Bacteria, Gram-Negative Bacterial Infections, Host-Pathogen Interactions, Humans, must read, Protein Transport, review, Signal Transduction, Species Specificity, {T4SS}, Transcription, Genetic, Ubiquitination, Virulence Factors},
    pages = {241--257}
    title = {{IL-12} family cytokines: immunological playmakers},
    volume = {13},
    copyright = {© 2012 Nature Publishing Group, a division of Macmillan Publishers Limited. All Rights Reserved.},
    issn = {1529-2908},
    shorttitle = {{IL-12} family cytokines},
    url = {http://www.nature.com/ni/journal/v13/n8/full/ni.2366.html},
    doi = {10.1038/ni.2366},
    language = {en},
    number = {8},
    urldate = {2012-11-20},
    journal = {Nature Immunology},
    author = {Vignali, Dario A. A. and Kuchroo, Vijay K.},
    year = {2012},
    keywords = {{IL-12} family, key reference, language, review},
    pages = {722--728}  
    title = {{PCR} Troubleshooting and Optimization: The Essential Guide},
    isbn = {9781904455721},
    shorttitle = {{PCR} Troubleshooting and Optimization},
    language = {en},
    publisher = {Horizon Scientific Press},
    author = {Kennedy, Suzanne},
    month = jan,
    year = {2011},
    keywords = {{PCR} troubleshooting, Polymerase Chain Reaction, {qPCR}, Science / Chemistry / General, Science / Life Sciences / Genetics \& Genomics}
    title = {Pathogenesis of \textit{Helicobacter pylori}-related gastroduodenal diseases from molecular epidemiological studies},
    volume = {2012},
    issn = {1687-6121},
    url = {http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3398592/},
    doi = {10.1155/2012/371503},
    urldate = {2013-01-01},
    journal = {Gastroenterology Research and Practice},
    author = {Yamaoka, Yoshio},
    year = {2012},
    note = {{PMID:} 22829807
{PMCID:} {PMC3398592}},
    keywords = {{CagA}, {dupA}, H.pylori, must read, {OipA}, review, {VacA}, virulence}

    title = {Pre-{PCR} processing: strategies to generate {PCR-compatible} samples},
    volume = {26},
    issn = {1073-6085},
    shorttitle = {Pre-{PCR} processing},
    url = {http://www.ncbi.nlm.nih.gov/pubmed/14764939},
    doi = {10.1385/MB:26:2:133},
    number = {2},
    urldate = {2011-04-21},
    journal = {Molecular Biotechnology},
    author = {Rådström, Peter and Knutsson, Rickard and Wolffs, Petra and Lövenklev, Maria and Löfström, Charlotta},
    month = feb,
    year = {2004},
    note = {{PMID:} 14764939},
    keywords = {Animals, Blood Chemical Analysis, {DNA}, Feces, Humans, Microchemistry, {PCR} inhibitors, Polymerase Chain Reaction, Pre-{PCR} process, {qPCR}, Specimen Handling},
    pages = {133--146}

\addbibresource{\jobname.bib} % extension must be written
%\addbibresource{C:/Users/Dropbox/phd/ref/Exported Items.bib} % don't forget to writhe the path and extension of .bib file
  citetracker=true,% Citation tracker enabled in order not to repeat citations, and have two lists.
  sorting=none,% Don't sort, just print in the order of citation
  alldates=long,% Long dates, so we can tweak them at will afterwards
  dateabbrev=false,% Remove abbreviations in dates, for same reason as ``alldates=long''
  articletitle=true,% To have article titles in full bibliography
  maxcitenames=999% Number of names before replacing with et al. Here, everyone.

% No brackets around the number of each bibliography entry

% Suppress article title, doi, url, etc. in citations

% Print year instead of date, when available; make use of urldate
\renewbibmacro*{date}{% Based on date bib macro from chem-acs.bbx

% Remove period from titles
% Make year bold for @book types
\DeclareFieldFormat[book]{date}{\textbf{#1}} % doctorate added this line
% Embed doi and url in titles, when available
\renewbibmacro*{title}{% Based on title bib macro from biblatex.def
  \ifboolexpr{ test {\iffieldundef{title}}
               and test {\iffieldundef{subtitle}} }
    {\ifboolexpr{ test {\ifhyperref}
                  and not test {\iffieldundef{doi}} }
       {\ifboolexpr{ test {\ifhyperref}
                     and not test {\iffieldundef{url}} }
  \clearlist{language}% doctorate added this
  \clearfield{note}% doctorate added this
  \ifentrytype{article}% Delimit article and journal titles with a period

The book reference  is here~\parencite{kennedy_pcr_2011}. All references have the year in bold format as shown in the bibliography~\parencite{vignali_il-12_2012}, whereas this one has some diacritics~\parencite{radstrom_pre-pcr_2004}. This article has a species name that you might want to change radically from within Zotero by surrounding the word with HTML-like tags like this: \verb| <i> Helicobacter pylori </i>| to italicize the species name~\parencite{yamaoka_pathogenesis_2012}, the species name called ``\textit{Helicobacter pylori}'' that you want to be italicized as it should be.

By the way I have Zotero now opened and doing \verb|CTR+ALT+C| of the selected reference in Zotero and pasting it into this \LaTeX{} document by using \verb|TexStudio| wonderful editor, you may use a different one, but that shouldn't be a problem anyway, as long as it supports \verb|biber| and \verb|biblatex| wonderful tools. \verb|TexStudio| also has the autocomplete feature that will show you all references after invoking it by the citation commands, but I find copy \& paste from Zotero much easier. How about experiencing \verb|multicite| commands of the \verb|Biblatex| neat package by citing all of the above~\parencites(compare)()[10--15]{kennedy_pcr_2011}[136]{radstrom_pre-pcr_2004}[725]{vignali_il-12_2012}{voth_bacterial_2012}{yamaoka_pathogenesis_2012}?

Did you notice that the prenote ``compare'' was to all citations, and the specific page numbers for individual references. You can cite authors, titles, and more others just read \verb|Biblatex| manual 3.7.3 Qualified Citation Lists. Please note that whenever an entry type has a DOI then you will have a clickable title in the bibliography section that will direct you into the website of that reference.
\printbibliography[title={References}] % change from bibliography to references

Citation result of the MWE:
enter image description here

Bibliography result of the MWE: enter image description here

Update: For Emacs Users
Still copying citation keys from Zotero is an irreducible act. You want to keep Zetoro database clean and uptodate and I don't think there is any need to keep another file or database updated other than that of Zotero's. So same as with TexStudio just fetch that reference from Zotero, copy it by CTRL+SHIFT+C (now in the clipboard) and yank it into Emacs CTRL+y like below:

enter image description here

Happy ZoteroBiblatexing!

  • 3
    It is completely unnecessary to end your paragraphs with \\ . Just use a 'blank' line, as you already do. Outside of certain specialized environments like tables (etc.), you should rarely-to-never need to use \\ in your document.
    – jon
    May 21, 2013 at 5:49
  • I especially liked mentioning zotero, since manually managing citations BiBtex style is very time and energy consuming. Thank you very much. Jun 6, 2013 at 9:52
  • BTW, I also like Citavi as a reference management system. It is not free, but academic licenses are available. Jun 6, 2013 at 9:52
  • Do we need to use the plugin "Zotero Better BibTex"?
    – skan
    Oct 27, 2018 at 11:51
  • What advantage does the zotero method in emacs have over just using reftex C-c C-[?
    – Seamus
    Feb 18, 2019 at 13:00

There seem to be three distinct questions here. I'll answer them each in turn for my favourite set up.


I use Emacs (with AUCTeX and RefTeX) for my writing, so when I want to add a reference it's a matter of C-[ and then typing the beginning of the key. If the work I want to cite isn't in my bibliography, I switch to the bibliography file and add it in immediately with C-c C-b. This way, I don't have that horrible period at the end of the writing process where you have to put in all the references in the right place.

Bibliography management

I have one giant bibliography file that I use for all my work. I don't use Zotero, Mendeley or their like. They seem more trouble than they're worth, to my mind. Since I reference a lot of books, I have to add plenty of references by hand anyway.

RefTeX allows me to search this and insert entries in a sensible way. I fail to see how automating this is all that useful. Maybe that's because, in my field, reference lists tend to be relatively small, and the Mendeley database (which I did try once) is poorly curated...


Any system should work fine with BibLaTeX. Switching to BibLaTeX doesn't really involve much work and it shouldn't really affect your workflow. If you're using say \parencite and other BibLaTeX-only cite commands, you may need to add them to your favourite "automatic cite inserter" method. My current set up is to use \let\cite\autocite and then just use \cite. I guess it wouldn't be too tricky to add \autocite and friends to aucTeX's cite insertion mechanism.

You may want to switch to using biber too.


I use Mendeley.

HOWTO: Use Mendeley to create citations using LaTeX and BibTeX.

I use it's feature of create one bib file per collection.

Mendeley is comfortable, cause it keeps exports up-to-date and synchronized.

Thanks to that, I avoid one giant bib file. Instead, I collect them into gropus, and some of them are included into TeX documents.

Instead of linking TeX document directly, I use script which copies bib files into my document.

Thanks to use of Git Source Code Versioning I can keep track on changes in bibliography and feel secure - if Mendeley would crash or lost something I always have previous versions.

Thanks to manual update of bib file in document directory, I can came back to document directory after long time, and still compile it. Cause it has it's own private bib file copy (or bib files copies).

To sum it up: Mendeley + Git + LaTeX + BibTex plus a few other indirectly connected with reference management, but with workflow and efficiency: Vim + SnipMate

  • 2
    +1 to git being the stopgap that addresses all the bugginess in other solutions!
    – Dav Clark
    May 22, 2013 at 19:02
  • Do you have a link to where you elaborate on your Vim+Latex workflow?
    – mt3
    Sep 27, 2014 at 21:19
  • Zotero can now also do thus (more flexibly, too) using Better BibTeX
    – retorquere
    Dec 11, 2015 at 9:32
  • I work in mendeley, but I a have difficulties when I can't sync because of internet. In this times is there any way to produce bibtex files to produce automatically?
    – user85361
    Jun 3, 2017 at 8:54

At the moment I have the following work flow:

I manage my paper collection with Zotero. It makes it very easy to add a newly read paper or a paper that is still to be read to the collection. It is just one click, once you found the paper in the internet! With the help of tags you can organize your collection by topic. While it is possible to export the database to a bib file, I have to fine tune the result by hand in some cases. For example changing Philip to {\relax Ph}ilip to get Ph. in the bibliography.

Therefor I don't use the export function of Zotero, but I use JabRef to generate the actual bib file for a paper. If I want to cite one of the paper of my zotero collection, I take the DOI from zotero and use the DOI to BibTeX feature of JabRef. Then I can fine tune the bib entry and I avoid to do that work again if I'm going to add a new paper later on.

This workflow works for BibTeX and BibLaTeX.

Edit: To be more precise on the last point, JabRef is an editor for the bib file format, which is used by both BibTeX and BibLaTeX. There are some differences in the required fields. For example it is recommanded to use journaltitle in BibLaTeX instead of journal (BibTeX). But BibLaTeX also works with the old BibTex style. JabRef can be configured in principle to use the BibLaTeX field convention (Options --> Preferences --> Advanced, check box for BibLaTeX mode), but the DOI to BibTex feature will still create the journal field. So if you insist on using the new BibLaTeX fields, you have to change that by hand.

  • does jabref supports biblatex?
    – pmav99
    May 21, 2013 at 16:29
  • @pmav99, see my edit.
    – quinmars
    May 21, 2013 at 21:35
  • 1
    With Better BibTeX for Zotero, not much of the post-export tweaking is required anymore, and the aim is to change "much" to "none". It didn't do the relax bit, but I'm working on that now.
    – retorquere
    Dec 11, 2015 at 10:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .