[!Note] Users of Vim and Neovim < 0.10 have to install the branch "vim".
Zotcite is a Neovim plugin that provides integration with Zotero. With zotcite you can:
Do auto-completion of citation keys from Zotero database in
Markdown, RMarkdown and Quarto documents (with cmp-zotcite
).
Quickly see on the status bar information on the reference under the cursor.
Use the zotref.py
filter to pre-process the Markdown document before the
citations are processed by pandoc
, avoiding the need of bib
files.
Open the PDF attachment of the reference associated with the citation key under the cursor.
Extract highlighted text and text notes from PDF attachments of references.
Extract Zotero notes and annotations from Zotero database.
Add all cited references to the YAML header of the Markdown document.
Zotcite is being developed and tested on Linux and should work flawlessly on other Unix systems, such as Mac OS X. It may require additional configuration on Windows.
Requirements:
Zotero >= 5
Python 3
Python 3 modules pynvim (see Neovim documentation on provider-python
for
details) and PyYAML.
Python modules PyQt5 and python-poppler-qt5 (only if you are going to extract annotations from PDF documents). On Debian based Linux distributions, you can install them with the command:
sudo apt install python3-pyqt5 python3-poppler-qt5
Depending on your system, you may have to install python modules in an virtual environment and maybe also system-wide.
Zotcite can be installed as any Neovim plugin, and it depends on
telescope.nvim, and
nvim-treesitter as well
as tree-sitter parsers for markdown
, markdown_inline
, and yaml
.
Optionally, you can also use
cmp-zotcite, for auto-completing
the citations keys. Below is an example of how to install zotcite
with
lazy.nvim:
{
"jalvesaq/zotcite",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-telescope/telescope.nvim",
},
config = function ()
require("zotcite").setup({
-- your options here (see doc/zotcite.txt)
})
end
},
{
"nvim-treesitter/nvim-treesitter",
run = ":TSUpdate",
config = function ()
require("nvim-treesitter.configs").setup({
sync_install = true,
ensure_installed = {
"html",
"latex",
"markdown",
"markdown_inline",
"yaml",
},
highlight = {
enable = true,
},
indent = {
enable = true,
},
})
vim.o.foldmethod = "expr"
vim.o.foldexpr = "nvim_treesitter#foldexpr()"
vim.o.foldenable = false
end
},
Note: you don't need to lazy load zotcite because it already lazy loads its modules only for the supported file types, and you do need to call zotcite's setup function.
The Python module zotero
does not import the vim
module. Hence, its code
could easily be adapted to other text editors or as a language server for
markdown and quarto.
Please, read the plugin's documentation for further instructions.
Zotcite's Python code was based on the citation.vim project.