JabRef Guide
JabRef Guide
Stay on top of your literature: JabRef helps you to collect and organize sources, find the paper you need
and discover the latest research: JabRef is an open-source, cross-platform citation and reference
management tool.
To get started, please follow the installation instructions and familiarize yourself with the basics of JabRef.
Installation
Getting started
Use the Search icon at the top left of this page to find what you're looking for. To learn more about JabRef's
features, please follow the links below.
Collect
Organize
Edit the bibliographic information using a convenient user interface
Group your research into hierarchical collections and organize research items based on
keywords/tags, search terms or your manual assignments
Advanced search and filter features
Complete and fix bibliographic data by comparing with curated online catalogs such as Google
Scholar, Springer or MathSciNet
Customizable citation key generator
Manage field names and their content
Keep track of what you read: relevancy, ranking, priority, printed, quality-assured, read status
Cite
Share
Library is saved as a simple text file, and thus it is easy to share with others e.g. via Dropbox and is
version-control friendly
Work in a team: sync the contents of your library via a SQL database
JabRef is highly customizable and adapts to you, not the other way around.
If you want to dive even deeper, have a look at the advanced information about JabRef.
JabRef can be either installed (the preferred way) or be used as a portable application.
Installation instructions
To get the latest version, head to downloads.jabref.org, download the installer for your system (e.g., dmg
files for MacOS and msi files for Windows), run them and follow the on-screen instructions.
Version 🍎 🐧
Alternatively, on Windows, you can use the chocolatey package manager and execute choco install
jabref to get the latest version. On Ubuntu, you can use snap install jabref to get the latest
stable version from snapcraft.
Getting started
Portable version
The portable version of JabRef is designed to be run from a USB stick (or similar) with no installation.
Download it from downloads.jabref.org. These are generic archive files (e.g., tar.gz files for Linux and
MacOS, and zip files for Windows) which need to be extracted. Inside the archive files you will find the
file needed to run JabRef:
for Linux
or /lib/runtime/bin/JabRef .
Be sure to activate "Load and Save preferences from/to jabref.xml on start-up (memory stick mode)" in
Options → Preferences → General. Also, if the Linux version of JabRef portable is put into a folder named
bin , it will not start. Other names are fine, like apps .
Development version
If you want to take advantage of the latest features, you can use pre-built binaries crafted from the latest
development branch. To use the prebuilt binaries, visit builds.jabref.org/main and download the packaged
binaries (e.g., dmg files for MacOS and exe files for Windows), run them and follow the instructions.
If you want to try the development version in parallel with the stable version, we recommend to download
the portable version (e.g. JabRef-X.Y.portable_windows.zip , JabRef-
X.Y.portable_macos.tar.gz , or JabRef-X.Y.portable_linux.tar.gz ) from
builds.jabref.org/main to ensure that both versions do not conflict.
Troubleshooting
Windows
You have to change the "compatibility settings" for JabRef to "Disable scaling for high DPI
settings". Further information is available at https://www.microsoft.com/surface/en-us/support/apps-
and-windows-store/app-display-issues?os=windows-10.
Linux
OpenOffice/LibreOffice integration
The connection from JabRef to Libre Office requires some office related jar -archives to be
present. For this, you have to install the package libreoffice-java-common .
The snap and flatpak packages cannot interact directly with external programs (i.e. programs not
contained in the package sandbox). What this means is that for now there is no possible connection
between JabRef and Libreoffice if either one is a snap/flatpak.
The integration with TeX editors is fine if JabRef is a deb/rpm, and the editor is a snap/deb/rpm (not
a flatpak).
Depending on your use case and needed integrations it is advisable to choose the proper
packages. Watch this page for new developments on the interactions with external programs.
Libreoffice
(system) ❌ ❌ ✅ ✅
Libreoffice (snap) ❌ ❌ ❌ ❌
Libreoffice
❌ ❌ ❌ ❌
(flatpak)
TexShow ❌ ✅ ✅ ✅
TexMaker ❌ ✅ ✅ ✅
LyX ❌ ✅ ✅ ✅
Vim/Emacs ❌ ❌ ✅ ✅
When JabRef is installed as a snap, it initially asks which application should be used to open PDFs
(or other files). However, after selecting the same application three times, that application is set as
default and there is no obvious way to select another application ("Preferences" -> "External File
Types" does not help here, because the snap sandbox does not "see" any of the user's
applications). This setting is stored in the XDG permission storage, and can be changed with a
command like the following (see this forum thread for further information, and have a look at
flatpack permissions to find the correct "Table": look for a line where the "App" is
snap.jabref - in the below example, the table is the default desktop-used-apps ):
flatpak permission-set --data "{'always-ask':<false>}" desktop-used-
apps application/pdf snap.jabref okularApplication_pdf 0 3 In this example,
the default application to open PDF files is set to okularApplication_pdf , and the counter
for when to stop asking how to open PDF files is set to 0/3. If you want JabRef to ask you which
application to use every time, use 'always-ask':<true> in the data parameter.
You have several Java Virtual Machines installed, and under the command line the wrong one is
chosen. Have a look at the previous question that tells you how to change the virtual machine used.
For Ubuntu you may also have a look at the Ubuntu page on Java.
Everything looks too big or too small. How can I change it to to a more reasonable size?
In the background, JabRef uses JavaFX. Applications using JavaFX can be scaled via java -
Dglass.gtk.uiScale=1.5 -jar <application>.jar . If you have installed JabRef via a
package manager, you probably don't have a .jar file but a binary file. In this case, you need to
find your JabRef.cfg in your installation folder (possibly located at
/opt/JabRef/lib/app/JabRef.cfg ) and add in the section [JavaOptions] the line -
Dglass.gtk.uiScale=1.5 . Then, restart JabRef. Try finding a value that is suitable for you.
On high resolution displays, values around 1.5 seem to be reasonable.
Non-latin characters are not showing up properly
You might need to install an additional font for JabRef to display characters correctly.
ArchLinux Japanese
otf-ipafont
Submenus from the menu bar close immediately after left click is let go of if the menu bar
was clicked in its top half
This issue seems to be related to this JavaFX bug. A temporary workaround is to click the menu bar
in its lower half. To fix the issue permanently set the following system property: java -
Djdk.gtk.version=2 . This can be done globally by adding _JAVA_OPTIONS="-
Djdk.gtk.version=2" to /etc/environment . It can also be set locally by editing
JabRef.cfg in your installation folder (possibly located at
/opt/JabRef/lib/app/JabRef.cfg ) and add the line -Djdk.gtk.version=2 in the
[JavaOptions] section.
macOS
Some users with macOS Sierra have reported freezes when using JabRef. It seems this is a bug in
the networking part of Java on macOS. Adding a host mapping for 127.0.0.1 seems to solve these
issues.
Some characters are not displayed in the main table (math characters or some upper-cased
letter)
This is one the one hand a font problem and second a lognstanding JavaFX bug. This might be a
problem related to the font you are using. You can download some other font that supports
mathematical alphanumeric symbols, for example, FreeSerif or Cambria Math. A list of fonts
supporting Math Unicode blocks is available at
http://www.fileformat.info/info/unicode/block/mathematical_alphanumeric_symbols/fontsupport.htm.
To build JabRef from source, you first need to have a working Java Development Kit (see above link for
details) and Git installed on your system. After installing the two requirements, you open a terminal window
(i.e., a command prompt) and type the following:
In a nutshell, you clone the latest snapshot of JabRef into jabref directory, change directory to
jabref , initialize and update all the submodules (dependencies) of JabRef, assemble them to be built
via JDK and finally build and link them together.
The output should be the build/image subdirectory that contains the JabRef binary with all of its Java
dependencies. To start JabRef, you need to run bin/JabRef (in Linux and MacOS) or
bin/JabRef.bat (in Windows) under build/image subdirectory.
Getting started
Menu bar
Icon bar (shortcuts for most frequently used features)
Side bar (for groups and web search)
Screenshot of main window
To create a new library, just select the "New library" menu item in the "File" menu:
Creating a new library
The main screen is now showing an empty "entry table" we will now start to fill with some entries.
This opens a dialog where you can select the type of reference you want to store. By default all entry types
defined by the BibTeX format are available:
After clicking on the "Article" button, the dialog closes and the so called "Entry Editor" is opened for the
newly created entry:
Main window now showing the entry editor
The most important information about the references to be added can now be entered in the "Required
Fields" tab. "Author", "Title", "Journal", and "Year" should be self-explanatory - however, a "citationkey",
might not be familiar to you. Basically, the idea of the "citationkey" is coming from working with BibTeX,
where it is necessary to have an unique identifier for each entry. This allows for referencing within a
document you might be creating using the stored information in your library. Moreover, also within JabRef
this "key" is used for example for cross-references to other related entries or to determine file names for
full-text references.
The key usually follows a global pattern and can be easily created automatically by clicking on the
"generate" button next to the field.
The default key pattern is [auth][year] , which means that Author information is followed
by the year of the publication, resulting in the example in Turing1950 . However, the key
pattern is customizable to your needs. See Configuration > "Customize the citation key
generator" for more details.
After entering some information, you can see on the right side of the entry editor a preview of the
bibliographic data:
Added information for new entry
There are further possibilities to add entries to your library which are described in the section "Collect" of
this documentation:
Collect
If additional information is found you will be asked in a dialog which information should be taken over:
In order to use the automated feature, it is necessary to set-up a file directory first. To do so,
please go to "Options" > "Preferences", go to "Linked files" section, and select there an existing
folder as the "Main file directory":
To test the automatic download of full texts you can click on the "Get full-text" icon next to the file field, or
choose "Lookup" -> "Search full text documents online" from the menu. As soon as a full-text is found, the
file will be stored in the local file directory and linked to the entry:
Finding a full-text document online
To open the downloaded full text you can click on the "file" icon before the file name - or use the same icon
The search results will be shown in an window where you can select all the search hits to be added to
your library.
Web Search: Trigger and result window
Next steps
After adding more and more entries, your library might be a bit too unstructured. In order to keep all you
references organized JabRef is offering a lot of helpful features like grouping, consistency checks, etc.
You can find more information on this topics in the "Organize" section of the documentation:
Organize
If you want to start writing your own papers, articles or thesis, you might find some helpful information on
how to use JabRef for citing your collected references from your library:
Cite
Collect
Learn how to add new literature to JabRef.
Browser Extension
Import
Add entry manually
To add a new entry, select Library → New entry..., press CTRL + Nor click on the dedicated icon of the
toolbar.
Window for selecting default entry types. Note: the actual content of the "others" menu depends on the database mode (BibTeX or biblatex).
For other types of entries, click on Others. That expands the window and displays the other entry types
available:
Window with all available entry types. Note: the actual content of the "others" menu depends on the database mode (BibTeX or biblatex).
Finally, the entry editor opens and let you fill in the various fields.
You can directly create a new entry of a specific entry type by using a keyboard shortcut. We
strongly recommend learning the shortcuts for the entry types you use most often, e.g. Ctrl +
Shift + A for adding an article entry.See Options → Customize key bindings.
Add entry using an ID
Create an entry based on an ID such as DOI or ISBN.
From an ID to an entry
For other identifiers, choose Library → New entry, or click on the New entry button, or use the
keyboard shortcut CTRL + N . In the lower part of the window, there are two boxes : "ID type" and "ID". In
the field "ID type", you can select the desired identifier, e.g. "ISBN" (it works also for DOI). Then enter the
identifier in the textbox below and press Enter. That will generate an entry based on the given ID (you can
also click on "Generate"). The entry is added to your library and opened in the entry editor. In case an error
occurs, a popup is shown.
Window for selecting an entry type or the ID of an entry. Note: the actual content of the dialog depends on the database mode (BibTeX or
biblatex).
Sometimes the new entry contains a url field. This field usually points to the URL of the book
at the respective online book store. In case you buy the book using this link, the service provider
(e.g., ebook.de) receive a commission to fund the service.
You can also add an entry by simply pasting its BibTex or its DOI from your clipboard to the
maintable.
Supported databases
Arxiv
ArXiv is a repository of scientific preprints in the fields of mathematics, physics, astronomy, computer
science, quantitative biology, statistics, and quantitative finance (Wikipedia).
ID search is carried out using the ArXiv identifier.
Crossref
Crossref is an official Digital Object Identifier (DOI) Registration Agency of the International DOI
Foundation.
ISBN
First, eBook.de's API is used to fetch bibliographic information based on the ISBN. If no entry is found, the
JabRef tries OttoBib to get data.
DiVA
DiVA (Digitala Vetenskapliga Arkivet) is a database with publications from about 40 Swedish universities
and research institutions.
DOI
JabRef uses http://dx.doi.org/ (provided by http://crossref.org/) to convert the given DOI to a new entry.
If JabRef cannot find the reference of your DOI using this ID type, please, try the same DOI with
the ID type "mEDRA". The ID type mEDRA looks for the reference corresponding to a DOI too,
but using another registration agency.
IACR eprints
The International Association for Cryptologic Research maintains an eprint archive to which anyone can
submit papers and technical reports. These eprints are given IDs based on the year of submission, e.g. the
10th submission in 2018 gets the ID "2018/10". To get the ID, you may want to use their web search form at
https://eprint.iacr.org/search.html.
Library of congress
The Library of Congress is the research library that officially serves the United States Congress and is the
de facto national library of the United States (wikipedia).
ID search is carried out using the Library of Congress Control Number (LCCN).
MathSciNet
MathSciNet is a searchable online bibliographic database. It contains all of the contents of the journal
Mathematical Reviews (MR) since 1940 along with an extensive author database, links to other MR
entries, citations, full journal entries, and links to original articles. It contains almost 3 million items and
over 1.7 million links to original articles (Wikipedia).
Medline/Pubmed
mEDRA
mEDRA is the multilingual European Registration Agency of DOI, the standard persistent identifier for any
form of intellectual property on a digital network.
SAO/NASA ADS
SAO/NASA Astrophysics Data System is an online database of over eight million astronomy and physics
papers from both peer reviewed and non-peer reviewed sources. Abstracts are available free online for
almost all articles, and full scanned articles are available in Graphics Interchange Format (GIF) and
Portable Document Format (PDF) for older articles (Wikipedia).
Title
Based on the title of your publication, JabRef call Crossref, which return the corresponding DOI. Then
JabRef fetches the reference based on this DOI.
RFC
IETF (Internet Engineering Task Force) Datatracker is a database that "contains data about the
documents, working groups, meetings, agendas, minutes, presentations, and more, of the IETF." It used to
be available at https://datatracker.ietf.org/ (currently down).
ID search is carried out using the (Request for Comments number) (RFC) of the IETF database.
Screenshot of new entry dialog
zbMATH Open
zbMATH Open is an abstracting and reviewing service in pure and applied mathematics. Its database
contains about 4 million bibliographic entries with reviews or abstracts currently drawn from about 3,000
journals and book series, and 180,000 books. The coverage starts in the 18th century and is complete
from 1868 to the present by the integration of the "Jahrbuch über die Fortschritte der Mathematik" database
(about).
In case you have a reference string, JabRef offers the functionality to convert the text to BibTeX (or
biblatex). For this, JabRef uses the technology offered by Grobid.
Example:
JabRef is not intended to be a tool for mass download of citations. The purpose of the Web search is to
easily gather a few entries directly from within JabRef. If you use the search functionality too extensively
you might get blocked (for some time). To fetch entries from an online database, choose View → Web
search, and the search interface will appear in the side panel. Select the database you want to search
(e.g., arXiv) in the dropdown menu. Note that it might be necessary to scroll downwards to find certain
fetchers. An example for this is provided in the image below. You may opt to download the abstracts along
with the cite information for each entry, by checking the Include abstracts checkbox.Then enter the words
of your query, and press Enter, or the Search button. The results are displayed in the import inspection
dialog. Some online services support advanced search queries. These are described below at the
respective fetcher.
JabRefWebSearch
Apart from fetching entries by using a full search, it is also possible to directly create an entry using a
unique identifier.
Search Syntax
Since version 5.2:
JabRef searches the databases by using the specified keywords. One can use quotes ( " ) to keep words
togehter: An example is "process mining" . It is also possible to restrict the search to dedicated
fields:
field meaning
One can usually combine different searches using the Boolean operators AND and OR . Thereby, the
default operator is OR .
Examples
author:smith and author:jones : search for references with authors "smith" and "jones"
author:smith or author:jones : search for references with either author "smith" or author
"jones"
author:smith and not title:processor : search for author "smith" and omit references
with "processor" in the title
Technial note: The search syntax is adapted from Apache Lucene. JabRef takes the Lucene syntax and
transforms it to the syntax required by the supported databases.
Supported databases
ACM Portal
arXiv
ArXiv is a repository of scientific preprints in the fields of mathematics, physics, astronomy, computer
science, quantitative biology, statistics, and quantitative finance (Wikipedia).
The Bibliotheksverbund Bayern (BVB) provides bibliographic information from all public libraries in
Bavaria, Germany. The format used is MarcXML, which has been modified, which in turn is based on other
modifications.
Biodiversity Heritage Library makes biodiversity literature openly available to the world as part of a global
biodiversity community. It is the world’s largest open access digital library for biodiversity literature and
archives (Wikipedia).
CiteSeerX
CiteSeerX is a public search engine for scientific and academic papers primarily with a focus on computer
and information science. However, CiteSeerX has been expanding into other scholarly domains such as
economics, physics, and others (Wikipedia).
The Collection of Computer Science Bibliographies is a public search engine for bibliographies of
scientific literature in computer science.
Crossref / Unpaywalll
Unpaywall is an open database with over 20 million free scholarly articles harvested from over 50,000
journals and open-access repositories around the globe. Sources for these articles include repositories
run by renowned universities, governments, and scholarly societies. Unpaywall is integrated into
thousands of existing search engines, library platforms, and information products, making articles easy to
find, track, and use for your scholarly communication needs.
The Unpaywall database has a very simple structure: it has one record for each article with a Crossref
DOI. It harvests from many sources to find Open Access content, and then matches this content to these
DOIs using content fingerprints. So for any given DOI, we know about any OA versions that exist
anywhere.
To fetch entries from Unpaywall indirectly through Crossref, choose Search → Web search, and the
search interface will appear in the side pane. Select Crossref in the dropdown menu. To start a search,
enter the words of your query, and press Enter or the Fetch button.
DBLP
DBLP is a computer science bibliography website listing more than 3.1 million journal articles, conference
papers, and other publications on computer science (Wikipedia).
DOAB
DOAB (Directory of Open Access Books) is is a community-driven discovery service that indexes and
provides access to scholarly, peer-reviewed open access books and helps users to find trusted open
access book publishers.
DOAJ
DOAJ (Directory of Open Access Journals) is a database covering more than 10000 open access journals
covering all areas of science, technology, medicine, social science, and humanities (Wikipedia).
It is possible to limit the search by adding a field name to the search, as field:text. The supported fields
are:
key description
Google Scholar
Google Scholar is a freely accessible database that indexes the full text or metadata of scholarly literature
across an array of publishing formats and disciplines. Google Scholar index includes most peer-reviewed
online academic journals and books, conference papers, theses and dissertations, preprints, abstracts,
technical reports, and other scholarly literature, including court opinions and patents (Wikipedia).
Traffic limitations
Google scholar can block "automated" crawls which generate too much traffic in a short time. To unblock
your IP, doing a Google scholar search in your browser might help. You will be asked to show that you are
not a robot (a CAPTCHA challenge). If no CAPTCHA appears, or JabRef is still blocked after performing a
search in the browser, you can also change your IP address manually or wait for some hours to get
unblocked again.
Thus, the Google Scholar fetcher is not the best way to obtain lots of entries at the same time. The JabRef
browser extension might be an alternative to download the bibliographic data directly from the browser.
GVK
GVK, the GBV Union Catalogue, is a multimaterial bibliographic database of seven German federal states.
It covers 41.5 million records of books, conference proceedings, periodicals, dissertations, microfilms and
electronic resources.
Advanced search
You can simply enter words / names / years you want to search for, or you can specify search fields.
field description
thm topics
bkl Basisklassifikation-numbers
Year ranges are not supported. In case a year range is provided, it is ignored. Otherwise, GVK returns no
results.
Notes
queries can be combined with and . The use of and is optional, though.
spaces in person names are not supported yet. Please use the truncation sign ? after the first name
for several given names. E.g. per Maas,jan?
Sample queries
marx kapital
author:"Maas,jan?"
IEEEXplore
IEEEXplore is a scholarly research database that indexes, abstracts, and provides full-text for articles and
papers on computer science, electrical engineering and electronics. IEEEXplore comprises over 180
journals, over 1,400 conference proceedings, more than 3,800 technical standards, over 1,800 eBooks
and over 400 educational courses (Wikipedia)
INSPIRE
INSPIRE-HEP is an open access digital library for the field of high energy physics (Wikipedia).
Query syntax
The INSPIRE-HEP search function merely passes your search queries onto the INSPIRE-HEP web
search, so you should build your queries in the same way. INSPIRE supports the fielded search too. See
https://inspirehep.net/help/knowledge-base/inspire-paper-search/ for advanced help.
The following list shows some of the field indicators that can be used:
field description
k search in keywords
Jstor
Jstor is an online database with access to more than 12 million journal articles, books, and sources in 75
disciplines. About
It is possible to limit the search by adding a field name to the search, such as field:"text" . The
supported fields are:
pt : publication title
MathSciNet
MathSciNet is a searchable online bibliographic database. It contains all of the contents of the journal
Mathematical Reviews (MR) since 1940 along with an extensive author database, links to other MR
entries, citations, full journal entries, and links to original articles. It contains almost 3 million items and
over 1.7 million links to original articles (Wikipedia).
Medline/PubMed
MEDLINE is a bibliographic database of life sciences and biomedical information. It includes bibliographic
information for articles from academic journals covering medicine, nursing, pharmacy, dentistry, veterinary
medicine, and health care. MEDLINE also covers much of the literature in biology and biochemistry, as
well as fields such as molecular evolution (Wikipedia).
The Medline syntax is completely different form the Lucene syntax. One cannot use fielded search there.
1. Enter one or more MEDLINE IDs (separated by comma/semicolon) in the text field.
2. Enter a set of names and/or words to search for. You can use the operators and and or and
parentheses to refine your search expression. See OVID operators for full description.
Examples
Population \[ta\]
SAO/NASA Astrophysics Data System is an online database of over eight million astronomy and physics
papers from both peer-reviewed and non-peer-reviewed sources. Abstracts are available free online for
almost all articles, and full scanned articles are available in Graphics Interchange Format (GIF) and
Portable Document Format (PDF) for older articles (Wikipedia).
SearchAll
To be detailed.
Semantic Scholar
Semantic Scholar is a free, AI-powered, research tool for scientific literature. Developed at the Allen
Institute for AI, it uses advances in natural language processing to provide summaries for scholarly papers
(Wikipedia).
Springer
Springer (aka Springer Science+Business Media) is a global publishing company that publishes books, e-
books, and peer-reviewed journals in science, technical and medical publishing. Springer also hosts a
number of scientific databases, including SpringerLink, Springer Protocols, and SpringerImages
(Wikipedia).
zbMATH Open
zbMATH Open is an abstracting and reviewing service in pure and applied mathematics. Its database
contains about 4 million bibliographic entries with reviews or abstracts currently drawn from about 3,000
journals and book series, and 180,000 books. The coverage starts in the 18th century and is complete
from 1868 to the present by the integration of the "Jahrbuch über die Fortschritte der Mathematik" database
(about).
Structured Search
You cannot use the same query syntax as in the one-line search at zbmath.org; you have to stick with the
Apache Lucence syntax. This means that your query can be composed of several terms, combined by the
logical operators AND and OR . Queries are case-insensitive. Further operators that can be used are
NOT for logical negation, * for a right wildcard, " " for exact phrase matches, and parentheses ( ) to
group terms. Optionally, it is possible to add a field name in the form field:text to limit the search results.
The supported fields are:
field description
cc MSC code
rv reviewer
sw software
en external identifier
br biographical reference
Examples
`` algebra* : Searches for publications containing a term starting with algebra (e.g. algebra,
algebras, algebraic, etc.) in any field.
title:"Graph Theory" : Searches for publications with the exact phrase Graph Theory in their
title field.
author:Berge and title:"Graph Theory" : Searches for entries written by Berge with
Graph Theory in their title field.
The simplest way to create a new entry based on a single PDF file is to drag & drop the file onto
the table of entries (between two existing entries). JabRef will then analyze the PDF and create
a new entry.
This feature is available through Lookup -> Search for unlinked local files.
Preparation: Adjust the JabRef key generation pattern to fit your needs
JabRef offers a BibTeX key generation and offers different patterns described at BibtexKeyPatterns.
2. Go to Lookup -> Search for unlinked local files. (or press SHIFT + F7 )
FindUnlinkedFiles - Menu
FindUnlinkedFiles - Menu
7.
Select the entries you are interested in. Note: the button Export selected files allows you to
export the list of the selected files (a text file containing on each line one filename with its path)
8. Click on Import .
The windows close and the entry table now contains the newly-imported entries.
9.
10. You can now save the file and are finished.
11.
14.
The imported entries may need some editing because all the information gathered from the
PDF files may not be accurate (see below "PDFs for which it works").
Further information
The importer based on the content has been written for IEEE and LNCS formatted papers. Other formats
are not (yet) supported. In case a DOI is found on the first page, the DOI is used to generate the BibTeX
information.
The next development step is to extract the title of the PDF, use the "Lookup DOI" and then the Get BibTeX
data from DOI functionality from JabRef to fetch the BibTeX data.
We are also thinking about replacing the code completely by using another library. This is much effort and
there is no timeline for that.
Better filenames
JabRef also offers to change the filenames. You can adapt the pattern at Preferences -> Import
This makes the filenames start with the bibtey key followed by the full title. In the concrete case,
\bibtexkey only may be the better option as the described bibtey key already contains the title.
Mr.DLib
JabRef used to have support for Mr.DLib, which returned back a full BibTeX entry or a PDF. Due to unclear
copyright situation of a used library, this service was removed. Further, Mr.DLib changes its focus and will
provide literature recommendations. See the realted articles tab.
Zotero: Extract references from PDF and create new library items from them
Is there an open source tool for producing bibtex entries from paper PDFs?
Extracting information from PDFs of research papers
Browser Extension
The official browser extension automatically identifies and extracts bibliographic information on websites
and sends them to JabRef with one click.
JabRef offers an official browser extension. It automatically identifies and extracts bibliographic
information on websites and sends them to JabRef with one click.
When you find an interesting article through Google Scholar, the arXiv or journal websites, this browser
extension allows you to add those references to JabRef. Even links to accompanying PDFs are sent to
JabRef, where those documents can easily be downloaded, renamed, and placed in the correct folder. A
wide range of publisher sites, library catalogs, and databases are supported.
While Chrome extensions can work in Edge (and will install), JabRef is configured to work with the Edge
extension in the Edge Browser, and the Chrome extension in the Chrome Browser. It will not work if they
are mixed.
Usage
After the installation, you should be able to import bibliographic references into JabRef directly from your
browser. Just visit a publisher site or some other website containing bibliographic information (for example,
the arXiv) and click the JabRef symbol in the Firefox search bar (or press Alt+Shift+J). Once the JabRef
browser extension has extracted the references and downloaded the associated PDF's, the import window
of JabRef opens.
You might want to configure JabRef so that new entries are always imported in an already opened
instance of JabRef. For this, activate "Listen to remote operation on port" under the "Network" tab of the
JabRef Preferences.
Troubleshooting
In case you have Adblock Plus extension and Jabref extension doesn't work
1) Go to zotero.org. 2) Deactivate AdBlock plus extension for the whole domain (zotero.org) by clicking on
the Adblock plus extension button and sliding the corresponding slider to allow adds on the whole domain.
3) Close and reopen the browser in order to reload all the extension and their settings. 4) Verify the
functioning of the Jabref extension by visiting a page you know is working to extract its bibliographic data
(for example, the arXiv) by pressing the extension button or Alt + Shift + J.
In case you encounter problems in this procedure refer to issue #241 on GitHub for further help.
Manual Installation
Most JabRef installations include the necessary files, so test the extension before proceeding with the
following instructions. However, sometimes, a manual installation is necessary (e.g. if you use the portable
version of JabRef). In this case, please take the following steps:
Windows
1. Make sure you have at least JabRef 5.0 installed.
2. Install the JabRef browser extension: Firefox, Chrome, Edge, Vivaldi
3. Download the following files and copy them to the same directory as JabRef.exe
jabref-firefox.json
jabref-chrome.json
JabRef.bat
JabRef.ps1
4. Make sure that the correct file name of the JabRef.bat file is specified in JabRefHost.ps1
under $jabRefExe .
5. Run the following command from the console (with the correct path to the jabref.json file):
a. For Firefox support:
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\org.jabref.jabref" /ve
You may need to change the root HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER if you don't
have admin rights.
Linux
/usr/lib64/mozilla/native-messaging-hosts/org.jabref.jabref.json
(and /usr/lib/mozilla/native-messaging-
hosts/org.jabref.jabref.json ) to install with admin rights for all users
~/.mozilla/native-messaging-hosts/org.jabref.jabref.json to install
without admin rights for the current user
Chrome and Brave: Download org.jabref.jabref.json and put it into
/etc/opt/chrome/native-messaging-hosts/org.jabref.jabref.json to
install with admin rights for all users
~/.config/google-
chrome/NativeMessagingHosts/org.jabref.jabref.json to install without
admin rights for the current user
Note: Brave is using the Google file structure for NativeMessagingHosts , see Github Issue.
Chromium: Download org.jabref.jabref.json and put it into
/etc/chromium/native-messaging-hosts/org.jabref.jabref.json to install
with admin rights for all users
~/.config/chromium/NativeMessagingHosts/org.jabref.jabref.json to
install without admin rights for the current user
/etc/opt/edge/native-messaging-hosts/org.jabref.jabref.json to install
with admin rights for all users
~/.config/microsoft-
edge/NativeMessagingHosts/org.jabref.jabref.json to install without admin
rights for the current user
3. Open the file org.jabref.jabref.json with a text editor, and alter it so that its path variable
matches the location of your jabrefHost.py file.
Snap
Browser
If the browser is installed as a snap or flatpak there is an extra step to enable the extension.
Enable the following permission (Note that this will partially disable confinement):
via Flatseal app: add org.freedesktop.Flatpak to the Session Bus Talk section for
org.mozilla.firefox
macOS
1. Download and install the DMG package of JabRef (>= 5.0).
2. Install the JabRef browser extension: Firefox, Chrome, Edge, Vivaldi
Firefox: If it's not auto-installed for you, download org.jabref.jabref.json and put it into
/Library/Application
Support/Mozilla/NativeMessagingHosts/org.jabref.jabref.json to install
with admin rights for all users
~/Library/Application
Support/Mozilla/NativeMessagingHosts/org.jabref.jabref.json to install
without admin rights for the current user
Chrome and Brave: If it's not auto-installed for you, download org.jabref.jabref.json and put it into
/Library/Google/Chrome/NativeMessagingHosts/org.jabref.jabref.jso
n to install with admin rights for all users
~/Library/Application
Support/Google/Chrome/NativeMessagingHosts/org.jabref.jabref.json
to install without admin rights for the current user
Note: Brave is using the Google file structure for NativeMessagingHosts , see Github Issue.
Chromium based: If it's not auto-installed for you, download org.jabref.jabref.json and put it into
/Library/Application
Support/Chromium/NativeMessagingHosts/org.jabref.jabref.json to
install with admin rights for all users
~/Library/Application
Support/Chromium/NativeMessagingHosts/org.jabref.jabref.json to
install without admin rights for the current user
Edge: If it's not auto-installed for you, download org.jabref.jabref.json and put it into
/Library/Microsoft/Edge/NativeMessagingHosts/org.jabref.jabref.js
on to install with admin rights for all users
This help page should describe the menu File -> Import (and the various file formats available).
Please, populate this page. Visit our page about how to edit a help page.
See also:
Export
This information is outdated. Please help to improve it (how to edit a help page).
JabRef allows you to define and use your own importers, in very much the same way as the standard
import filters are defined. An import filter is defined by one or more Java classes, which parse the contents
of a file from an input stream and create BibTex entries. So with some basic Java programming, you can
add an importer for your favorite source of references or register a new, improved version of an existing
importer. Also, this allows you to add compiled custom importers that you might have obtained e.g. from
GitHub without rebuilding JabRef (see "Sharing your work" below).
Custom importers take precedence over standard importers. This way, you can override existing importers
for the Autodetect and Command Line features of JabRef. Custom importers are ordered by name.
Please note that if you move the class to another directory you will have to remove and re-add the importer.
If you add a custom importer under a name that already exists, the existing importer will be replaced.
Although in some cases it is possible to update an existing custom importer without restarting JabRef
(when the importer is not on the classpath), we recommend restarting JabRef after updating a custom-
importer. You can also register importers contained in a ZIP- or JAR-file, simply select the Zip- or Jar-
archive, then the entry (class-file) that represents the new importer.
A simple example
In your favorite IDE or text editor create a class derived from ImportFormat that implements methods
getFormatName() , isRecognizedFormat and importEntries() . Here is an example:
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import net.sf.jabref.logic.importer.Importer;
import net.sf.jabref.logic.importer.ParserResult;
import net.sf.jabref.logic.util.FileExtensions;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.model.entry.BibtexEntryTypes;
@Override
public String getName() {
return "Simple CSV Importer";
}
@Override
public FileExtensions getExtensions() {
return FileExtensions.TXT;
}
@Override
public String getDescription() {
return "Imports CSV files, where every field is separated by a semicolon.";
}
@Override
public boolean isRecognizedFormat(BufferedReader reader) {
return true; // this is discouraged except for demonstration purposes
}
@Override
public ParserResult importDatabase(BufferedReader input) throws IOException {
List<BibEntry> bibitems = new ArrayList<>();
be.setField("author", fields[1]);
be.setField("title", fields[2]);
bibitems.add(be);
line = input.readLine();
}
}
return new ParserResult(bibitems);
}
}
Note that the example is in the default package. Suppose you have saved it under
/mypath/SimpleCSVImporter.java . Also, suppose the JabRef-2.0.jar is in the same folder as
SimpleCSVImporter.java and Java is on your command path. Compile it using a JSDK 1.4 e.g. with
In JabRef, open Options → Manage custom imports and click Add from folder. Navigate to /mypath
and click the Select ... button. Select the SimpleCSVImporter.class and click the Select ... button.
Your importer should now appear in the list of custom importers under the name "Simple CSV Importer"
and, after you click Close also in the File → Import → Custom Importers and File → Import and
Append → Custom Importers submenus of the JabRef window.
Purpose
When you import new entries from a supported reference format or fetch entries directly from the Internet,
the inspection window allows you to select the entries you want to keep, to avoid adding duplicated
entries, and to perform some simple operations like generating citation keys for the entries or adding them
to groups. If you are importing into an existing database, it is often easier to perform these operations
before they are mixed in between the entries of your database.
Once the entries displayed in the inspection window, none of them have been added to one of your
databases yet.
By default, all the entries are selected for importation, as shown by the checked boxes in the Keep column.
You can select/unselect an entry by clicking on these checkboxes. On the left panel, buttons allow you to
Select all the entries for importation, or to Deselect all the entries.
A left-click on an entry (out of the check box and icons) let you choose it. It displays a preview of the entry
below the entry table. As usual, you can choose several entries by using the Shift or the Ctrl keys. Then,
pushing the button Delete on the left panel will remove the chosen entries from the table.
Duplicated entries
Potential duplicates are pointed out by an icon in the second column. A click on this icon allows you to
check the similarities. A button on the left panel allows you to Deselect all duplicates (without inspection).
On the left panel, if the box Generate keys is checked, keys will be automatically generated on import.
You can also choose to generate the keys now by clicking on the button Generate now.
Once you are done with the entry selection, you can add these entries to your database by clicking on OK
at the bottom of the window. Alternatively, you can Cancel the import.
Organize
Organizing your database with JabRef
You can select a subset of entries using the search bar. Within a library, you can organize your entries in a
tree-like structure made of group and subgroups of entries.
You can add information to an entry using the entry editor, but JabRef can also complete the information
for you. And JabRef takes care of the associated files (PDF, etc.)
Once your database starts to be large, some tidy-up may be needed. JabRef can check for the integrity of
your entries, clean them up, detect duplicated entries, help you in merging 2 entries.
Edit an entry
Groups
Keywords
Best practices
Cleanup entries
Check integrity
Find duplicates
Merge entries
Save actions
Edit an entry
Modify the content of an entry
To open the entry editor for a specific entry, you can either:
select the entry and go to the menu View → Open entry editor
Then you can modify the content of the entry. When done, click on the top left-hand corner of the entry
editor or press ESC to close the entry editor and go back to the table of entries.
Groups
Structure your bibliography to your needs
Groups allow structuring of bibliographic libraries in a tree-like way that is similar to organizing files on
disk in directories and sub-directories. The two main differences are:
While a file is always located in exactly one directory, an entry may be contained in more than one
group.
Groups may use certain criteria to dynamically define their content. New entries that match these
criteria are automatically added to these groups. This feature is not available in common file systems,
but in several Email clients (e.g. Thunderbird and Opera).
Selecting a group shows the entries contained in that group. Selecting multiple groups shows the entries
contained in any group (union) or those entries common in all selected groups (intersection), depending
on the current settings. All this is explained in detail below.
To create a group and manually assign entries to it, press the Add group button located at the bottom of
the pane, enter a name for the group, then press (leaving all values at their defaults). Now select the
entries to be assigned to the group, and drag-and-drop them to the group (or use Add selected entries to
this group in the context menu of the group interface). Finally, select the group to see its content. Only the
entries you just assigned to the group should be displayed in the entry table.
You can also automatically fill a group based on keywords. For this, you need to use a different type of
groups.
When you have numerous groups, the one of interest can be displayed by typing its name in the ''Filter
groups'' field located near the top of the group pane.
Selecting one group shows the entries contained in that group (accounting for hierarchical settings).
When selecting several groups, you can intersect or unionize them: Union displays all the entries of the
selected groups while Intersection displays all the entries shared among the selected groups.
For example, if you have a group for the author 'Smith' and another one for the author 'Doe', selecting the
groups displays the entries that they co-authored if 'Intersection' is selected. If 'Union' is selected, the
entries that at least one of them authored are displayed.
To test this, create two groups having some entries in common. Click the Intersection/Union button and
make sure that Union is selected. Now select both groups. You should see all entries contained in any of
the two groups. Click again on the Intersection/Union. This selects Intersection. Now you should see
only those entries contained in both groups (which might be none at all if groups do not share entries, or
exactly the same entries if both groups contain the same entries).
Name
Description
A description of the group, to help you remember what it is about. This description is displayed when
hovering the mouse over the group name.
An icon can be displayed in front of the group name. Choose your favorite icon among the ones available
at https://materialdesignicons.com/, and enter its name of the field Icon (replacing any hyphens ( - ) with
underscores ( _ )). The color of the icon can be set in the field Color.
Hierarchical context
The displayed entries depend on the hierarchical context of the group. When a group is selected, the
displayed entries can be:
Independent group
By default, a group is independent of its position in the group's tree: When selected, the table of entries
shows only the group's content (i.e. all of its entries).
For a group defined with a hierarchical context Intersection, only the entries contained in both the group
and its supergroup are displayed when the group is selected.
This is especially relevant for groups based on keywords or search expression, where it is often useful to
define a group that intersects its supergroup. For example, consider a supergroup containing entries with
the keyword distribution and a subgroup containing entries with the keyword gauss. With the subgroup
gauss defined as an intersection (of its supergroup), selecting the subgroup gauss displays entries that
match both conditions, i.e. are concerned with Gaussian distributions. Note that entries that only belong to
the subgroup gauss will not be shown, i.e. for an entry to be displayed when selecting gauss, it must be
assigned to both the subgroup gauss and the supergroup distribution. By adding another intersection
group for laplace to the supergroup distribution, the grouping can easily be extended to Laplace
distributions.
The union of a group and its subgroups is the logical complement of the intersection: when defined as
union, selecting the group displays both the group's own entries and its subgroups' entries.
For example, you can create a group for your references about music, and then subgroups about the music
styles (classic, jazz, rock, etc.). By setting the group "Music" as union, when you subsequently add
references to a subgroup, they will automatically appear in group "Music" as well (without additional
action).
Nesting (sub)groups
You can populate your Group pane by configuring JabRef to use the bibtex source's keywords =
{...}, by clicking the + icon and following the previous instructions. You can nest subgroups by using
the right chevron > (see here). You achieve this by editing the keywords = {...}, bibtex field in the
entry source by placing > between any two keywords where the left-hand keyword is the parent group
and the right-hand keyword will be its sub-group. The library entry will be placed there. Note: when you
select + to do this, the first delimiter must be the right chevron, and the second must be whichever field
separator you have configured (by default a comma , ).
Mixing refining groups with including groups
If a refining group is a subgroup of a group that includes its subgroups -- the refining group's siblings --,
these siblings are ignored when the refining group is selected.
Types of groups
Explicit selection. The group contains entries that were assigned manually. It behaves like a directory
on disk, and contains only those entries that you explicitly assigned to it.
Searching for a keyword. The group contain entries in which a certain field (e.g. author ) contains
a certain keyword (e.g. Smith ). This method does not require manual assignment of entries but uses
information that is already present in the database.
Free search expression. Similar to Searching for a keyword, but for several keywords in several
fields.
Specified keywords. This feature will gather all words found in a specific field of your choice, and
create a group for each word.
Authors' last names. Groups can be generated for each author's last name.
Cited entries. The group contains the entries cited in a LaTeX document, based on its .aux file.
Explicit selection
Groups based on explicit selection are populated only by manual assignment of entries.
After creating an explicit-selection group, you select the entries to be assigned to it and use either drag-
and-drop or the context menu Add selected entries to this group of the group interface.
To remove entries from an explicit-selection group, select them and use the context menu Remove
selected entries from this group of the group interface.
This method of grouping requires that all entries have a unique citation key. In case of missing
or duplicate citation keys, the assignment of the affected entries cannot be correctly restored in
future sessions.
Searching for a keyword in a field
This method groups entries in which a specified field (e.g. author) contains a specified keyword (e.g.
Smith). The mentioned example will group all entries referring to the author Smith.
The search can be case-sensitive or not (checkbox 'Case sensitive'). The search can either be done as a
plain-text or a regular-expression search (checkbox 'Regular expression').
Obviously, this will work only for entries including the specified grouping field, and the quality of the
grouping will depend on the content accuracy.
The content of the group is updated dynamically whenever the database changes: JabRef allows to
manually assign/remove entries to/from the group by simply appending/removing the search term to/from
the content of the grouping field. For example, if you add the keyword A to an entry, this entry will be
added to the dedicated group automatically. This makes sense only for the keywords field or for self-
defined fields, but obviously not for fields like author or year .
This is similar to the above, but rather than search for a single search term on a single field, a search
expression syntax can be used. It supports logical operators ( AND , OR , NOT ) and allows searching
multiple fields.
For example, the search expression keywords=regression and not keywords=linear groups
entries concerned with non-linear regression.
The content of the group is updated dynamically whenever the database changes.
Specified keywords
With the group type "Specified keywords", you can quickly create a set of groups appropriate for your
database. This feature will gather all words found in a specific field of your choice, and create a group for
each word. This is useful for instance if your database contains suitable keywords for all entries. By auto-
generating groups based on the keywords field, you should have a basic set of groups at no cost. If you
have an entry with "keywords = {A, B}", then this group type creates subgroups "A" and "B" both containing
the entry.
You can also specify characters to ignore, for instance, commas used between keywords. These will be
treated as separators between words, and not part of them. This step is important for combined keywords
such as laplace distribution to be recognized as a single semantic unit. (You cannot use this
option to remove complete words. Instead, delete the unwanted groups manually after they were created
automatically.)
The content of the group is updated dynamically whenever the database changes.
The group contains the entries cited in a LaTeX document, based on its '.aux' file. The .aux file has to be
specified.
The content of the group is updated dynamically whenever the .aux file changes.
The "groups" column is displayed by default. Using the menu File → Preferences, tab Entry table, you
can:
remove the "groups" column by clicking on the bin icon next to the item "Groups".
add the "groups" column by selecting the "Groups" item in the drop-down menu, and clicking on the +
button located to the right of the drop-down menu.
View
The checkbox "Automatically assign new entry go selected grouping" makes it possible to automatically
assign new entries to selected groups. If checked (default), upon selection of one or more groups, all the
new entries created will be assigned to the selected groups. This works both for entries created from the
menu button or entries pasted from the clipboard. If unchecked, new entries are not assigned to groups
automatically.
If checked (default), the number of entries in each group is displayed in the group name, at the right of the
group pane.
Be careful, this can slow down JabRef when a library has numerous groups.
Keyword separator
The character separating two keywords can be set in this field. The default keyword separator is a comma
(,).
By default, the keyword separator is a comma. It can be redefined in the preferences (File → Preferences
→ Groups).
If some entries have a keyword separator differing from the prescribed one, you can use menu
Edit → Find and replace. For example, you may want to replace semi-columns (;) by commas
(,). Select the radio button "Limit to Fields" and type in "keywords" as the relevant field.
Additionally, the special field values (relevance, priority, etc.) can be added to the keywords field
automatically. This will allow you to group, sort, and search your library based on the special field values.
See in File → Preferences → Entry table the item "Special fields" and select "Synchronize with
keywords".
Management of keywords
You can edit a keyword by double-clicking on it, or by clicking on the pencil icon. A keyword can be
deleted by clicking on the minus icon.
To fasten the addition of often-used keywords, JabRef can store the list of your preferred keywords.
A set of 6 special fields allows you to tag your entries in order to rate read papers, indicate their relevance
to your work, indicate that their quality has been assured, etc. Internally, each special field is stored in a
separate BibTeX field.
This feature has to be activated in File → Preferences → Entry Table by checking the item Enable
special fields .
The status of each special field can be displayed in the table of entries as dedicated columns.
Like any other field, the special field columns can be turned on and off individually in File → Preferences
→ Entry Table.
Types of Fields
Relevance
An entry can be marked as relevant: a black-and-white star is displayed (in the first column of the image
below).
Read status
The read status can be set to "No" (no symbol in the column), to "Skimmed" (an orange eye), or to "read"
(a green eye).
Ranking
JabRef offers a rank from one to five yellow stars to rate your papers. By default, no rank is given.
Quality assured
An entry may be marked as quality assured (fourth column in the image below). For example, you can
mark the entries for which a thorough check of the field contents has been done.
Priority
You can set the priority of an entry from low (red flag) to high (green flag). For example, you can use it to
prioritize unread papers.
Printed
This field allows to state is the paper has been printed or not (sixth column in the image above).
The way the special fields are stored in the libraries can be set in File → Preferences → Entry
Table.
2 modes of storage are available:
With Write values of special fields as separated fields (default configuration since version
5.2), each special field is stored in a separate field of the entry.
With Synchronize with keywords enabled, the values of the special fields are stored twice:
in a separated field and as a keyword. Each change in a special field is reflected in the
keyword field, and, vice versa, each change in a keyword leads to a change in the special
field. Additionally, when loading a database or pasting a new entry, the keywords are used
to set the special field values.
Searching within the library
Press Ctrl + F.
Search history
To find the search history, you can right click in the search field. Only ten recent searches will be displayed
in the sub-menu. You can find clear history button under your search history.
Search settings
At the right of the search text field, 2 buttons allow for selecting some settings:
Regular expressions
Whether or not the search query uses regular expressions.
Case sensitivity
Whether or not the search query is case sensitive.
Simple search
In a normal search, the program searches your library for all occurrences of the words in your search
string, once you entered it. Only entries containing all words will be considered matches. To search for
sequences of words, enclose the sequences in double-quotes. For instance, the query progress "marine
aquaculture" will match entries containing both the word "progress" and the phrase "marine aquaculture".
All entries that do not match are hidden, leaving for display the matching entries only.
To stop displaying the search results, just clear the search field, press Esc or click on the "Clear" ( X )
button.
General syntax
In order to only search for content within specific fields and/or to include logical operators in the search
expression, a special syntax is available in which these can be specified. Both the field specification and
the search term support regular expressions.
To search for entries whose author contains miller, enter: author = miller . The = sign is actually a
shorthand for contains . Searching for an exact match is possible using matches or == .
If the search term contains spaces, enclose it in quotes. Do not use spaces in the field specification! E.g to
search for entries with the title "image processing", type: title = "image processing"
To search for entries with the title or the keyword "image processing", type: title|keywords =
"image processing" . To search for entries without the title or the keyword "image processing", type:
title|keywords != "image processing" It is also possible to chain search expressions. In
general, you can use and , or , not , and parentheses as intuitively expected:
XY X followed by Y
X|Y Either X or Y
The selection of field types to search (required, optional, all) is always overruled by the field specification
in the search expression. If a field is not given, all fields are searched. For example, video and year
== 1932 will search for entries with any field containing video and the field year being exactly
1932 .
Pseudo fields
anyfield contains
fruit : search for entries
having one of its fields
containing the word fruit. Thi
anyfield Search in any field identical to just writing appl
It may be more useful as
anyfield matches
apple , where one field mus
exactly apple for a match.
anykeyword matches
apple : search for entries wh
have the word apple among
keywords. However, as this a
matches pineapple , it ma
anykeyword Search among the keywords
be more useful in searches o
the type anykeyword
matches apple , which wi
not match apples or
pineapple
citationkey ==
miller2005 : search for an
key Search for citation keys
entry whose citation key is
miller2005
entrytype = thesis :
search entries whose type (as
Search for entries of a certain displayed in the entrytype
entrytype
type column) contains the word
thesis (which would be
phdthesis and mastersthes
Regular expressions (RegEx for short) define a language for representing patterns matching text, for
example when searching. There are different types of RegEx languages. JabRef uses regular expressions
as defined in Java. For extensive advanced information about Java's RegEx patterns, please have a look
at the Java documentation and at the Java tutorial.
Regular expressions and casing
By default, regular expressions do not account for upper/lower casing. Hence, while the examples below
are all in lower case, they match also upper- and mixed case strings.
keywords = \buv\b matches uv but not lluvia (it does match uv-b however)
author == black does not match john black, but author = \bblack\b does.
{n,m} means: at least n, but not more than m copies of the preceding character.
title =neighbou?r matches neighbour and neighbor, and also neighbours and neighbors, and
neighbouring and neighboring, etc.
title = neighbou?rs?\b matches neighbour and neighbor, and also neighbours and neighbors,
but neither neighbouring nor neighboring.
It means that to search for a string including a backslash, two consecutive backslashes ( \\ ) have to be
used: abstract = xori{\\c{c}}o matches xoriço.
The character " has a special meaning: it is used to group words into phrases for exact matches. So, if
you search for a string that includes a double quotation, the double quotation character has to be replaced
with the hexadecimal character 22 in ASCII table \x22 .
Neither a simple backslash \" , nor a double backslash \\" will work as an escape for " . Neither
author = {\"o}quist with regular expression disabled, nor author = \{\\\"O\}quist with
regular expression enabled, will find anything, even if the name {\"o}quist exists in the library.
Hence, to search for {\"o}quist as an author, you must input author = \{\\\x22o\}quist ,
with regular expressions enabled (Note: the \ , { , _ and the } are escaped with a backslash; see
above).
Greedy quantifiers
Quantifier Explanation
Reluctant quantifiers
Quantifier Explanation
Possessive quantifiers
Quantifier Explanation
JabRef can fetch automatically additional information about your entries. It can even get the publication
file!
To find identifiers (arxiv, DOI)_: select the entries and go to the menu Lookup → search document
identifier online.
To find the DOI: open the entry editor, and in the General tab, click on the button Lookup DOI.
To find the document related to an entry: select the entry and to the menu Lookup → search full text
documents online.
Be aware: The options above require your entry or entries to be filled with enough and correct
bibliographic information. If the entry holds incomplete or inaccurate data, fetching the identifier or text
document my fail.
The following features require your entry to have a DOI or ISBN and are disabled / greyed out otherwise.
Option A) In the entry table, right-click on the entry to complement, and select the menu Get
bibliographic data from DOI/ISBN/...
Option B) Open the entry editor, and in the General tab, click on the button Get bibliographic data
from DOI
Using any of the options opens the window Merge entries:
There it is possible to choose what is kept for each field: the left side, the right side, or the merged entry.
By default, the original entry (left) is kept, and any fields not present in the original entry are obtained from
the information collected from the DOI.
Finally, after selecting which fields to keep, you can decide to Merge entries. Alternatively, you can press
Cancel.
JabRef lets you link up your entries with files of any type stored on your system. Thereby, it uses the field
file , which contains a list of linked files. Each entry can have an arbitrary number of file links, and each
linked file can be opened quickly from JabRef. The fields url and doi are used as links to documents
on the web in the form of a URL or a DOI identifier, respectively (see URL and DOI in JabRef).
In BibTeX/biblatex terms, the file links are stored as text in the field file . From within JabRef, however,
they appear as an editable list of links accessed from the entry editor along with other fields.
2. Library → Library properties, items General file directory, and User-specific file directory.
One of these settings is required. Mostly the "Main file directory" is enough.
JabRef uses these 3 directories to search for the files: JabRef starts in the user-specific file directory, then
the general file directory, and, finally, the main file directory
JabRef enables setting a directory per database. When sharing a library across multiple persons, each
user might have a different directory. Either, each user can set his directory in the "Main file directory". In
case the group also shares papers and thus there are two directories (the private one and a group-shared
one), one can set a directory within the library (the "General file directory"). In case a user has a different
location of the shared folder (e.g., different paths on Linux and Windows), he can use the "User-specific file
directory". This setting is persisted in the bib file in a way that it does not overwrite the setting of another
user. For this, JabRef uses the username of the currently logged-in user ( -<loginname> is used as a
suffix in the jabref-meta field). So, both mary and aileen can set a different user-specific file
directory.
If JabRef saves an attached file and my login name matches the name stored in the bib file, it chooses
that directory. If no match is found, it uses the "General file directory" of the bib file. If that is not found, it
uses the one configured at File → Preferences → Linked files.
In some settings, the bib file is stored in the same directory as the PDF files. Then, one ignores all the
above directories and enable "Search and store files relative to library file location". In this case, JabRef
starts searching for PDF files in the directory of the bib file. It is also possible to achieve this result by
setting . as "General file directory" in the library properties.
Relative file directories obviously only work in the library properties for a bib file, e.g. a.bib Library →
Library properties → General file directory → papers . Assume to have two bib files: a.bib and
b.bib located in different directories: a.bib located at C:\a.bib and b.bib located at
X:\b.bib . When I click on the + icon in the general Tab of file a.bib , the popup is opened in the
directory C:\papers (assuming C:\papers exists).
Auto-linking files
If you have a file within or below one of your file directories with an extension matching one of the defined
external file types, and a name starting with (or matching) an entry's citation key, the file can be auto-
linked. JabRef will detect the file and display a "link-add" icon in the entry editor, at the left of the filename.
Click on the "link-add" icon to link this file to the entry.
The rules for which file names can be auto-linked to a citation key can be set up in File → Preferences →
Linked files, section Autolink files.
Filename format and file directory pattern
Files can be automatically renamed and organized in folders according to custom patterns. The pattern
syntax follows the same as for the Customize the citation key generator . JabRef can rename files
according to this pattern, either automatically or as part of a cleanup operation.
With file directory pattern, JabRef can automatically create subfolders and move the files into the directory
based on the defined pattern. As an example, you have a single folder, e.g. papers for all your PDFs linked
to their corresponding entry in JabRef. Now you want to arrange them according to defined groups. Let's
say you have two groups, Automation and Biology, with a couple of entries.
Now set the file directory pattern to: [groups:(unknown)]
If you now execute the cleanup action "Move files", JabRef will automatically move the files of the
corresponding in the file directory to the subfolders papers/Automation and papers/Biology respectively.
Explanation: The expression in the brackets says: Create a subdirectory based on the field “groups” of the
entry. If the field groups is not set or empty, use “unknown” as a fallback name for the directory. If you
have one entry assigned to multiple groups, the directory will have the name “groupA, groupB”.
For an entry, if you want to download a file and link it to the entry, you can do this by clicking the
Download button in the entry editor.
Download from URL
A dialog box will appear, prompting you to enter the URL. The file will be downloaded to your main file
directory, named based on the entry's citation key, and finally linked from the entry.
If you open the preferences (File → Preferences → Linked Files), you will find in the section Autolink files
an option called "Use regular expression search". Checking this option will allow you to enter your own
regular expression for search in the PDF directories.
[title] - All expressions in square brackets are replaced by their corresponding citation key
pattern.
The default for searches is **/.*[citationkey].*\\.[extension] . As you can see, this will
search in all subdirectories of the extension-based directory (for instance in the PDF directory) for any file
that has the correct extension and contains the citation key somewhere.
To access any of an entry's links, click on the icon with the right mouse button (or Ctrl + Click on
Mac OS X) to bring up a menu showing all links.
After selecting a set of entries, go to Edit → Manage field names and content, to set, append, rename
and clear a field.
To select all the entries of the current library, press CTRL + A .
Set the field name (by typing it in or using the drop-down menu), and select the action to be carried out.
Additionally, a checkbox allows overwriting the existing field values.
Set fields. Enter the field content to be used. For example, "Field name = owner" and "Set fields =
Smith" adds the line "owner = {Smith}," to the entries. If the field "owner" is already present in an entry,
it is not modified, except if "Overwrite existing field values" is checked.
Append to fields. Enter the string to be appended at the end of the field content (if the field does not
exist, it will be created). For example, "Field name = keywords" and "Add to fields = , programming"
adds the keyword "programming" to the list of keywords.
Rename field to. Enter the new name for this field. For example, "Field name = institution" and
"Rename fields = school" renames the field "institution" into "school". The field content is not altered.
Clear fields. This removes the field from the entries. For example, set the "Field name" to "comments".
If "Overwrite existing field values" is checked, all the fields "comments" (and their content) are
removed. If it is not checked, only the empty fields "comments" are removed.
Helpful groups
Group for the papers of your team: author=YOURSELF and author=COLLEAGUE1 and
author=COLLEAGUE2
Groups
Sort order
Library → Library properties.
Library properties
Check integrity
Save actions
Cleanup entries
Tidy up your library
JabRef can cleanup the entries of a library. To do a cleanup of the entries, go to Quality → Cleanup
entries. Then select the actions to be carried out.
under the table Enable field formatters . Then, under the table, you can select using 2 drop-down
menus:
the type of action to be carried out (such as HTML to LaTeX, which converts HTML code to LaTeX
code, as described in the window).See the list of formatting actions.
A click on the "circular arrow" icon enables a set of recommended formatting actions (the set of actions will
depend on your database type: BibTeX or biblatex).
See also
Check integrity
Save actions
This feature is accessible directly through Quality → Find duplicates. It is also used when importing new
entries from a supported reference format or directly from the Internet.
Detection of potential duplicates is done by an edit distance algorithm. Extra weighting is put on the fields
author, editor, title. and journal.
The differences between the two entries can be configured through the toolbox located at the top of the
window. From the toolbox, you can choose to show or hide differences, choose how to display differences
(Unified or Split) and you can also choose how to compare entries (by words or characters).
Unified View — In this mode, differences are shown on the right side.
Split View — In this mode, differences are shown on both sides, with deletions on the left side and
additions and updates on the right side.
Choose Entries Comparison Method
Highlight characters — This option compares entries values in terms of characters. It divides both
entry values into characters before comparing each character individually. This is perfect for
comparing values with small differences (1 or 2 different characters).
From the toolbox's top-left corner, you also can choose to select all the left entry values by clicking Left
or selecting all the right entry values by clicking Right . Be aware that selecting all entry values will
select a value even when it is empty.
Automatically remove exact duplicates. This button shows up if there are exact duplicates. Click it
to stop showing other exact duplicates and have them removed automatically.
Keep left — Keeps the left entry and removes the right entry.
Keep right — Keeps the right entry and removes the left entry.
Keep both — Keeps both entries. This usually means that you don't consider the entries to be
duplicates.
Keep merged — Keeps the merged entry only and removes the previous entries.
First, select the two entries to be merged. Then select the menu Quality → Merge entries. Alternatively,
select the right-click menu Merge entries.
Diff Highlighting
The differences between the two entries can be configured through the toolbox located at the top of the
window. From the toolbox, you can choose to show or hide differences, choose how to display differences
(Unified or Split) and you can also choose how to compare entries (by words or characters).
Unified View — In this mode, differences are shown on the right side.
Split View — In this mode, differences are shown on both sides, with deletions on the left side and
additions and updates on the right side.
Highlight characters — This option compares entries values in terms of characters. It divides both
entry values into characters before comparing each character individually. This is perfect for
comparing values with small differences (1 or 2 different characters).
From the toolbox's top-left corner, you also can choose to select all the left entry values by clicking Left
or selecting all the right entry values by clicking Right . Be aware that selecting all entry values will
select a value even when it is empty.
When merging entries, sometimes you want to select both values for a certain field. A common use case
for this would be wanting the merged entry to have both the left and right entry groups. Now, you can
simply click the merge button next to the groups label and we’ll take care of the rest. We’ll merge the left
and right entry groups, keeping only one copy of any common group. And this works for more than just
groups - you can also merge keywords, comments and files. So go ahead and give it a try - it’ll make your
life a lot easier.
There are two buttons at the end of each field cell: one for copying the content of the field cell, and the
other for opening links; at the moment, only URLs and DOIs can be opened.
Select or Edit Merged Entry Manually
For each field, you can select whether to choose the left entry value or the right one. You can do that by
clicking on the given field cell. Once you did that, the merged entry will update its content to reflect the new
change.
You can also edit the merged entry values manually. Doing so, will update the selected field cell if the left
or right cell equals that value you typed.
Finally, after selecting which fields to keep, you can decide to Merge entries. Alternatively, you can press
Cancel.
Field formats can be tidied up when saving the library. That ensures your entries to have consistent
formatting. In Library → Library properties, check Enable save actions. You can now select the actions
to be carried out using the 2 drop-down menus located under the table. Each action is defined by:
the type of action to be carried out (such as HTML to LaTeX, which converts HTML code to LaTeX
code, as described in the window).
A click on the "circular arrow" icon enables a set of recommended formatting actions (the set of actions will
depend on your library type: BibTeX or BibLaTeX).
Clear
Escape underscores
Escape underscores
Escape ampersands
Escapes ampersands.
HTML to LaTeX
https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttp%2Fwikipedia.org ⇒ http://wikipedia.org
HTML to Unicode
Move numbers followed by a space left of $ inside the equation (e.g. 0.35 $\mu$m )
Normalize date
Normalizes the date to ISO date format. Format date string to yyyy-mm-dd or yyyy-mm. Keeps the existing
String if it does not match one of the following formats:
Normalize month
Normalizes lists of persons to the Bib(la)TeX standard. This separates authors by "and"s with first names
after last name separated by a comma; first names are not abbreviated.
"John Smith and Black Brown, Peter" ⇒ "Smith, John and Black Brown, Peter"
"John von Neumann and John Smith and Black Brown, Peter" ⇒ "von Neumann, John and Smith,
John and Black Brown, Peter".
Normalize pages to Bib(la)TeX standard. Format page numbers, separated either by commas or double-
hyphens. Converts the range number format to page_number--page_number. Removes unwanted literals
except for letters, numbers, and -+ signs. Keeps the existing String if the resulting field does not match the
expected Regex.
1-2 ⇒ 1--2
1,2,3 ⇒ 1,2,3
{1}-{2} ⇒ 1--2
43+ ⇒ 43+
Invalid ⇒ Invalid
Converts ordinals to LaTeX superscripts, e.g. 1st, 2nd or 3rd. Will replace ordinal numbers even if they are
semantically wrong, e.g. 21rd
Shorten DOI
Unicode to LaTeX
LaTeX to Unicode
$\acute{\omega}$ ⇒ ώ
Units to LaTeX
Unprotect terms
Changes the first letter of all words to capital case and the remaining letters to lower case.
Lower case
Sentence case
Title case
Capitalize all words, but converts articles, prepositions, and conjunctions to lower case.
Upper case
Shortens lists of persons if there are more than 2 persons to "et al.".
Clear clear
Capitalize capitalize
OpenOffice/LibreOffice integration
JabRef is is a program for working with BibTeX and biblatex libraries. JabRef program uses no separate
internal file format but directly works with BibTeX and biblatex. That means, your BibTeX/biblatex file is
kept as is when opening in JabRef and saving again: You normally load and save your libraries directly in
the BibTeX/biblatex .bib format. In addition, you can also import and export bibliography libraries in a
number of other formats into JabRef.
JabRef allows you to push any entries in your main window to an external editor through the push-to-
external application feature. It works with Emacs, LyX/Kile, Texmaker, TeXstudio, Vim, and WInEdt.
To push as citation, first select the entries in your entry table that you would like to push. Then, either:
Press CTRL + L
Click on the dedicated button in the taskbar (left of the Generate citation key button)
By default the external editor used to push citations is TeXstudio. You can select another application in
Options → Preferences → External programs. Under the Push applications section, click on the
Application to push entries to field. This will cause a dropdown menu to appear, from which you are
then able to select from a list of all the external editors you have configured.
Preferences: External Programs: Configuration
You can configure the citation command at "Cite command". JabRef intelligently parses the value you
gave here. In the example, the congiration \cite{key1,key2} means, that the cite command is
\cite , the keys are enclosed by {...} and that multiple keys are separted by a comma ( , ). With
that, you can even support Pandoc's Markdown citation syntax. Configure it with [@key1,@key2] .
Once you have made your selection and click Save, the push-to-external application button icon will
change to match that of the selected external editor application.
When you click on the push-to-external application button, JabRef will export your selected entries to an
open LaTeX file in the selected external editor application. As an example, here is what happens when
you export one entry to TexStudio.
Initial Push to External Export
As long as you continue using the same external editor application, clicking on the push-to-external
application button for subsequent exports will just add new citations or extend an existing citation with
additional entries. Following the example above, here is what happens when you export a second entry to
TeXStudio on an existing citation, which is extended to include the new entry in your LaTeX document.
Hints on Emacs
There are the tools emacsclient and gnuclient . Both support GNU Emacs. Additionally,
gnuclient supports XEmacs. As default configuration, JabRef uses emacsclient . JabRef passes
-e as parameter, because JabRef adds the emacs command after the given parameters. For a
discussion on the use of emacsclient , see a stackoferflow answer. The parameter -n (for --no-
wait ) is also passed, but that is not necessary.
On Windows, you can install emacs using choco install emacs . Then, start emacs. Afterwards,
start the emacs daemon with following command:
C:\tools\emacs\bin\emacs.exe --daemon
You can import your citations into a Microsoft Word document through JabRef's export feature. Please
follow the steps below for instructions on how to export your JabRef sources into a Microsoft Word
document.
1. Select the "File" tab in the upper lefthand corner of JabRef, hover over "Export", and select "Export
selected entries". Be sure to save your file as a "MS Office 2007" file.
4. Click on "Bibliography" under the "References" tab to add your cited sources.
For a detailed list of the fields which are exported in the Office 2007 XML format see the following page.
The only problem in the export could be when you have a "company" as author. That is simply
exported as author and not in the company field.
Introduction
This feature offers an interface for inserting citations and formatting a Bibliography in an OpenOffice or
LibreOffice Writer document from JabRef.
Throughout this help document, whenever the name OpenOffice is used, it can be interchanged with
LibreOffice.
After the connection has been established, you can insert citations by selecting one or more entries in
JabRef and using the Push to OpenOffice button in the dropdown menu of JabRef's toolbar, or by using
the appropriate button in the OpenOffice panel in the side pane. This will insert citations for the selected
entries at the current cursor position in the OpenOffice document, and update the bibliography to contain
the full reference.
Note: JabRef does not use OpenOffice's built-in bibliography system, because of the limitations of that
system. A document containing citations inserted from JabRef will not generally be compatible with other
reference managers such as Bibus and Zotero.
Two different types of citations can be inserted - either a citation in parenthesis, "(Author 2007)", or an in-
text citation, "Author (2007)". This distinction is only meaningful if author-year citations are used instead of
numbered citations, but the distinction will be preserved if you switch between the two styles.
If you modify entries in JabRef after inserting their citations into OpenOffice, you will need to synchronize
the bibliography. By default, Automatically sync bibliography when inserting citations is enabled. This
can be disabled by clicking the Settings button and unchecking Automatically sync bibliography when
inserting citations. The Sync OO bibliography button will update all entries of the bibliography, provided
their citation keys have not been altered (JabRef encodes the citation key into the reference name for each
citation to keep track of which citation key the original JabRef entry has).
By clicking the Select style button you can bring up a window that allows selection of either the default
style or an external style file. If you want to create a new style based on the default, you can click the View
button to bring up the default style contents, which can be copied into a text editor and modified.
To choose an external style file, you have two options. Either you can choose a style file directly, or you
can set a style file directory. If you do the latter, you will see a list of styles from that directory (and
subdirectories), and can choose one from that list.
To edit an already loaded custom style file or to reload changes that you made to a style file, click on
Select style to bring up the style selection window, then right-click the currently loaded file to bring up a
menu that allows you to choose either "Edit" or "Reload".
CAUTION: Please take care that your style file is saved using UTF-8 for character encoding. If you use
another character encoding (even other unicode encodings such as UTF-16 or UTF-32), JabRef will not
be able to process your style file.
JOURNALS
Journal name 1
Journal name 2
PROPERTIES
Title="References"
IsSortByPosition="false"
IsNumberEntries="false"
ReferenceParagraphFormat="Default"
ReferenceHeaderParagraphFormat="Heading 1"
CITATION
AuthorField="author/editor"
YearField="year"
MaxAuthors="3"
MaxAuthorsFirst="3"
AuthorSeparator=", "
AuthorLastSeparator=" & "
EtAlString=" et al."
ItalicEtAl="true"
YearSeparator=" "
InTextYearSeparator=" "
BracketBefore="["
BracketAfter="]"
BracketBeforeInList="["
BracketAfterInList="]"
CitationSeparator="; "
UniquefierSeparator=","
GroupedNumbersSeparator="-"
MinimumGroupingCount="3"
FormatCitations="false"
CitationCharacterFormat="Default"
MultiCiteChronological="false"
PageInfoSeparator="; "
LAYOUT
article=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}
(<b>\year\uniq</b>). <i>\title</i>, \journal \volume\begin{pages} :
\format[FormatPagesForHTML]{\pages}\end{pages}.
book=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}\begin{editor}
\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\editor} (Ed.)\end{editor},
<b>\year\uniq</b>. <i>\title</i>. \publisher, \address.
incollection=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}
(<b>\year\uniq</b>). <i>\title</i>. In: \format[AuthorLastFirst,
AuthorAbbreviator,AuthorAndsReplacer]{\editor} (Ed.), <i>\booktitle</i>, \publisher.
inbook=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}
(<b>\year\uniq</b>). <i>\chapter</i>. In: \format[AuthorLastFirst,
AuthorAbbreviator,AuthorAndsReplacer]{\editor} (Ed.), <i>\title</i>, \publisher.
phdthesis=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}
(<b>\year\uniq</b>). <i>\title</i>, \school.
default=\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer]{\author}
(<b>\year\uniq</b>). <i>\title</i>, \journal \volume\begin{pages} :
\format[FormatPagesForHTML]{\pages}\end{pages}.
(Note that the layout for each entry type must be constrained to a single line in the style file - above, the
lines are broken up to improve readability.)
Regarding tool support, there is the Export-Filter-Editor for Jabref to quickly create a style file.
Global properties
The PROPERTIES section describes global properties for the bibliography. The following table describes
the available properties:
Property Type Default value Description
Citation properties
The CITATION section describes the format of the citation markers inserted into the text.
The following table gives a brief description of all the available citation properties. Properties that are not
given in the style file will keep their default value.
Property Type Default value Description
If specified, this
property overrides
AuthorLastSepa
AuthorLastSeparatorIn
string ator for in-text
Text
citations such as
Smith & Jones
(2001) .
If
FormatCitation
is set to true , the
character format wit
CitationCharacterForm the name given by t
string Default
at property will be app
to citations. The
character format mu
be defined in your
OpenOffice docume
Determines whethe
formatting should be
applied to citations.
true, a character form
will be applied to th
citations. The prope
CitationCharac
rFormat controls
which format should
FormatCitations boolean false
applied, and the giv
format must be defin
in your OpenOffice
document. Any font
settings and effects
can be chosen with
OpenOffice for your
chosen character
format.
If true , multiple
entries in the same
citation are sorted
MultiCiteChronological boolean true
chronologically,
otherwise they are
sorted alphabeticall
If numbered entries are used, the BracketBefore and BracketAfter properties are the most
important - they define which characters the citation number is wrapped in. The citation is composed as
follows: [BracketBefore][Number][BracketAfter] where [Number] is the number of the
citation, determined according to the ordering of the bibliography and/or the position of the citation in the
text. If a citation refers to several entries, these will be separated by the string given in the property
CitationSeparator (for instance, if CitationSeparator =;, the citation could look like
[2;4;6] ). If two or more of the entries have a series of consecutive numbers, the numbers can be
grouped (for instance [2-4] for 2, 3 and 4 or [2;5-7] for 2, 5, 6 and 7). The property
GroupedNumbersSeparator (default - ) determines which string separates the first and last of the
grouped numbers. The integer property MinimumGroupingCount (default 3) determines what number
of consecutive numbers is required before entries are grouped. If MinimumGroupingCount =3, the
numbers 2 and 3 will not be grouped, while 2, 3, 4 will be. If MinimumGroupingCount =0, no grouping
will be done regardless of the number of consecutive numbers.
If numbered entries are not used, author-year citations will be created based on the citation properties. A
parenthesis citation is composed as follows: [BracketBefore][Author][YearSeparator]
[Year][BracketAfter] where [Author] is the result of looking up the field or fields given in the
AuthorField property, and formatting a list of authors. The list can contain up to MaxAuthors names
- if more are present, the list will be composed as the first author plus the text specified in the property
EtAlString . If the property MaxAuthorsFirst is given, it overrides MaxAuthors the first time
each citation appears in the text.
If several, slash-separated, fields are given in the AuthorField property, they will be looked up
successively if the first field is empty for the given entry. In the example above, the "author" field will be
used, but if empty, the "editor" field will be used as a backup.
The names in the author list will be separated by the text given by the AuthorSeparator property,
except for the last two names, which will be separated by the text given by AuthorLastSeparator . If
the property AuthorLastSeparatorInText is given, it overrides the former for citations of the in-text
type. This makes it possible to get citations like (Olsen & Jensen, 2008) and Olsen and
Jensen (2008) for the same style.
[Year] is the result of looking up the field or fields given in the [YearField] property.
If two different cited sources have the same authors and publication year, and author-year citations are
used, their markers will need modification in order to be distinguishable. This is done automatically by
appending a letter after the year for each of the publications; 'a' for the first cited reference, 'b' for the next,
and so on. For instance, if the author "Olsen" has two cited papers from 2005, the citation markers will be
modified to (Olsen, 2005a) and (Olsen, 2005b) . In the bibliography layout, the placement of the
"uniquefier" letter is indicated explicitly by inserting the virtual field uniq .
If several entries that have been "uniquefied" are cited together, they will be grouped in the citation marker.
For instance, of the two entries in the example above are cited together, the citation marker will be
(Olsen, 2005a, b) rather than Olsen, 2005a; Olsen, 2005b) . The grouped uniquefier
letters (a and b in our example) will be separated by the string specified by the
UniquefierSeparator property.
Author-year citations referring more than one entry will by default be sorted chronologically. If you wish
them to be sorted alphabetically, the citation property MultiCiteChronological should be set to
false. .
The LAYOUT section describes how the bibliography entry for each entry type in JabRef should appear.
Each line should start with either the name of an entry type, or the word default , followed by a '='. The
default layout will be used for all entry types for which an explicit layout hasn't been given.
The remainder of each line defines the layout, with normal text and spaces appearing literally in the
bibliography entry. Information from the entry is inserted by adding \field markers with the appropriate
field name (e.g. \author for inserting the author names). Formatting information for the field can be
included here, following JabRef's standard export layout syntax. Refer to JabRef's documentation on
custom export filters for more information about which formatters are available and tooling hints.
If author-year citations are used, you have to explicitly specify the position of the "uniquefier" letter that is
added to distinguish similar-looking citations. This is done by including a marker for the virtual field uniq ,
typically right after the year (as shown in the example style file). The uniq field is automatically set
correctly for each entry before its reference text is laid out.
To indicate formatting in the bibliography, you can use the HTML-like tag pairs <b> </b>, <i> </i>, <sup>
</sup> and <sub> </sub> to specify bold text, italic text, superscript and subscript, respectively.
If you are using numbered citations, the number for each entry will be automatically inserted at the start of
each entry in the reference list. By default, the numbers will be enclosed in the same brackets defined for
citations. The optional citation properties BracketBeforeInList and BracketAfterInList
override BracketBefore and BracketAfter if set. These can be used if you want different types of
brackets (or no brackets) in the reference list. Note that these need not be brackets as such - they can be
any combination of characters.
Known issues
Make sure to save your Writer document in OpenDocument format (odt). Saving to Word format will
lose your reference marks.
Otherwise, try to use the external tool JabRef LibreOffice Converter. This LibreOffice extension
converts the reference marks to code that can be saved.
The snap version of LibreOffice and JabRef may cause connection issues. Try to use the *deb
versions instead.
Open Office 4 will only work running under a 32-bit Java JRE/JDK on Windows because there is no
64-bit version of OpenOffice yet.
Share
JabRef allows sharing both Bib(La)TeX library and SQL database. You can also export your library to a
variety of formats.
Export
Send as email
Sharing a Bib(la)TeX Library
When sharing a Bib(la)TeX library, JabRef automatically recognizes a change in the bib file on disk and
notifies the user of it. This works well on network drives.
Note: the use of a version control system (SVN, git, etc.) is recommended as this will allow for reverting
changes.
To make the sharing of a Bib(la)TeX library easier, it is recommended to set specific library properties. In
the menu Library → Library properties:
Define a General file directory , which will be used to store shared PDF (and other) files.
Check Refuse to save the library before external changes have been
reviewed .
Check Enable save formatters , and defines these actions, to help enforcing a consistent
format for the entries.
Shared SQL Database
JabRef is able to support collaborative work using a shared SQL database.
Usage
To use this feature you have to connect to a remote database. To do so you have to open File in the menu
bar and then click the Connect to shared database item. The Connect to shared database dialog will
open and you will have to fill in the shared's database connection settings. Under the field Database type
you can choose between PostgreSQL (at least version 9.1), MySQL (at least 5.5, not recommended,
because there is no live synchronization), and Oracle depending on your shared database. Then, you
have to fill out the remaining fields with the according information. If you like you can save your password
by clicking the Remember password? checkbox.
SSL configuration
Since version 5.0 JabRef supports secure SSL connection to the database. For PostgreSQL make sure
the server supports SSL and you have correctly setup the certificates. Then convert the client certificates
into a java readable format and import them into a (custom) keystore. For MySQL the procedure is similar.
Setting up MySQL with SSL and converting the certificates for the java keystore. However, it has only been
tested with PostgreSQL. Once the certificates are imported into the keystore, specify the path to the
keystore file in the connection dialog and the password for accessing the keystore.
After connecting to your shared database, your main window should look like this:
Screenshot of JabRef with an open shared database
JabRef will automatically detect your changes and push them to the shared side. JabRef will also
constantly check if there is a newer version available. If you experience connection issues, you can pull
changes from your shared database via the icon in the icon bar. If a newer version is available, JabRef will
try to automatically merge the new version and your local copy. If this fails, the Update refused dialog will
show up. You will then have to manually merge using the Update refused dialog. The dialog helps you by
pointing out the differences, you then will have to choose if you want to keep your local version or update
to the shared version. Confirm your merge by clicking on Merge entries.
Screenshot of Update refused dialog
The Update refused dialog can also take a different form, if the BibEntry you currently work on has been
deleted on the shared side. You can choose to keep the BibEntry in the database by clicking Keep or
update to the shared side and click Close.
Try it out
You can test the shared SQL database support by using https://www.freemysqlhosting.net for MySQL (not
recommended) and https://www.elephantsql.com/ for PostgreSQL (recommended).
Migration of pre-3.6 SQL databases into a
shared SQL database
Context
This situation occurs when you try to open an SQL database which was created with JabRef version older
than 3.6.
With release of JabRef 3.6 the SQL database structure has changed. So all SQL databases with an pre-
3.6 structure are no longer supported.
Migration
To migrate your pre-3.6 SQL database into new shared SQL database you have to follow these steps:
Open JabRef and goto File -> Import from external SQL database
After that the content is available as a shared SQL database and you can work live on it. More information
about the live editing.
Export
The order of the exported entries can be set in File → Preferences, tab File, under the menu "Export sort
order".
This help page should describe the menu File -> Export (and the various file formats available).
Please, populate this page. Visit our page about how to edit a help page.
See also:
Import
JabRef allows you to define and use your own export filters, in the same way as the standard export filters
are defined. An export filter is defined by one or more layout files, which with the help of a collection of
built-in formatter routines specify the format of the exported files. Your layout files must be prepared in a
text editor outside of JabRef.
The custom export format of JabRef is an alternative to the Citation Style Language, which is an XML-
based format to describe bibliographic rendering.
Regarding tool support, there is the Export-Filter Editor for Jabref to quickly create export filters.
Layout files
Let us assume that we are creating an HTML export filter. While the export filter only needs to consist of a
single .layout file, which in this case could be called html.layout, you may also want to add two files called
html.begin.layout and html.end.layout. The former contains the header part of the output, and the latter the
footer part. JabRef will look for these two files whenever the export filter is used, and if found, either of
these will be copied verbatim to the output before or after the individual entries are written.
Note that these files must reside in the same directory as html.layout, and must be named by inserting
.begin and .end, respectively. In our example export filter, these could look like the following:
html.end.layout: </body></html>
The file html.layout provides the default template for exporting one single entry. If you want to use different
templates for different entry types, you can do this by adding entry-specific .layout files. These must also
reside in the same directory as the main layout file, and are named by inserting .entrytype into the name
of the main layout file. The entry type name must be in all lowercase. In our example, we might want to add
a template for book entries, and this would go into the file html.book.layout. For a PhD thesis we would
add the file html.phdthesis.layout, and so on. These files are similar to the default layout file, except that
they will only be used for entries of the matching type. Note that the default file can easily be made general
enough to cover most entry types in most export filters.
Layout files are created using a simple markup format where commands are identified by a preceding
backslash. All text not identified as part of a command will be copied verbatim to the output file.
Field commands
An arbitrary word preceded by a backslash, e.g. \author , \editor , \title or \year , will be
interpreted as a reference to the corresponding field, which will be copied directly to the output.
Field formatters
Often there will be a need for some preprocessing of the field contents before output. This is done using a
field formatter - a java class containing a single method that manipulates the contents of a field.
A formatter is used by inserting the \format command followed by the formatter name in square braces,
and the field command in curly braces, e.g.:
\format[ToLowerCase]{\author}
You can also specify multiple formatters separated by commas. These will be called sequentially, from left
to right, e.g.
\format[ToLowerCase,HTMLChars]{\author}
will cause the formatter ToLowerCase to be called first, and then HTMLChars will be called to format the
result. You can list an arbitrary number of formatters in this way.
The argument to the formatters, withing the curly braces, does not have to be a field command. Instead,
you can insert normal text, which will then be passed to the formatters instead of the contents of any field.
This can be useful for some fomatters, e.g. the CurrentDate formatter (described below).
Some formatters take an extra argument, given in parentheses immediately after the formatter name. The
argument can be enclosed in quotes, which is necessary if it includes the parenthesis characters. For
instance, \format[Replace("\s,_")]{\journal} calls the Replace formatter with the argument
\s,_ (which results in the "journal" field after replacing all whitespace by underscores).
Conditional output
Some static output might only make sense if a specific field is set. For instance, say we want to follow the
editor names with the text (Ed.) . This can be done with the following text:
\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)
However, if the editor field has not been set - it might not even make sense for the entry being exported
- the (Ed.) would be left hanging. This can be prevented by instead using the \begin and \end
commands:
The \begin and \end commands make sure the text in between is printed if and only if the field
referred in the curly braces is defined for the entry being exported.
A conditional block can also be dependent on more than one field, and the content is only printed when
simple boolean conditions are satisfied. Three boolean operators are provided:
OR operator : | , ||
NOT operator : !
For example, to output text only if both year and month are set, use a block like the following:
\begin{year&&month}Month: \format[HTMLChars]{\month}\end{year&&month}
which will print "Month: " plus the contents of the month field, but only if also the year field is defined.
As an example for the usage of the NOT operator, consider the following:
\begin{!year}\format[HTMLChars]{(no year)}\end{!year}
Here, "no year" is printed as output text if no year field is defined.
Note: Use of the \begin and \end commands is a key to creating layout files that work well with a
variety of entry types.
Grouped output
If you wish to separate your entries into groups based on a certain field, use the grouped output
commands. Grouped output is very similar to conditional output, except that the text in between is printed
only if the field referred in the curly braces has changed value.
For example, let's assume I wish to group by keyword. Before exporting the file, make sure you have
sorted your entries based on keyword. Now use the following commands to group by keyword:
CurrentDate : outputs the current date. With no argument, this formatter outputs the current date
and time in the format "yyyy.MM.dd hh:mm:ss z" (date, time and time zone). By giving a different format
string as argument, the date format can be customized. For example \format[CurrentDate]
{yyyy.MM.dd} will give the date only, e.g. 2005.11.30.
DateFormatter : formats a date. With no argument, the date is given in ISO-format (yyyy-MM-dd),
which is also the expected format of the input. The argument may contain yyyy , MM , and dd in any
combination. For example \format[DateFormatter(MM/yyyy)]{\date} will output 07/2016
if the date field contains 2016-07-15.
Default : takes a single argument, which serves as a default value. If the string to format is non-
empty, it is output without changes. If it is empty, the default value is output. For instance,
\format[Default(unknown)]{\year} will output the entry's year if set, and "unknown" if no
year is set.
FileLink(filetype) : if no argument is given, this formatter outputs the first external file link
encoded in the field. To work, the formatter must be supplied with the contents of the "file" field.
This formatter takes the name of an external file type as an optional argument, specified in
parentheses after the formatter name. For instance, \format[FileLink(pdf)]{\file}
specifies pdf as an argument. When an argument is given, the formatter selects the first file link of
the specified type. In the example, the path to the first PDF link will be output.
FirstPage : returns the first page from the "pages" field, if set. For instance, if the pages field is set
to "345-360" or "345--360", this formatter will return "345".
FormatChars : This formatter converts LaTeX character sequences their equicalent unicode
characters and removes other LaTeX commands without handling them.
HTMLChars : replaces TeX-specific special characters (e.g. {\"{a}} or {\sigma}) with their
HTML representations, and translates LaTeX commands \emph , \textit , \textbf , \texttt ,
JournalAbbreviator : The given input text is abbreviated according to the journal abbreviation
lists. If no abbreviation for input is found (e.g. not in list or already abbreviated), the input will be
returned unmodified. For instance, when using \format[JournalAbbreviator]{\journal} ,
"Physical Review Letters" gets "Phys. Rev. Lett."
LastPage : returns the last page from the "pages" field, if set. For instance, if the pages field is set to
"345-360" or "345--360", this formatter will return "360".
NotFoundFormatter : Formatter used to signal that a formatter hasn't been found. This can be
used for graceful degradation if a layout uses an undefined format.
Number : outputs the 1-based sequence number of the current entry in the current export. This
formatter can be used to make a numbered list of entries. The sequence number depends on the
current entry's place in the current sort order, not on the number of calls to this formatter.
RemoveBracketsAddComma : removes all curly brackets "{" or "}". The closing curly bracket is
replaced by a comma.
RemoveLatexCommands : removes LaTeX commands like \em , \textbf , etc. If used together
with HTMLChars or XMLChars , this formatter should be called last.
RemoveTilde : replaces the tilde character used in LaTeX as a non-breakable space by a regular
space. Useful in combination with the NameFormatter discussed in the next section.
RisAuthors : to be documented.
RisKeywords : to be documented.
RisMonth : to be documented.
RTFChars : replaces TeX-specific special characters (e.g. {^a} or {"{o}}) with their RTF
representations, and translates LaTeX commands \emph, \textit, \textbf into RTF equivalents.
ShortMonth : formats the month field to use 3 letter BibTeX strings ( jan , feb , mar , apr , ...).
XMLChars : replaces TeX-specific special characters (e.g. {^a} or {"{o}}) with their XML
representations.
To accommodate for the numerous citation styles, the Authors formatter allows flexible control over the
layout of the author list. The formatter takes a comma-separated list of options, by which the default values
can be overridden. The following option/value pairs are currently available, where the default values are
given in curly brackets.
LastFirst : the authors' surnames are followed by their first names, separated by a comma.
FullName : shows full author names; first names are not abbreviated.
MiddleInitial : first name is shown, but all middle names are abbreviated.
NoPunc : all full stops and commas are removed from the author name.
NoPeriod : all full stops are removed from the author name.
AuthorSep = [ {Comma} | And | Colon | Semicolon | Sep=<string> ]
specifies the separator to be used between authors. Any separator can be specified, with the Sep=
<string> option. Note that appropriate spaces need to be added around string .
If an option is unspecified, the default value (shown in curly brackets above) is used. Therefore, only layout
options that differ from the defaults need to be specified. The order in which the options are defined is
(mostly) irrelevant. So, for example,
\format[Authors(Initials,Oxford)]{\author}
is equivalent to
\format[Authors(Oxford,Initials)]{\author}
As mentioned, the order in which the options are specified is irrelevant. There is one possibility for
ambiguity, and that is if both AuthorSep and AuthorLastSep are given. In that case, the first
applicable value encountered would be for AuthorSep , and the second for AuthorLastSep . It is
good practise to specify both when changing the default, to avoid ambiguity.
Examples
Given the following authors, "Joe James Doe and Mary Jane and Bruce Bar and Arthur Kay" ,the
Authors formatter will give the following results:
Authors() , or equivalently,
Authors(FirstFirst,Initials,FullPunc,Comma,And,inf,EtAl= et al.)
J. J. Doe, M. Jane, B. Bar and A. Kay
Authors(LastFirstFirstFirst,MiddleInitial,Semicolon)
Doe, Joe J.; Mary Jane; Bruce Bar and Arthur Kay
Authors(LastFirst,InitialsNoSpace,NoPunc,Oxford)
Doe JJ, Jane M, Bar B, and Kay A
Authors(2,EtAl= and others)
J. J. Doe and others
Most commonly available citation formats should be possible with this formatter. For even more advanced
options, consider using the Custom Formatters detailed below.
This formatter iterates over all file links, or all file links of a specified type, outputting a format string given
as the first argument. The format string can contain a number of escape sequences indicating file link
information to be inserted into the string.
This formatter can take an optional second argument specifying the name of a file type. If specified, the
iteration will only include those files with a file type matching the given name (case-insensitively). If
specified as an empty argument, all file links will be included.
After the second argument, pairs of additional arguments can be added in order to specify regular
expression replacements to be done upon the inserted link information before insertion into the output
string. A non-paired argument will be ignored. In order to specify replacements without filtering on file
types, use an empty second argument.
\i : This inserts the iteration index (starting from 1), and can be useful if the output list of files should
be enumerated.
For instance, an entry could contain a file link to the file "/home/john/report.pdf" of the "PDF" type with
description "John's final report". Using the WrapFileLinks formatter with the following argument:
\format[WrapFileLinks(\i. \d (\p))]{\file}
If the entry contained a second file link to the file "/home/john/draft.txt" of the "Text file" type with description
'An early "draft"', the output would be as follows:
If the formatter was called with a second argument, the list would be filtered. For instance:
If we wanted this output to be part of an XML styled output, the quotes in the file description could cause
problems. Adding two additional arguments to translate the quotes into XML characters solves this:
Custom formatters
If none of the available formatters can do what you want to achieve, you can add your own by
implementing the net.sf.jabref.export.layout.LayoutFormatter interface. If you insert
your class into the net.sf.jabref.export.layout.format package, you can call the formatter
by its class name only, like with the standard formatters. Otherwise, you must call the formatter by its fully
qualified name (including package name). In any case, the formatter must be in your classpath when
running JabRef.
You can define your own formatter in the preference tab "Name Formatter" using the following format and
then use it with the name given to it as any other formatter
<case1>@<range11>@<format>@<range12>@<format>@<range13>...@@
<case2>@<range21>@... and so on.
This format first splits the task to format a list of author into cases depending on how many authors there
are (this is since some formats differ depending on how many authors there are). Each individual case is
separated by @@ and contains instructions on how to format each author in the case. These instructions
are separated by a @.
Cases are identified using integers (1, 2, 3, etc.) or the character * (matches any number of authors) and
will tell the formatter to apply the following instructions if there are a number of less or equal of authors
given.
Ranges are either <integer>..<integer> , <integer> or the character * using a 1 based index
for indexing authors from the given list of authors. Integer indexes can be negative to denote them to start
from the end of the list where -1 is the last author.
For instance with an authorlist of "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay":
1..3 will affect Joe, Mary and Bruce
The four letters v, f, l, j indicate the name parts von, first, last, jr which are used within curly braces. A single
letter v, f, l, j indicates that the name should be abbreviated. If one of these letters or letter pairs is
encountered JabRef will output all the respective names (possibly abbreviated), but the whole expression
in curly braces is only printed if the name part exists.
For instance if the format is "{ll} {vv {von Part}} {ff}" and the names are "Mary Kay and John von Neumann",
then JabRef will output "Kay Mary" (with two space between last and first) and "Neuman von von Part
John".
I give two examples but would rather point you to the BibTeX documentation.
Small example: "{ll}, {f.}" will turn "Joe Doe" into "Doe, J."
Large example:
To turn:
"Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"
into
This will open your default email application and automatically paste the entries in their raw BibTeX
format. Once your correspondents have received the email, they will be able to directly copy and paste the
entries into JabRef (or use them in other ways).
Once Send as email is pressed, JabRef will also automatically open the folder of attached files, as
long as the option automatically open folders of attached files is enabled at File →
Preferences → External programs → Sending of emails. Attaching these files to your email is possible
by dragging and dropping the PDF files into your favorite email application.
Configuration
JabRef is highly customizable, allowing users to get the behaviour they expect.
The File → Preference menu command allows you to configure the JabRef interface, and to set the
default features of your libraries. Features specific to a given library are configured in the Library menu.
For example, while the default key patterns are set in File → Preferences → Citation key generator →
Key patterns, key patterns specific to a library can be set in Library → Citation key patterns.
Library properties
The pattern used in the auto generation of citation labels can be set for each of the standard entry types in
File → Preferences, tab Citation key generator. A detailed description can be found in the default
citation key pattern section.
For an entry with the title An awesome paper on JabRef , the citation key pattern
demo[TITLE:abbr] will provide the key demoAapoJ .
Several special field markers are offered, which extract only a specific part of a field. Feel free to suggest
new special field markers.
[authFirstFull] : Get the von part and last name of the first author
[auth.etal] : The last name of the first author, and the last name of the second author if there are
two authors or .etal if there are more than two.
[authEtAl] : The last name of the first author, and the last name of the second author if there are
two authors or EtAl if there are more than two. This is similar to auth.etal . The difference is that
the authors are not separated by . and in case of more than 2 authors EtAl instead of .etal is
appended.
[auth.auth.ea] : The last name of the first two authors, separated by . . If there are more than
two authors, adds .ea .
[authorsN] : The last name of up to N authors. If there are more authors, EtAl is appended
[authIniN] : The beginning of each author's last name, using at most N characters in total.
[authorIni] : The first 5 characters of the first author's last name, and the last name initial of the
remaining authors.
[authshort] : The last name if one author is given; the first character of up to three authors' last
names if more than one author is given. A plus character is added, if there are more than three authors
Two to four authors: The first letter of the last name of each author
More than four authors: The first letter of the first three authors' last name. A + is added at the end
if it is not in the list of unwanted characters.
Note: If there is no author (as in the case of an edited book), then all of the above [auth...] markers
will use the editor(s) (if any) as a fallback. Thus, the editor(s) of a book with no author will be treated as the
author(s) for label-generation purposes. If you do not want this behavior, i.e. you require a marker which
expands to nothing if there is no author, use pureauth instead of auth in the above codes. For
example, [pureauth] , or [pureauthors3] .
The name of institutions and companies often contain spaces and words that have a specific meaning in
the author field, e.g., and . The full name should be enclosed in braces ( {} ) to prevent the name from
being miss-parsed for these cases. Names enclosed in braces are often abbreviated while generating
citation keys to avoid creating excessively long keys. For example, when using [authors] , author =
{European Union Aviation Safety Agency} is abbreviated to Agency , whereas author =
{{European Union Aviation Safety Agency}} is abbreviated to EUASA .
Editor-related field markers
[edtrIniN] : The beginning of each editor's last name, using at most N characters
[editorIni] : The first 5 characters of the first editor's last name, and the last name initials of the
remaining editors
[edtr.edtr.ea] : The last name of the first two editors, separated by . . If there are more than two
editors, adds .ea
[edtrshort] : The last name if one editor is given; the first character of up to three editors' last
names if more than one editor is given. A plus character is added, if there are more than three editors
[shorttitle] : The first 3 words of the title, ignoring any function words (see below). For example,
An awesome paper on JabRef becomes AwesomePaperJabref
[veryshorttitle] : The first word of the title, ignoring any function words (see below). For
example, An awesome paper on JabRef becomes Awesome
[camel] : Capitalize and concatenate all the words of the title. For example, An awesome paper
on JabRef becomes AnAwesomePaperOnJabref
[title] : Capitalize all the significant words of the title, and concatenate them. For example, An
awesome paper on JabRef becomes AnAwesomePaperonJabref
JabRef considers the following words to be function words: "a", "about", "above", "across", "against",
"along", "among", "an", "and", "around", "at", "before", "behind", "below", "beneath", "beside", "between",
"beyond", "but", "by", "down", "during", "except", "for", "for", "from", "in", "inside", "into", "like", "near", "nor",
"of", "off", "on", "onto", "or", "since", "so", "the", "through", "to", "toward", "under", "until", "up", "upon",
"with", "within", "without", "yet".
[firstpage] : The number of the first page of the publication (Caution: this will return the lowest
number found in the pages field, i.e. for 7,41,73--97 it will return 7 .)
[pageprefix] : The non-digit prefix of pages (like L for L7 ) or "" if no non-digit prefix exists (like
"" for 7,41,73--97 )
[keywordN] : Keyword number N from the “keywords” field, assuming keywords are separated by
commas or semicolons
[lastpage] : The number of the last page of the publication (See the remark on firstpage )
Bibentry fields
In addition to the special field markers, most BibTeX, biblatex, and JabRef field names can be accessed by
their capitalized name directly. If you regularly use a field name not on this list, you are encouraged to add
it.
[DATE] : 2020-09-25
[DAY] : 02 becomes 2
[GROUPS] : The groups or subgroups in JabRef. Subgroup AppleTrees and group Trees
becomes AppleTreesTrees
[YEAR] : 2020
Note: You can use any field present in the entry. However, multi-line fields like comment or abstract can
produce unexpected results, and their use is discouraged. The customize entry types section contains
more information about fields and their customization.
Modifiers
A field name (or one of the above pseudo-field names) may optionally be followed by one or more
modifiers.
Generally, modifiers are applied in the order they are specified. In the following, we present a list of the
most common modifiers alongside a short explanation:
:abbr : Abbreviates the text produced by the field name or special field marker. Only the first
character and subsequent characters following white space will be included. For example:
[journal:abbr] would from the journal name Journal of Fish Biology produce
JoFB
[title:abbr] would from the title An awesome paper on JabRef produce AAPoJ
[camel:abbr] would from the title An awesome paper on JabRef produce AAPOJ
:capitalize : Changes the first character of each word to uppercase, all other characters are
converted to lowercase. For example, an example title will be converted to An Example
Title
:titlecase : Changes the first character of all normal words to uppercase, all function words (see
above) are converted to lowercase. Example: example title with An function Word will
be converted to Example Title with an Function Word
:truncateN : Truncates the string after the N:th character and trims any trailing whitespaces. For
example, [fulltitle:truncate3] will convert A Title to A T .
:sentencecase : Changes the first character of the first word to uppercase, all remaining words are
converted to lowercase. Example: an Example Title will be converted to An example title
:(x) : The string between the parentheses will be inserted if the field marker preceding this modifier
resolves to an empty value. The placeholder x may be any string. For instance, the marker
[VOLUME:(unknown)] will return the entry's volume if set, and the string unknown if the entry's
VOLUME field is not set
Formatters
Formatters are primarily used as save actions, but their key value can be used as a modifier. All available
actions can be found in the list of save actions.
Documentation and examples for RegEx syntax can be found in the Java documentation and in the Jabref
documentation.
Keep in mind, Jabref uses a Java flavored regular expressions engine (there are multiple engines) and
therefore treats \ and some other special meta-characters as escape characters. If you want to include
any backslash into your RegEx, you have to use \\ instead of \ .
The regex (?<=.{12}+).+ with an empty replacement string will cut the length of all citation keys to
12.
Removing - from this list will allow it to be used while generating citation keys.
The default key pattern is [auth][year] , and this could produce keys like e.g. Yared1998 If the key
is not unique in the current database, it is made unique by adding one of the letters a-z until a unique key
is found. Thus, the labels might look like:
Note: In order for your changes to be retained, you must hit "enter" on your keyboard before clicking on the
"Save" button.
To change the citation key pattern to [authors][camel] for all libraries without individual settings,
execute the following steps:
2. From the "Library" menu, open the "Citation key pattern" setting
3. Set the pattern for the desired entry types, and press the apply button.
Customize entry types
To customize entry types, select the menu File → Preferences → Entry types.
When customizing an entry type, you both define how its entry editor should look, and what it takes for
JabRef to consider an entry complete. You can both make changes to the existing entry types, and define
new ones.
The entry customization interface is divided into two areas. On the left side all entry types (including any
custom types) are listed. If you select a type from the left side, the right area shows all fields for the
selected entry.
The currently available entry types are listed in the left panel.
To add a new entry type, you must enter a name for it in the text field below the type list, and click Add.
The new entry type will be added to the list, and selected for modification.
To remove a custom entry type, select it and click the trash icon. This operation is only available for custom
entry types that are not merely modifications of standard types. It is not possible to remove a standard entry
type.
To add a new field, edit the text field below the list, or select a field name from the dropdown menu, then
click Add. The chosen field name will be added at the end of the list.
To remove a field select it in the list and click the trash icon to remove it.
To change the order of the fields you can use drag and drop.
Either/or fields
Certain entry types have an either-or condition in their required fields. For instance, a book entry is
complete with either the author or the editor field, or both. To indicate such a condition in a custom entry
type, you should add a field named as the set of alternative fields separated by slashes, for instance
author/editor indicates the condition mentioned above for the book entry type.
Customize general fields
You can add an arbitrary number of tabs to the entry editor. These will be present for all entry types. To
customize these tabs, go to Options → Preferences → Custom editor tabs.
You specify one tab on each line. The line should start with the name of the tab, followed by a colon (:),
and the fields it should contain, separated by semicolons (;).
For example:
General:url;keywords;doi;pdf
Abstract:abstract;annote
will give one tab named "General" containing the fields url, keywords, doi and pdf, and another tab named
"Abstract" containing the fields abstract and annote.
It does not matter how you capitalise your field names. In the entry editor's tabs, normally fields' first letter
is capitalised, i.e. abstract is represented as Abstract, KEYwords would be represented as Keywords (DOI,
ISBN, URL are exceptions in that all letters are capitalised). In the bibtex code, all field names use lower
case: KEYwords is keywords in the entry's bibtex code.
Customize key bindings
You can reset the key bindings to default by pressing the "Default" button. This is especially useful when
upgrading from a JabRef version before 3.8.2.
Library properties
Each library can have specific properties that can be modified through Library→ Library properties.
These specific properties override the generic properties defined in Options → Preferences.
The library-specific properties are stored in the database itself. This way, when moving the database to
another computer, these properties are preserved. In most of cases, these are stored in the bib-file
database using text blocks starting with @Comment{jabref-meta: .
For shared SQL databases, some properties are not available as they are not handled like a
.bib file.
The following properties are not available:
General
Saving
String constants
Tab "General"
LibraryProperties-General
General
Library encoding
This setting determines which character encoding JabRef will use when writing this library to disk.
Changing this setting will override the setting made in Preferences dialog for this database. JabRef
specifies the encoding near the top of the bib file, in order to be able to use the correct encoding next time
you open the file. The drop-down menu allows to select one encoding.
Library mode
You can select if your library follows the BibTeX or the biblatex format.
For your library, you can define a General file directory and a User-specific file directory. These settings
override the main file directory defined in the Preferences dialog.
The General file directory is a common path for all the users of a shared database.
The User-specific file directory allows each user to have its own file directory for the database. If defined,
it overrides the General file directory.
JabRef stores the name of the current system alongside the User-specific file directory. This assumes
that each user of the library has a different system name. For example, when using the computer laptop,
the entry in the bib file is @Comment{jabref-meta: fileDirectory-jabref-laptop:\somedir;}
Relative directories can be specified. This means that the location of the files will be interpreted relative to
the location of the bib file. Simply setting a directory to "." (without quotes) means that the files should
reside in the same directory as the bib file.
The legacy PDF/PS links (i.e. the pdf and ps fields, which were used in JabRef versions prior to
2.3), should in current versions be replaced by general file links. This can be done using
Quality → Cleanup entries... and enabling Upgrade external PDF/PS links to use the 'file'
field.
Preamble
The preamble defines some LaTeX commands that will be included in the bibliography once processed by
BibTeX.
Tab "Saving"
LibraryProperties-Saving
Library protection
While you edit a shared library, another user may be editing it too. By default, saving the library will
overwrite changes done by others (although a warning message about the changes will be displayed).
To avoid discarding changes involuntarily, and hence to allow a smooth collaborative work, you can
choose to refuse to save the library before external changes have been reviewed. This setting lets you
enforce reviewing of external changes before the library can be saved: users will only be able to save the
library after any external changes have been reviewed and either merged or rejected.
This is not a security feature, merely a way to prevent users from overwriting other users'
changes inadvertently. This feature does not protect your library against malicious users.
When saving the library, the order of the entries will be preserved if Save entries in their original order is
selected. Alternatively, by selecting Save entries ordered as specified, you can choose to sort the entries
using three criteria. For each criterion, you can type-in the field to be used and select the order.
Entries containing a crossref field will always be placed prior to the other entries. This is a
necessary preliminary for BibTeX to be able to determine the correct referenced values. (See:
Tame the BeaST, p. 26)
Save actions
Field formatting can be tidied up when saving the library. That ensures your entries to have consistent
formatting. If you check Enable save actions, the list of actions can be configured.
Location
The Entry Preview is located inside the Entry Editor (except when navigated to the File
annotations or {} biblatex source tab):
Entry Preview
You can display the entry preview as a separate tab (see screenshot above) by checking the box Show
preview as a tab in entry editor in the entry preview settings Options > Preferences
> Entry preview > Current Preview (see screenshot below).
Layouts/Styles
The entry preview displays either the Customized Preview Style or a certain Citation Style. You can
select the styles that should be available for display in Options → Preferences → Entry preview. In
Available you find all styles selectable for display, in Selected all styles already selected for
display:
Entry Preview Settings
You can switch between all selected styles (customized preview and citation styles) in the entry preview in
the main window by pressing F9 .
Display Mechanism
The layout is automatically created using the same mechanism as used by the Custom export filter facility.
When previewed, an entry is processed using one of the selected layouts/styles to produce HTML code
which is displayed by the preview panel.
In general, there is no need to change the settings of external file types. So, this setting is for
advanced users.
For each file link, a file type must be chosen, to determine what icon should be used and what application
should be called to open the file. The list of file types can be viewed and edited by choosing Options →
Preferences, tab External file types.
A file type is specified by a graphical icon, a name, a file extension and an application to view the files. On
Windows, the name of the application can be omitted in order to use Window's default viewer instead.
This help page should describe the menu Options → Preferences → Protected terms files..
Please, populate this page. Visit our page about how to edit a help page..
The string editor
In JabRef you write the contents of all fields the same way as you would in a text editor, with one
exception: to reference a string, enclose the name of the string in a set of # characters, e.g.: '#jan# 1997',
which will be interpreted as the string named jan followed by 1997 .
Strings can be edited by Library → Edit string constants or pressing a button in the toolbar.
Strings are the BibTeX equivalent to constants in a programming language. Each string is defined with a
unique name and a content. Elsewhere in the database, the name can be used to represent the content.
For instance, if many entries are from a journal with an abbreviation that may be hard to remember, such
as 'J. Theor. Biol.' (Journal of Theoretical Biology), a string named JTB could be defined to represent the
journal's name. Instead of repeating the exact journal name in each entry, the characters '#JTB#' (without
quotes) are put into the journal field of each, ensuring the journal name is written identically each time.
A string reference can appear anywhere in a field, always by enclosing the string's name in a pair of '#'
characters. This syntax is specific for JabRef, and differs slightly from the BibTeX notation that is produced
when you save your database. Strings can by default be used for all standard BibTeX fields, and in
Options → Preferences → File you can opt to enable strings for non-standard fields as well. In the latter
case you can specify a set of fields that are excepted from string resolving, and here it is recommended to
include the 'url' field and other fields that may need to contain the '#' character and that may be processed
by BibTeX/LaTeX.
A string may in the same way be referred in the content of another string, provided the referred string is
defined before the referring one.
While the order of strings in your BibTeX file is important in some cases, you do not have to worry about
this when using JabRef. The strings will be displayed in alphabetical order in the string editor, and stored
in the same order, except when a different ordering is required by BibTeX.
Main Window
Entry Editor
Strings
Remote operation
Journal abbreviations
Resources
License
Knowledge
Main Window
Most menu actions referred in the following have keyboard shortcuts, and many are available from the
toolbar. The keyboard shortcuts are found in the pull-down menus.
This is the main window from where you work with your databases. Below the menubar and the toolbar is
a tabbed pane containing a panel for each of your currently open databases. When you select one of these
panels, a table appears, listing all the database's entries, as well as a configurable selection of their fields.
You decide which fields are shown in the table by checking the fields you want to see in the
Preferences → Entry table dialog.
Double-click a line of the table to edit the entry content. You can navigate the table with the arrow keys.
Preferences → Entry table, but to more quickly change the order, click the header of a column to set it
as the primary sort criterion, or reverse the sorting if it is already set. Another click will deselect the
column as sorting criterion. Hold down Ctrl and click a column to add, reverse or remove it as a sub-
criterion after the primary column. You can add an arbitrary number of sub-criteria, but only three levels
will be stored for the next time you start JabRef.
Adjust the width of each column by dragging the borders between their headers.
Entry Editor
This information is outdated. Please help to improve it (how to edit a help page).
The entry editor opens from main window (table of entries). To open it for a specific entry, you can either:
select the entry and go to the menu View → Open entry editor
Then you can modify the content of the entry (see below). When done, click on the top left-hand corner of
the entry editor or press ESC to close the entry editor and go back to the table of entries.
In this panel you can specify all relevant information on a single entry. The entry editor checks the type of
your entry, and lists all the fields that are required, and the ones that are optional, for referring the entry with
BibTeX. In addition, there are several fields termed General fields, that are common to all entry types.
You can fully customize which fields should be regarded as required and optional for each type of entry,
and which fields appear in the General fields tabs. See Customizing entry types for more information about
this.
For information about how the fields should be filled out, see BibTeX help.
Up to JabRef 4.1, the field was called "Review". The field name was changed to "Comments" as "Review"
indicated some external reviews or some fundamental comments.
Switch panels by clicking on the tabs, or navigate to the panel to the left or right using the following key
combinations: Ctrl + Tab or Ctrl + + switch to the tab to the right, and Ctrl + Shift + Tab or Ctrl + - switch to
the tab to the left. You can also switch to the next or previous entry by pressing Ctrl + Shift + Down or Ctrl +
Shift + Up, respectively, or by clicking the appropriate toolbar button.
BibTeX source (termed biblatex source in case of a biblatex library) shows how th entry will appear when
the database is saved in BibTeX (or biblatex) format. If you wish, you can edit the source directly in this
panel. When you move to a different panel, press Ctrl + S or close the entry editor, JabRef will try to parse
the contents of the source panel. If there are problems, you will be notified, and given the option to edit
your entry further, or to revert to the former contents.
Tip: If your database contains fields unknown to JabRef, these will be visible in the source panel.
Tip: the pdf and url fields support Drag and Drop operations. You can drop there an url from your browser.
either a link to a pdf file (that JabRef can download for you) or you can keep the link.
If the contents are not accepted, the field will turn red, indicating an error. In this case the change will not
be stored.
For instance, if you see #jan# in the month field, the "real" BibTeX entry looks like month = jan .
For more details, see Strings.
Word/name autocompletion
The entry editor offers autocompletion of words. In the File → Preferences → Autocomplete, you can
enable or disable autocompletion, and choose for which fields autocompletion is active.
With autocompletion, JabRef records all words that appear in each of the chosen fields throughout your
database. Whenever you write the beginning of one of these words, it will be suggested visually. To ignore
the suggestion, simply write on. To accept the suggestion, either press Enter or use your arrow keys or
other keys to remove the selection box around the suggested characters.
Note: the words considered for suggestion are only the ones appearing in the same field in entries of the
same database as the one you are editing. There are many ways to realise this kind of feature, and if you
feel it should have been implemented differently, we'd like to hear your suggestions!
For more information on how JabRef generates citation keys, see Customizing the citation key generator.
Mr. DLib is a service that calculates recommendations for you based on this title. After a short loading time
the recommendations are listed in the Related Articles Tab. For detailed information see Mr. DLibs help
page. The following image shows the Related Articles Tab with recommendations to the selected item.
In the entry editor, you can now select the tab "File annotations" and you will see the content you have
highlighted or commented on in the PDF.
If you have multiple PDFs linked to the entry, you can select the document as well in the File Annotation
tab.
Links to other entries
cites - comma separated list of citation keys which are cited by this entry
related - comma separated list of citation keys which are in some kind related to this entry. The
type of all relations can be specified by a single relatedtype (see
https://github.com/plk/biblatex/issues/475#issuecomment-246931180). Note: biblatex prints this
information if related is active at the biblatex package.
To use the crossref field, navigate to the general tab and insert the Crossref at the top.
6. There, you now see "related" with the possibilities to (i) navigate to the entry, (ii) add new related
entries, (iii) remove related entries.
Notes
If you use crossref , JabRef will move these entries first in the bibliography as otherwise BibTeX
cannot use the information of the cross-referenced fields. See also
http://tex.stackexchange.com/a/148978/9075.
Unsupported fields
relations - this would introduce a complicated field similar to our save actions. A simple key/value
is enough
references - stores all references in plain text (PRVV plugin). Thus, we do not use it.
Further information
See https://github.com/koppor/jabref/issues/14 for the developer's discussion on the fields.
The Bibtex / Biblatex source tab
Additionally, here the data is shown "as is", which means special symbols that are usually supposed to be
hidden or translated into readable form, may show regardless.
The 'owner' field
JabRef can optionally mark all new entries added or imported to a library with your username.
You can disable or enable this feature by entering Options → Preferences → General, and
selecting/deselecting the line 'mark new entries with owner name'. You can also change the name used to
mark entries. By default, your user name is used. Finally, if an entry with an existing field 'owner' is
imported, the field is updated with your name if 'Overwrite' is checked.
The owner name is added in a field called 'owner', which by default is visible in the General fields tab in
the entry editor.
Time stamp field
JabRef can optionally set a field to contain the date an entry was added to the database.
Configuration
You can disable or enable this feature by entering File → Preferences → General, and
selecting/deselecting the line 'Mark new entries with addition date'.
If an entry with a timestamp is pasted or imported, the field is updated with the current date if 'Overwrite' is
checked. The value of the timestamp field will be updated upon changes in the entry if 'Update timestamp
on modification' is checked.
By default, the date is added in a field called 'timestamp', which is visible in the General fields tab in the
entry editor. You can alter the name of this field. The date format can also be customized (see below).
Usage
The timestamp field can be edited in the General fields tab of the entry editor. If you do not see these
fields, enable them at General Fields or reset your preferences.
You can manually alter the value by typing in the date and time of your choice. Also, by clicking on the
calendar icon located at the right end of the field, you can select the date you want in a calendar.
Formatting
The formatting of the time stamp is determined by a string containing designator words that indicate the
position of the various parts of the date.
These are some of the available designator letters (examples are given in parentheses for Wednesday
14th of September 2005 at 5.45 PM):
yy: year (05)
These designators can be combined along with punctuation and whitespace. A couple of examples:
In the user interface, a tab was added to the entry editor, the aesthetics have been improved, and the tool
was renamed to Search for Citations in LaTeX files.
Overview
A new tab was added to the entry editor. It allows to search for citations to the active entry in the LaTeX file
directory. It can be configured in the Library properties dialog.
Key Features
Parsed files are stored when the tool is run for the first time (to achieve better performance).
The current search path is shown at the bottom, next to a button to set the LaTeX file directory.
The context of citations is shown instead of the whole line of text (which is shown as a tooltip).
Absolute file path has been changed into a relative one, from the search path.
New icons and styles for context, file path, and position (line and column) of a citation.
About BibTeX and its fields
The data format of JabRef is Bib(La)TeX
JabRef is is a program for working with BibTeX and biblatex databases. JabRef program uses no separate
internal file format but directly works with BibTeX and biblatex. That means, your BibTeX/biblatex file is
kept as is when opening in JabRef and saving again: You normally load and save your libraries directly in
the BibTeX/biblatex .bib format. In addition, you can also import and export bibliography libraries in a
number of other formats into JabRef.
JabRef helps you work with your BibTeX libraries, but there are still rules to keep in mind when editing
your entries, to ensure that your library is treated properly by the BibTeX program.
JabRef's conventions
JabRef stores the encoding of the file and (in case a shared SQL database is used) the ID of the shared
library in the header of the bib file.
Encoding
% Encoding: <encoding> : States the encoding of a BibTeX file. E.g., % Encoding: UTF-8
Shared Id
To enable auto save, JabRef adds % DBID: <id> to the header. This helps JabRef identifying the SQL
database where the file belongs. E.g., % DBID: 2mvhh73ge3hc5fosdsvuoa808t .
A BibTeX "Entry"
An entry consists of entrytype, citekey, fields and field content. The BibTeX and Biblatex standards define
a wide range of entrytypes and fields, which should give much leeway. Users that have further needs will
be able to edit their entries and come up with custom entrytypes, fields and citekeys, as long as the syntax
is honored.
address Usually the address of the publisher or other type of institution. For major publishing
houses, you may omit the information entirely or give simply the city. For small publishers, on the other
hand, you can help the reader by giving the complete address.
annote An annotation. It is not used by the standard bibliography styles, but may be used by others
that produce an annotated bibliography.
author This field should contain the complete author list for your entry. The names are separated by
the word and, even if there are more than two authors. Each name can be written in two equivalent
forms:
Donald E. Knuth or Knuth, Donald E.
Eddie van Halen or van Halen, Eddie
The second form should be used for authors with more than two names, to differentiate between
middle names and last names.
booktitle Title of a book, part of which is being cited. For book entries, use the title field instead.
edition The edition of a book--for example, ``Second''. This should be an ordinal, and should have the
first letter capitalized, as shown here; the standard styles convert to lower case when necessary.
editor This field is analogue to the author field. If there is also an author field, then the editor
field gives the editor of the book or collection in which the reference appears.
howpublished How something strange has been published. The first word should be capitalized.
institution The sponsoring institution of a technical report.
journal The name of a journal or magazine. The name of a journal can be abbreviated using a "string".
To define such string, use the string editor.
key Used for alphabetizing, cross referencing, and creating a label when the ``author'' information is
missing. This field should not be confused with the key that appears in the \cite command and at
the beginning of the library entry.
month The month in which the work was published or, for an unpublished work, in which it was
written. You should use the standard three-letter abbreviation of the English names (jan, feb, mar, apr,
may, jun, jul, aug, sep, oct, nov, dec).
note Any additional information that can help the reader. The first word should be capitalized.
number
The number of a journal, magazine, technical report, or of a work in a series. An issue of a journal or
magazine is usually identified by its volume and number; the organization that issues a technical
report usually gives it a number; and sometimes books are given numbers in a named series.
organization The organization that sponsors a conference or that publishes a manual.
pages One or more page numbers or range of numbers, such as 42--111 or 7,41,73--97 or
43+ (which indicates page 43 and following pages ). The standard styles convert a single
dash (as in 7-33 ) to the double dash used in TeX to denote number ranges (as in 7--3 ).
publisher The publisher's name.
school The name of the academic institution where a thesis was written.
series The name of a series or set of books. When citing an entire book, the title field gives its title
and an optional series field gives the name of a series or multi-volume set in which the book is
published.
title The title of the work. The capitalization may depend on the bibliography style and on the language
used. For words that have to be capitalized (such as a proper noun), enclose the word (or its first letter)
in braces.
year The year of publication or, for an unpublished work, the year it was written. Generally it should
consist of four numerals, such as 1984 , although the standard styles can handle any year whose
last four nonpunctuation characters are numerals, such as "(about 1984)". This field is required for
most entry types.
BibLaTeX fields
BibLaTeX defines more fields. It gets especially interesting in the context of date handling. See the
BibLaTeX manual for detais.
date The date of the publication. Can also include date ranges (e.g., 2014-04-07/2014-04-10 ).
Non-standard fields
BibTeX is extremely popular, and many people have used it to store information in non-standard fields.
The information in these non-standard fields may be ignored by BibTeX.
Here is a list of some of the more common non-standard fields ("*" = not directly supported by JabRef):
affiliation The authors affiliation.
eid The Electronic identifier is for electronic journals that also appear in print. This number replaces
the page number, and is used to find the article within the printed volume. Sometimes also called
citation number.
location A location associated with the entry, such as the city in which a conference took place.
LCCN The Library of Congress Control Number. I've also seen this as lib-congress .
JabRef-specific fields
To help in managing your bibliography, and extend the features of BibTeX, JabRef defines some specific
fields:
External files
General fields
Owner
Hints on fields
Generally, you can use LaTeX commands inside of fields containing text. BibTeX will automatically
format your reference lists, and those fields that are included in the lists will be (de)capitalized
according to your bibliography style. To ensure that certain characters remain capitalized, enclose
them in braces, like in the word {B}elgium.
Tame the BeaST - The B to X of BibTxX - long manual explaining the workings of BibTeX, the BibTeX
format, and the available entry types with required and optional fields.
BibTeX files
https://github.com/lvilnis/BibtexParser/tree/master/inputs
https://github.com/environmentalinformatics-marburg/jabref
http://mirrors.ircam.fr/pub/CTAN/biblio/bibtex/contrib/test/test.bib
BibLaTeX files
http://mirrors.ctan.org/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib
http://distrib-
coffee.ipsl.jussieu.fr/pub/mirrors/ctan/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-
examples.bib
https://github.com/JabRef/jabref/tree/main/src/test/resources/testbib
http://texdoc.net/pkg/btxdoc
http://maverick.inria.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html
BibLaTeX standard
http://ftp.fau.de/ctan/macros/latex/contrib/biblatex/doc/biblatex.pdf
https://github.com/plk/biblatex
BibTeX parsers
https://github.com/ambs/Text-BibTeX
https://github.com/lvilnis/BibtexParser
https://github.com/sciunto-org/python-bibtexparser
citation.js
Strings
BibTeX supports storing constant strings using @String {key = value} . JabRef supports managing
them using Library → Edit string constants, which opens the String Editor. These values can be used in
fields. For example, you can have:
@Misc{m1,
author = kopp # et # kubovy,
}
or
@Misc{m2,
author = kopp # " and " # kubovy,
}
In the JabRef field editor, the author has to be inserted as #kopp# #et# #kubovy# or #kopp# and
#kubovy# .
@Misc{m3,
month = may,
}
In JabRef, the entry editor then displays #may# . In case the entry editor just displays may , this is written
as follows:
@Misc{m4,
month = {may},
}
In other words: The character # indicates something special in the entry editor.
JabRef's typed Strings
JabRef enhances the concept of Strings to add a type to those @String s. The issue is how to preserve
such type of a string in a BibTeX file. JabRef adds the type though prefixes:
Then @String s of type author should be used for author and editors fields only. @String s of type
institution should be used for institution and organization fields only. @String s of type publisher should
be used only for publisher fields. And finally @String s of type other can be used anywhere.
It can also happen that you will have the same institution for more types:
Even if the last example may appear contradicting the intention was to remove duplicity and unify the
names of persons and institutions.
More examples
Usage:
\@Misc {
title = "The GNU Project"
author = aStallman # et # aKahle
institution = iMIT
publisher = pMIT
note = "Just " # eg
}
Further reading
See https://tex.stackexchange.com/questions/303467/bibliography-contents-journal-names-not-
abbreviated-even-with-ieeeabrv/303489#303489 for a MWE for string constants.
Field content selector
The preferences for this feature are accessible via Library → Library properties → Content selectors
and allows you to store often-used words or phrases. This creates the possibility to conveniently make use
of them in the entry editor to fill in field content.
To add a new word by using the content selector in the entry editor, you can simply click into the text box
for the field for which you configured the selectors. A drop down menu will appear and you can select the
keyword of your choice. This mechanism is based on the autocompletion functionality in JabRef (File →
Preferences → Autocompletion) . Therefore, you need to have autocompletion enabled in your
preferences.
By default, the feature is enabled for the fields Journal, Author, Keywords and Publisher, but you can also
add selectors to other fields.
The word selection is library-specific, and is saved along with your references in the .bib file.
URL and DOI links in JabRef
JabRef lets you link documents on the web in the form of an URL or a DOI identifier.
Open DOI
In the entry table you can select an entry and use the menu choice, keyboard shortcut or the right-click
menu to open the file or web page. Finally, you can click on a URL or DOI icon.
Open DOI via popup
By default the entry table will contain a singly column containing an indicator whether there is a DOI or a
URL linked. You can remove the "Link identifiers" column in Options → Preferences → Entry table.
Command line use and options
Although JabRef is primarily a GUI based application, it offers several command line options that may be
useful. JabRef can even perform file conversion operations without opening the graphical interface.
Basics
This description applies since JabRef 5.0, because JabRef comes with a pre-bundled Java-
Runtime Environment
Windows:
Linux:
JabRef-5.0-portable_linux/JabRef/lib/runtime/bin/JabRef .
macOS:
/Applications/JabRef.app/Contents/MacOS/JabRef \
The following documentation is for Windows, but works equally well on Linux and macOS:
In some cases, you have to specify --console to ensure that output is written to the console.
You can always specify one or more Bib(la)TeX files to load by simply listing their filenames.
Take care to specify all options before your list of file names.
Ensure that the first file name is not misunderstood as being an argument for an option; this simply means
that if a boolean option like -n or -l immediately precedes a file name, add the word true as an
argument.
For instance, the command line will correctly load the file original.bib , export it in docbook format to
filetoexport.xml , and suppress the GUI:
C:\portable-apps\JabRef-5.0-portable_windows\JabRef\runtime\bin\JabRef.bat -o filetoexport.x
The word true prevents the file name from being interpreted as an argument to the -n option.
Options
Help: -h
No-GUI mode: -n
Regenerate keys: -g
No files at startup: -b
Version: -v
Help: -h
(or --help )
Displays a summary of the command line options, including the list of available import and export formats.
No-GUI mode: -n
(or --nogui )
Suppresses the JabRef window (i.e. no GUI - Graphic User Interface - is displayed).
It causes the program to exit immediately once the command line options have been processed. This
option is useful for performing file conversion operations from the command line or a script.
If only the filename is specified (or if the filename is followed by a comma and a * character), JabRef will
attempt to detect the file format automatically. This works for BibTeX files, and also for all files in a
supported import format. If the filename is followed by a comma and the name of an import format, the
given import filter will be used.
If an export option is also specified, the import will always be processed first, and the imported or loaded
file will be used by the export filter. If the GUI is not suppressed (using the -n option), any imported or
loaded file will show up in the main window.
If --importToOpen is used, the content of the file will be imported into the opened tab.
Note: The -i option can be specified only once, and for one file only.
If a file is imported using the -i option, that file will be exported. If no -i option is used, the last file
specified (and successfully loaded) will be exported.
If only filename is specified, it will be exported in BibTeX format. If the filename is followed by a comma
and an export format, the given export filter will be used.
A custom export filter can be used, and will be preferred if the export name matches both a custom and a
standard export filter.
If the GUI is not suppressed (using the -n option), any export operation will be performed before the
JabRef window is opened, and the imported database will show up in the window.
Note: The -o option can be specified only once, and for one file only.
XMP is an ISO standard for the creation, processing and interchange of standardized and custom
metadata for digital documents and data sets.
The first option is to export all entries, which are included in the entries.bib file to the specified
export.xmp file. The second argument, separated by comma, is the type of exporter used by JabRef.
Import or load code directly from the BibTeX file. This only works for BibTeX files, and does not support
files of other import formats. If it detects this command line option, the JabRef CLI will take in its following
argument as a BibTeX string that represents the BibTeX article file being read in for import (usually a
filename). JabRef then passes on this information to a helper function that will parse the BibTex string into
entries and return the resulting BibTex entries to the JabRef CLI.
If the GUI is not suppressed (using the -n option), any imported or loaded BibTeX file will show up in the
main window.
Note: The -importBibtex option can be specified only once, and for one file only.
Save to a new file all the database entries matching the given search term.
If the filename is followed by a comma and an export format, the given export filter will be used. Otherwise,
the default format html-table (with Abstract and BibTeX, provided by tablerefsabsbib) is used.
Note: In addition it is also possible to search for entries within a time frame such as Year=1989-2005
(instead of only searching for entries of a certain year as in Year=2005 ).
Note: Search terms containing blanks need to be bracketed by quotation marks, as in (author=bock
or title|keywords="computer methods")and not(author=sager)
Exports information stored in the database as Metadata to linked files. The metadata is stored as XMP
metadata and as an embedded bib file. The entries can be selected by citekey. Individual pdfs can be
selectec by the path to the pdf (either as given in the database or as an absolute or relative path to the pdf
file itself). The keyword all may be specified to write metadata on all pdfs in the database.
Write BibTexEntry as XMP metadata to PDF: -writeXMPtoPdf CITEKEY1[,CITEKEY2]
[,CITEKEYn] | PDF1[,PDF2][,PDFn] | all
(or --fetch=FetcherName:QueryString )
Pass both the name of a fetcher and your search term or paper id (e.g. --fetch=Medline:cancer ),
and the given fetcher will be run. Some fetchers will still display a GUI window if they need feedback from
you.
The fetchers listed in the Web search panel can be run from the command line. To get the list of available
fetchers, run --fetch without parameters.
When you compile a LaTeX document (e.g. infile.tex ), an .aux file is created ( infile.aux ).
Among other things, it contains the list of entries used in your document. JabRef can extract the references
used from the base-BibTeX-file to a new .bib file ( outfile.bib ). This way, you will have a
subdatabase containing only the entries used in the .tex file.
(or --automaticallySetFileLinks )
Regenerate keys: -g
(or --generateCitationKeys )
Import user preferences from an XML file (exported using the -x option, or through the GUI). After
importing, JabRef will start normally.
No files at startup: -b
(or --blank )
Version: -v
(or --version )
Changelog:
JabRef 5.8
Major rework and a change in what .bak and .sav denote. Henceforth,
.sav is a temporarily written file.
.bak is a backup file.
JabRef 5.1
To reduce the amount of configuration options, the possibility to disable the creation of .bak
files was removed.
JabRef 3.7
First introduction of the autosave and backup features.
.sav is the automatic backup feature.
.bak preserves the last state of the library after saving
.bak stands for the automatic backup feature: Each 20 seconds, after a change to the library, the
current state of the library is saved to a .bak file. JabRef keeps 10 older versions of a .bak file in the
user data dir.
.sav preserves the last state of the library after saving. Thus, one can go back one save command in
the history. Used when writing the .bib file. Used for copying the .bib away before overwriting on save.
.tmp is a temporary file with changes that are supposed to be written to the .bib file.
A .tmp will be written --> .bib copies to .sav --> .tmp copies to .bib --> .sav gets deleted -->
20 seconds later, a copy of the .bib file will be stored as .bak file in the user data dir.
By using the gitignore.io service, you can generate an appropriate .gitignore file by opening
h // ii i / i/j b f iti fil ifi i i ll k d fil h Gi h ld
https://www.gitignore.io/api/jabref. A gitignore file specifies intentionally untracked files that Git should
ignore. Files already tracked by Git are not affected; See https://git-scm.com/docs/gitignore for further
details.
Now you have the possibility to restore and review your changes which would normally get lost.
For shared remote libraries and more advanced history, we recommend to use git as version control
system.
The backup files ( .bak ) can be found in the user data dir.
Unix/Linux:
/home/<username>/.local/share/org.jabref/jabref
Windows:
Windows 7/10:
C:\Users\<Account>\AppData\org.jabref\jabref
Alternatively, open the run dialogue by pressing Windows+R , then enter
%APPDATA%\..\Local\org.jabref\jabref
Windows XP:
C:\Documents and Settings\<Account>\Application Data\Local
Settings\org.jabref\jabref>
Mac OS X:
/Users/username/Library/Application Support/org.jabref/jabref
In case the .bib file should automatically be saved on each change, you can direct JabRef to do so.
This feature needs to be activated in the preferences:
XMP is a standard created by Adobe Systems for storing metadata (data about data) in files. A well known
example for metadata are MP3 tags, which can be used to describe artist, album and song name of a MP3
file. Adding metadata to MP3 helps other people to identify the songs correctly independent of file-name
and can provide means for software (MP3 players for instance) to sort and group songs.
With XMP support the JabRef team tries to bring the advantages of metadata to the world of reference
managers. You can now choose to "Write XMP metadata to PDFs" in the Tools menu of JabRef, which will
put all the Bib(la)TeX information into the PDFs. If you then email a PDF to a colleague, they can just drag
the file into JabRef and all information that you entered will be available to them.
Usage
To use the XMP-feature in JabRef you can do the following:
To import a single annotated PDF-file that contains XMP, select File → Import into... and then choose
the filter "XMP-annotated PDF", or drag the file into the main view.
To annotate all the PDFs in a given database, select Tools → Write XMP metadata to PDFs.
To verify if it worked, you can open the PDF in Adobe Acrobat and select File → Document
Properties → Additional Metadata → Advanced. In the tree to the right you should see an entry
called "http://purl.org/net/bibteXMP". Note: this works only with Adobe Acrobat, not with Adobe
Reader. If you do not have Adobe Acrobat, you can use pdfinfo instead in order to see the XMP
metadata. pdfinfo is part of Xpdf tools and Poppler.
BibTeXMP Fileformat
JabRef builds on Dublin Core to encode bibliographic information. That information us embedded in the
PDF using the XMP format. Dublin Core itself i) builds on RDF and ii) can be extended with own
information. In case BibTeX data cannot be stored using native Dublin Core fields, new fields are used.
Basically, all fields and values are turned into nodes of an XML document. Only authors and editors are
stored as rdf:Seq -structures, so users of the data can skip the splitting on and s. All strings and
crossrefs will be resolved in the data.
author and editor are encoding as rdf:Seq s where the individual authors are represented as
rdf:li s.
@INPROCEEDINGS{CroAnnHow05,
author = {Crowston, K. and Annabi, H. and Howison, J. and Masango, C.},
title = {Effective work practices for floss development: A model and propositions},
booktitle = {Hawaii International Conference On System Sciences (HICSS)},
year = {2005},
owner = {oezbek},
timestamp = {2006.05.29},
url = {http://james.howison.name/publications}
}
In RDF attribute-value pairs can also be expressed as nodes and vice versa.
Related Links
Some links about XMP and annotating PDFs
Wikipedia article on XMP
Note that activating this feature under Windows XP SP2 (and possibly other configurations) may prompt a
message box stating that certain features of the program have been blocked by the Windows firewall. You
can safely tell the firewall to keep blocking - the firewall will not interfere with remote operation of JabRef.
If listening for remote operation is enabled, JabRef will at startup attempt to start listening to a specific port.
This means that other applications can send information to JabRef through this port. JabRef will only
accept local connections, to avoid the risk of interference from outside.
Binding to this port makes it possible for a second JabRef instance to discover that the first one is running.
In this case, unless specifically instructed to run in stand-alone mode, the second JabRef instance will
pass its command line options through the port to the first JabRef instance, and then immediately quit.
The first JabRef instance will read the command line options, and perform the indicated actions, such as
reading or importing a file, or importing a file to the currently shown database. If a file is imported using the
command-line option --importToOpen , the imported entries will be added to the currently shown
database. If no database is open, a new one will be created.
Custom themes
General
Since JabRef 5.2 it is possible to use custom themes. In Preferences > Appearance >
Visual theme the themes in general can be changed. Themes are just CSS files defining the look of
the UI.
Dark Theme: There is an alternative dark theme ( Dark.css ) which is based on Base.css and
just overwrites the colors.
Custom Theme: In Preferences > Appearance > Visual theme > Custom theme
there can be set a custom theme by simply selecting a custom CSS (based on Base.css or
Dark.css ), for instance:
Examples
Light Theme
Dark Theme
Known bugs
#8523: On Windows 10, it is not possible to use fonts that were installed user-wide in the CSS, only
system-wide fonts are working. A workaround to use fonts that are not installed system-wide is to
include the font file via @font-face .
Journal abbreviations
Since: 5.0
JabRef can automatically toggle journal names between abbreviated and unabbreviated form, as long as
the names are contained in one of your journal lists.
This feature can be configured under Options → Preferences → Manage journal abbreviations.
JabRef includes a fairly extensive build-in list of journal abbreviations. This list is a merge of all lists
available at https://abbrv.jabref.org. However, this might still be incomplete (or outdated) for the purposes of
some users. Thus, JabRef allows to add abbreviations in the form of a personal list or external lists.
General view
If the current journal name is not found in your journal lists, the field will not be modified.
To convert the journal names of many entries in bulk, you can select any number of entries, and choose
Quality → Abbreviate journal names → DEFAULT, Quality → Abbreviate journal names →
MEDLINE, Quality → Abbreviate journal names → SHORTEST UNIQUE, or Quality → Unabbreviate
journal names. These three actions will abbreviate and unabbreviate the journal names of all selected
entries for which the journal name could be found in your journal lists.
Any entry in your personal journal list will override an entry with the same full journal name in one of the
external lists. Similarly, the external lists are given precedence in the order they are listed.
Your personal journal list is managed on top of the Manage journal abbreviations window. To start
building your personal journal abbreviations list, choose Add new list, and enter a filename. If you already
have a file that you want to use as a starting point, use the Open existing list button. The table will update
to show the contents of the list you have selected.
The table and the tool buttons in the upper right allow you to add, remove and edit journal entries. For
each entry you must provide the full journal name, and the default abbreviation (e.g. "Aquacultural
Engineering" and "Aquacult. Eng."). The last field, which contains the shortest unique abbreviation, is
optional. Therefore, you can actually safely omit it. To edit an entry, double-click its row in the table.
Once you click Save changes, if you have selected a file, and the table contains at least one entry, the
table contents will be stored to the selected file, and JabRef's list of journals will be updated.
You can link to a number of external lists. These links can be set up on top of the Manage journal
abbreviations window. External lists are similar to the personal list. The Open existing list button allows
you to select an existing file on your computer.
External list
External lists can be found at JabRef's repository abbreviation lists. These data files are in CSV format
(using semicolons as separators):
The two last fields are optional, and you can omit them. JabRef supports the third field, which contains the
shortest unique abbreviation. The last field is not currently used; its intention is gives frequency (e.g., M for
monthly). For instance:
We want to expand both the build-in list and the selection of smaller lists, so if you have set up a
representative list for your own subject area, we would appreciate it if you share your list via GitHub or by
dropping a note on our forum.
New subdatabase based on AUX file
Based on the .aux file generated by LaTeX, JabRef can create a subdatabase containing only the cited
entries.
This feature is available through Tools → New subdatabase based on AUX file.
How to expand first names of an entry
@Article{Eshuis_2015,
author = {R. Eshuis and A. Norta and O. Kopp and E. Pitkanen},
journal = {{IEEE} Transactions on Services Computing},
title = {Service Outsourcing with Process Views},
year = {2015},
month = {jan},
number = {1},
pages = {136--154},
volume = {8},
publisher = {Institute of Electrical and Electronics Engineers ({IEEE})},
}
Now, one wants to have the full first names. In case, there is a DOI available, this is as simple as the
following steps:
1. Determine the DOI: Switch to the "General" tab and click on "Look up DOI"
Screenshot of determine DOI
2. Fetch BibTeX data from the DOI: Click on "Get BibTeX data from DOI"
Screenshot of get BibTeX data from DOI
3. A popup appears. Select which data you want to merge into the eixting entry
Screenshot of Merge Entries Dialog
Use Backups
If you encounter any errors that are related to wrong, erroneous, corrupt or vanished data in your library file
or simply unintended behavior that has unknown causes, the first thing that is advised to do, is to find and
make use of your backups.
3. Copy the backup files to a safe, but different location. (Basically, create a backup of the backups.
This step is very important, as each 20 seconds, after a change to the library, the current state of the
library is saved to a .bak file, but JabRef at most stores 10 backup files and if you continue to work
with your original library file (.bib), eventually JabRef will overwrite your old backup files)
4. Compare the backup file with the erroneous library. You can do this by editing your chosen
backup file (via JabRef or file editor) in such a way that the modification date is newer than that of your
erroneous library. Open the erroneous library and the backup merge dialogue should trigger, which
allows you to see what has changed in the file. Alternatively, to achieve the same result, it is possible
to use third party file versioning systems like Git or visual difference and merge tools like Meld or
WinMerge.
An easy way to look at the method of halving is to repeatedly ask yourself the following question, after
having deleted a part of your library file: "Is the error in the first part or the last part of the entries?"
How it works:
1. Create a backup of your library file.
2. Open your library with the text-editor of your choice (For example, Notepad++).
5. If your library now miraculously does not trigger the error, don't stop and leave. Instead, rinse and
repeat and use the technique of halving on the junk of entries that you just deleted (hence the need for
backups!). Use the technique of halving on THAT part of the library.
6. Repeat deleting entries until you can isolate the specific entry or entries that trigger errors.
Example:
Halving as a process of elimination will quickly lead to results, as the following table illustrates:
N
u
m
b
1 2
er 1 1 3 6
2 3 4 5 6 7 8 9 2 5
of 0 7 3 5
9 7
e
nt
ri
es
St
e
ps 1 2 2 3 3 3 3 4 4 5 6 7 8 9
Related Literature
If you want to find out more about this method, the following articles explain the method of halving in
various contexts:
https://ljackso.medium.com/half-splitting-applying-a-troubleshooting-technique-to-debugging-code-
6a0578d1833c
https://www.ecmweb.com/maintenance-repair-operations/article/20889049/the-beauty-of-halfsplitting
https://www.techrepublic.com/article/secrets-of-a-super-geek-use-half-splitting-to-solve-difficult-
problems/
Resources
Emacs
LyX/Kile
TeXstudio
Texmaker
Vim
WinEdt
Additionally, JabRef can natively insert citations and format a bibliography in:
OpenOffice Writer
LibreOffice Writer
Although JabRef comes with a build-in list of journals, additional lists are available at
https://abbrv.jabref.org.
Export filters are collected at https://layouts.jabref.org. Style files for LibreOffice are available at
https://jstyles.jabref.org.
This improves author recognition and adds support for more fields to EndNote.
Homepage: https://github.com/JabRef/EndNode-JabRef-filters
Export-Filter Editor
Using this tool you can easily create a custom export filter for JabRef to build your own bibliography style.
The tool itself supports:
Additional tools
BibSync
BibSync is a tool to synchronize your paper library with a BibTeX file which might be most useful for
Physicists and Mathematicians since it supports synchronization with DOI and arXiv.
Bibtex4word
Bibtex4Word is an add-in for Microsoft Word that allows the citation of references and the insertion of a
bibliography into your document using your choice of formatting style. It is lightweight, transparent and
does not mess up your documents.
Eratosthenes Reference Manager is a BibTeX-based bibliography manager for Android. It integrates with
JabRef, supporting top-level groups and attached files/external links.
Unfortunately, this application is not available anymore from Google Play and must be build on your own
from source.
Feinerleiser
Feinerleiser is a tool for improving the JabRef-LibreOffice integration when writing for the humanities. This
tool can be run to finalize a document, providing citation features that are not supported by JabRef itself.
gitignore.io
This site offers to generate .gitignore files using common patterns for applications. For instance, you
can use the keywords JabRef, Windows, Linux, macos, latex to generate a .gitignore for your daily
tex work.
Homepage: https://www.gitignore.io/
This WinEdt's package allows to launch the JabRef program from within WinEdt.
A LibreOffice extension that converts JabRef references to plain text code and vice versa so that you can
use your references with MS Office and other software.
JabRef supports the MS Office Bibliography XML format for exporting and importing.
book Book
inbook BookSection
booklet BookSection
incollection BookSection
article JournalArticle
inproceedings ConferenceProceedings
conference ConferenceProceedings
proceedings ConferenceProceedings
collection ConferenceProceedings
techreport Report
manual Report
mastersthesis Report
phdthesis Report
unpublished Report
patent Patent
misc Misc
electronic ElectronicSource
online InternetSite
periodical ArticleInAPeriodical
Field mappings
The field mapping for import and export is mostly the same, but there are some differences, as not all field
exists in both formats. Additionally, some fields have to be treated differently during import/export.
BibTeX/BibLaTeX XML field
bibtexkey Tag
title Title
year Year
note Comments
volume Volume
language LCID
edition Edition
publisher Publisher
booktitle BookTitle
chapter ChapterNumber
issue Issue
school Department
institution Institution
doi DOI
url url
shorttitle ShortTitle
pages Pages
authors Authors
editors Editors
translator Translator
bookauthor Bookauthor
volumes NumberVolumes
The following fields are BibTeX/biblatex only fields, they have no representation in office XML. In the
resulting XML file, they are represented with the prefix BIBTEX_
BibTeX/biblatex only fields XML representation
series BIBTEX_Series
abstract BIBTEX_Abstract
keywords BIBTEX_KeyWords
crossref BIBTEX_CrossRef
howpublished BIBTEX_HowPublished
affiliation BIBTEX_Affiliation
contents BIBTEX_Contents
copyright BIBTEX_Copyright
price BIBTEX_Price
size BIBTEX_Size
intype BIBTEX_InType
paper BIBTEX_Paper
<BibTexEntryType> BIBTEX_Entry
<BibTexEntryType> SourceType
pubstate BITEX_Pubstate
The XML field SourceType contains the associated entry type from the first table, while the original
BibTeX/BibLaTex entrytype is preserved in the field BIBTEX_ENTRY .
The following fields are XML-only fields, they have no BibTeX/biblatex representation: In the resulting bib
database they are represented with the prefix msbib- .
BibTeX/BibLaTex represenation XML field
msbib-numberofvolume NumberVolumes
msbib-periodical PeriodicalTitle
msbib-day Day
msbib-medium Medium
msbib-recordingnumber RecordingNumber
msbib-theater Theater
msbib-distributor Distributor
msbib-broadcaster Broadcaster
msbib-station Station
msbib-type Type
msbib-court Court
msbib-reporter Reporter
msbib-casenumber CaseNumber
msbib-abbreviatedcasenumber AbbreviatedCaseNumber
msbib-productioncompany ProductionCompany
msbib-producername producerNames
msbib-composer composers
msbib-conductor conductors
msbib-performer performers
msbib-writer writers
msbib-director directors
msbib-compiler compilers
msbib-interviewer interviewers
msbib-interviewee interviewees
msbib-inventor inventors
msbib-counsel counsels
booktitle ConferenceName
journal JournalName
journaltitle JournalName
month Month
issue issue
isbn StandardNumber
issn StandardNumber
lccn StandardNumber
mrnumer StandardNumber
address (if field does not contain a comma) City, StateProvince, CountryRegion
location (if field does not contain a comma) City, StateProvince, CountryRegion
organization ConferenceName
journaltitle Journal
The Medline (txt) format can be used by a simple text document. Here, you have to write the field names at
the beginning of each line. The Medline (xml) format is a XML document. The field name has to be written
between < and > . For further information visit
https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html. Medline (txt) and Medline (xml) always
take the type "article". RIS works similar to Medline (txt) with the difference that different fields are
supported and the file extension is "ris".
In other sources, you might encounter "MedlinePlain" as a synonym for "Medline (txt)" and "Medline" as a
synonym for "Medline (XML)".
Abstract /
Abstract AB AB
AbstractText
Affiliation AD
Collaborators A3
Corporate Author CN
Country Country
Date of Electronic
DEP
Publication
Date of Publication DP Y2
DOI DOI
Edition EN
End ER
End Page EP
Gene Symbol GS
Grant Number GR
ISBN ISBN SN
ISSN IS ISSN
Issue IP Issue IS
Journal Title
TA
Abbreviation
Keywords KeywordList KW
Language LA Language
Medline Title
MedlineTA
Abbreviation
Medline Date MedlineDate
MeSH Terms MH
Misc M1-M3
Note N1
Number of References RF
Other Copyright
OCI
Information
Other Term OT
Owner OWN
Pagination PG Pagination
Personal Name as
PS
Subject
Place of Publication PL
Publication History
PHST
Status
Publication Type PT
Publisher PB
PubmMed Unique
PMID PMID
Identifier
Registry Number RN
Reprint RP
Start Page SP
Substance Name NM
Supplemental Mesh
SupplMeshList
List
Secondary Source ID SI
Source SO
Status STAT
Subset SB
Transliterated Title TT
Type TY
URL UR
Volume VI Volume VL
Year PY/Y1
EndNote Export Filter
Frequently Asked Questions
@Article{jabref,
author = {Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker},
title = {{JabRef}: {BibTeX}-based literature management software},
journal = {TUGboat},
issn = {0896-3207},
issue = {138},
volume = {44},
number = {3},
pages = {441--447},
doi = {10.47397/tb/44-3/tb138kopp-jabref},
year = {2023},
}
(E.g. in Windows this means jabref-X.Y.exe -d all -n , where X.Y means the version number
of JabRef. If this does not help, run regedit and delete the folder
HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\net\sf\jabref . Be careful with
regedit , as you can easily corrupt the basic Windows configuration.)
Q: I have tried the latest version of JabRef. Since then, the library entries are
no longer displayed in any old version. What should I do?
A: Don't panic. No data should be damaged in your bib library. Since version 5.0 the columns in the main
entry table are stored differently internally. You can reset the preferences by command line. See above.
disable field formatters (Library → Library Properties → Saving → Save actions → ...)
disable autosave (File → Preferences → File → Saving → ...)
Sort the maintable columns from A-Z (low to highest), not from Z-A. See issue 8977.
Any preference that has the potential to affect all your entries at once is worth inspecting.
Q: If I double click a BibTeX file in the file browser, JabRef always opens a
new window. Can JabRef open the libraries in the same window just in a
different tab?
A: In File → Preferences → Network, in the “Remote operation” section, put a checkmark to “Listen for
remote operation on port”. This option allows new instances of JabRef to detect the instance already
running, and pass files to that instead of opening a new window. (Default option since JabRef 3.0).
Q: I miss a field translator, lastfollowedon, etc. How can I add such fields?
A: To add this translator field to all entry types, you can use File → Preferences → Custom editor tabs
and add a translator field under one of JabRef's general field tabs (see Customize general fields). To add
this translator field to a specific entry type, edit the specific entry type(s) (File → Customize entry types)
and add a translator field under required fields or optional fields, as you like (see Customize entry types).
Q: How do I link external files with paths relative to my .bib file, so I can move
my library along with its files to another directory?
A: You need to override the default file directory for this specific library. In Library → Library properties
you can override the Default file directory setting. There, you can either enter the path in General file
directory (for it to be valid for all users of the file) or in User-specific file directory (for it to be valid for you
only). If you simply enter “.” (a dot, without the quotes), the file directory will be the same as the .bib file
directory. To place your files in a subdirectory called subdir, you can enter “./subdir” (without the quotes).
Files will automatically be linked with relative paths if the files are placed in the default file directory or in a
directory below it. More details on the help page about the library properties.
In File → Preferences, tab External programs, button "Manage external file types", you can add arbitrary
types. See the dedicated page about external file types.
A: Drag & drop a PDF onto the table of entries (between two existing entries). JabRef will analyze the PDF
and create a new entry. More details about Adding entries from PDFs.
Q: When I modify my library, I would like that JabRef performs entry cleaning
automatically. How to do this?
A: In Library → Library properties, you will find a section named "Save actions". After enabling this
feature, you can choose which actions should be performed for each field upon saving. That should help
you keep your library tidy. More details about cleaning up entries, save actions, and check integrity.
Q: JabRef does not push to vim, although I have configured the right path and
server name. What is going on?
A: You have to start vim with the option --servername (such as vim --servername
MyVimServer ). If you get the Unknown option argument message, it means your version of vim
does not include the clientserver feature (you can check with vim --version ). In such a case, you
have to install another version of vim .
Q: In the preferences, I want to change the option XYZ. How to find it?
A: Enter XYZ in the search field located at the upper left-hand corner of the preference window.
Q: "Unable to monitor file changes. Please close files and processes and
restart. You may encounter errors if you continue with this session."
A: This error message has been observed on systems that use inotify. System calls to inotify_init
and inotify_add_watch set errno to EMFILE when inotify has reached its limit. The most
common reason is that inotify is running too many instances. To solve this problem, contact your
system administrator and request that they increase the limits defined in
/proc/sys/fs/inotify/max_user_* files.
Q: "I'm using JabRef with Linux (Gnome desktop version) and each time I
want to see a pdf document in JabRef, the document viewer Evince is opened.
I would prefer to open it with Okular."
A: JabRef opens the pdf document with the application Gnome has set by default: Evince. If you want
JabRef to open another application (Okular or other), in your file explorer, right-click on whatever pdf file >
properties > Open With > choose your application > Set as default at the bottom right corner. From now on,
both when you double-click a pdf file in your file explorer or when you ask JabRef to open it via its
document viewer, your chosen application will be used.
If you use version control, a few advices are given for a smoother sharing of a bib file.
JabRef 5.x
JabRef comes with a bundled JRE. There is no need to install Java separately. Thus, there should be no
issues at start up.
JabRef 4.x
Please follow the steps provided on our installation page. JabRef 4.x does not run under Java 9 or newer.
See https://github.com/JabRef/jabref/issues/2594
You might see the error message Error: Could not find or load main class
org.jabref.JabRefMain . This means, you do not have JavaFX support activated in your Java
runtime environment. This typically happens if you use OpenJDK, where one needs to setup OpenJFX
separately.
For Ubuntu you may also have a look at the Ubuntu page on Java.
Everything looks too big or too small. How can I change it to to a more
reasonable size?
In the background, JabRef uses JavaFX. Applications using JavaFX can be scaled via java -
Dglass.gtk.uiScale=1.5 -jar <application>.jar . If you have installed JabRef via a
package manager, you probably don't have a .jar file but a binary file. In this case, you need to find your
JabRef.cfg in your installation folder (possibly located at /opt/JabRef/lib/app/JabRef.cfg )
and add in the section [JavaOptions] the line -Dglass.gtk.uiScale=1.5 . Then, restart
JabRef. Try finding a value that is suitable for you. On high resolution displays, values around 1.5 seem
to be reasonable.
Where can I find JabRef's log files?
A: On Linux, the path to the log files is ~/.cache/jabref/logs/version/
Mac OS X
Q: After installing JabRef 5.9 on macOS ventura I get the error message:
JabRef 5.9 is damaged and cannot be opened
A: Execute xattr -d com.apple.quarantine /Applications/JabRef.app
Because we could not get 5.9 notarized correctly from Apple this step is unfortuantely necessary.
Q: Some characters are not displayed in the main table (math characters or
some upper-cased letter)
A: This might be a problem related to the font you are using. You can download some other font that
supports mathematical alphanumeric symbols, for example, FreeSerif or Cambria Math. A list of fonts
supporting Math Unicode blocks is available at
http://www.fileformat.info/info/unicode/block/mathematical_alphanumeric_symbols/fontsupport.htm.
The last option is to use Docear4Word, which is planned to be ported to JabRef (see JabRef4Word).
We are really happy that you are interested in contributing to JabRef. Please take your time to look around
here. We especially invite you to look into our community members page where members introduce
themselves.
I am not a programmer
I would like to improve the help page. What are the steps? gitter join chat
Please use the "Edit on GitHub" link in the upper right corner. Then, follow GitHub's guide to edit
files in other user's repository.
I would like to help translating JabRef to another language. How do I get started?
gitter join chat
For changes affecting all languages, update the wikidata entry of JabRef.
For changes in a specific language, go to the related page, and simply click on "Edit" (top right-
hand tab). Currently, existing pages are:
Deutsch: https://de.wikipedia.org/wiki/JabRef
English: https://en.wikipedia.org/wiki/JabRef
Español: https://es.wikipedia.org/wiki/JabRef
Français: https://fr.wikipedia.org/wiki/JabRef
Italiano: https://it.wikipedia.org/wiki/JabRef
Русский: https://ru.wikipedia.org/wiki/JabRef
Portuguese: https://pt.wikipedia.org/wiki/JabRef
Svenska: https://sv.wikipedia.org/wiki/JabRef
Українська: https://uk.wikipedia.org/wiki/JabRef
中文: https://zh.wikipedia.org/wiki/JabRef
If there is no page for your own language, you can easily create one.
Donations keep us going! You can use Paypal, Flattr, or bank transfers. Your institution/company
can contribute too, through bank transfer for example. All details are provided at
https://donations.jabref.org.
Our team consists of volunteers. To provide better support, we are currently trying to get a funded
developer on board. Please consider donating money!
I am a programmer
I am a student and I want to start with something easy gitter join chat .
We collect good issues to start with at our list of good first issues. After finding something, please
check our CONTRIBUTING.md.
I am a student and I want to choose from a curated list of university projects gitter join chat
Have a look at JabRefs candidates for university projects. There, a list of possible projects to work
on during a teaching period is offered. After finding something, please check our
CONTRIBUTING.md.
We collect good issues to start with at our list of good first issues. After finding something, please
check our CONTRIBUTING.md.
Look at the discussions in our forum about new features. Find an interesting topic, discuss it and
start contributing. Alternatively, you can check out JabRefs projects page at GitHub. Although, of
course, you can choose to work on ANY issue, choosing from the projects page has the advantage
that these issues have already been categorized, sorted and screened by JabRef maintainers. A
typical sub-classifications scheme is "priority" (high, normal and low). Fixing high priority issues is
preferred.
I am a lecturer If you ask yourself how to integrate JabRef into your class, please read the
documentation about how to integrate JabRef into a class of software engineering training. As
student, you may notify your lecturer about this possibility.
I want to know how to contribute code and set up my workspace gitter join chat
You can talk to the core developers of JabRef in the gitter chat.
Please head to devdocs about code-quality to learn about our current efforts to measure and
improve code quality.
How to Improve the Help Page
Here is a quick start guide on how to improve help pages in the Jabref User Documentation.
Prerequisite
The Jabref help pages are hosted at GitBook with integration to GitHub, which provides version control
based on git. In order to edit or create a JabRef help page, you need a GitHub account. You can sign up
here for free. If you already have an account, please make sure that you are signed in.
1. Start editing
At the top of each help page, you can find the GitHub icon with "Edit on GitHub" link. Just click the link to
show the source of the page.
This leads you to the GitHub page associated with the help page:
To actually edit the page, click on the pencil icon, as highlighted above.
Most text can be simply added/edited in this field as plain text. However, you can style your contribution by
using markdown. Markdown is a rather easy way to format text without the need for complex markup, such
as with HTML. You can find an introduction to markdown here or here.
To save the changes, create a so-called "Commit" by scrolling down and pressing the "Propose File
Change" button:
Save changes
Please note: The message you provide here will be visible in the history of the help page, so please
consider your change and provide a meaningful description of your changes.
As the last step, submit the changes you have made back to the JabRef team:
Just press the "Create Pull Request" button, and confirm the creation of the request on the next page.
That's it! The JabRef team will review your changes and publish them on docs.jabref.org.
Advanced editing
To edit more than one file at a time, add screenshots, and for other more advanced changes, we
recommend that you checkout this repository locally and create a Pull Request of your changes using the
standard git and GitHub workflow.
Tables
The best way to enter tables is to use this Table Generator for Markdown. It has the nice feature to
generate markdown tables from different sources, e.g. you can directly copy the table from a spreadsheet
or upload a csv file. Just copy and paste the generated markdown into the documentation.
How to translate the JabRef User Interface
Introduction
JabRef comes with a set of translations into 20 different languages: Chinese (simplified), Danish, Dutch,
English, Farsi, French, German, Greek, Indonesian, Italian, Japanese, Norwegian, Persian, Portuguese,
Portuguese (Brazil), Russian, Spanish, Swedish, Tagalog, Turkish and Vietnamese.
If the JabRef interface already exists in your language, you can help improve it. Otherwise, you can start
translating JabRef into your own language.
Choose the string you want to translate in the left panel (strings to be translated are listed first)
and enter the translation in the central panel (suggestions are given at the bottom)
Place the downloaded file in the path src/main/resources/l10n . Then, execute gradlew run
in the root directory and JabRef should start.
For a new language to be available within JabRef, a corresponding line must be added in the Java class
GUIGlobals (found in the directory
/src/main/java/org/jabref/logic/l10n/Languages.java in the JabRef source code tree).
The line is inserted in the static {} section where the map LANGUAGES is populated. The code must
of course be recompiled after this modification.
File location
For each language, there is the file JabRef_xx.properties ( xx denotes the country code for the
language). It contains all translations in a key/value format. In the JabRef source code tree, the property
files reside in the /src/main/resources/l10n directory.
File format
Each entry is first given in English, then in the other language, with the two parts separated by an '='
character. For instance, a line can look like this in a German translation file:
Background\ color\ for\ optional\ fields=Hintergrundfarbe für optionale Felder
Note that each space character is escaped ( \ ) to make it a valid property key. The translation value does
not need any escapes.
Some entries contain "variables" that are inserted at runtime by JabRef - this can for instance be a file
name or a file type name:
A variable is denoted by %0 , %1 , %2 etc. In such entries, simply repeat the same notation in the
translated version.
As we can see, there are several "special" characters: the percent sign and the equals sign, along with the
colon character. If these characters are to be part of the actual text in an entry, they must be escaped in the
English version, as with the colon in the following example:
Error\ writing\ XMP\ to\ file\:_%0=Fehler beim Schreiben von XMP in die Datei: %0
The character encoding should be UTF-8. Please avoid Unicode escaping such as \u2302 .