Commands

Add

The add command is one of the central commands of the papis command line interface. It is a very versatile command with a fair amount of options.

There are also customization settings available for this command, check out the configuration page for add.

Examples

  • Add a document located in ~/Documents/interesting.pdf and name the folder where it will be stored in the database interesting-paper-2021

    papis add ~/Documents/interesting.pdf \
        --folder-name interesting-paper-2021
    

    if you want to add directly some key values, like author, title and tags, you can also run the following:

    papis add ~/Documents/interesting.pdf \
        --folder-name interesting-paper-2021 \
        --set author 'John Smith' \
        --set title 'The interesting life of bees' \
        --set year 1985 \
        --set tags 'biology interesting bees'
    
  • Add a paper that you have locally in a file and get the paper information through its doi identifier (in this case 10.10763/1.3237134 as an example):

    papis add ~/Documents/interesting.pdf --from doi 10.10763/1.3237134
    
  • Add paper to a library named machine-learning from arxiv.org

    papis -l machine-learning add \
        --from arxiv https://arxiv.org/abs/1712.03134
    
  • If you do not want copy the original pdfs into the library, you can also tell papis to just create a link to them, for example

    papis add --link ~/Documents/interesting.pdf \
        --from doi 10.10763/1.3237134
    

    will add an entry into the papis library, but the pdf document will remain at ~/Documents/interesting.pdf, and in the document’s folder there will be a link to ~/Documents/interesting.pdf instead of the file itself. Of course you always have to be sure that the document at ~/Documents/interesting.pdf does not disappear, otherwise you will end up without a document to open.

  • Papis also tries to make sense of the inputs that you have passed to the command, for instance you could provide only a doi and papis will try to know if this is indeed a doi

    papis add 10.1103/PhysRevLett.123.156401
    

    or from a url

    papis add journals.aps.org/prl/abstract/10.1103/PhysRevLett.123.156401
    papis add https://arxiv.org/abs/1712.03134
    
  • You can also download citations alongside the information of the paper if the papers is able to obtain a doi identifier. You can pass the --fetch-citations flag in order to create a citations.yaml file.

Examples in python

There is a python function in the add module that can be used to interact in a more effective way in python scripts,

papis.commands.add.run(paths: List[str], data: Dict[str, Any] | None = None, folder_name: str | None = None, file_name: str | None = None, subfolder: str | None = None, base_path: str | None = None, confirm: bool = False, open_file: bool = False, edit: bool = False, git: bool = False, link: bool = False, citations: Sequence[Dict[str, Any]] = ()) None[source]
Parameters:
  • paths – Paths to the documents to be added

  • data – Data for the document to be added. If more data is to be retrieved from other sources, the data dictionary will be updated from these sources.

  • folder_name – Name of the folder where the document will be stored

  • file_name – File name of the document’s files to be stored.

  • subfolder – Folder within the library where the document’s folder should be stored.

  • confirm – Whether or not to ask user for confirmation before adding.

  • open_file – Whether or not to ask the user for opening the file before adding.

  • edit – Whether or not to ask user for editing the info file before adding.

  • git – Whether or not to ask user for committing before adding, in the case of course that the library is a git repository.

Command-line Interface

Add a document into a given library

papis add [OPTIONS] [FILES]...

Options

-h, --help

Show this message and exit.

-s, --set <set_list>

Set some information before

-d, --subfolder <subfolder>

Subfolder in the library

-p, --pick-subfolder

Pick from existing subfolders

--folder-name <folder_name>

Name for the document’s folder (papis format)

--file-name <file_name>

File name for the document (papis format)

--from <from_importer>

Add document from a specific importer (arxiv, bibtex, crossref, dblp, doi, folder, isbn, lib, pdf2arxivid, pdf2doi, pmid, yaml)

-b, --batch

Batch mode, do not prompt or otherwise

--confirm, --no-confirm

Ask to confirm before adding to the collection

--open, --no-open

Open file before adding document

--edit, --no-edit

Edit info file before adding document

Instead of copying the file to the library, create a link toits original location

--git, --no-git

Git add and commit the new document

--list-importers, --li

List all available papis importers

--force-download, --fd

Download file with importer even if local file is passed

--fetch-citations

Fetch citations from doi

Arguments

FILES

Optional argument(s)

Addto

This command adds files to existing papis documents in some library.

For instance imagine you have two pdf files, a.pdf and b.pdf that you want to add to a document that matches with the query string einstein photon definition, then you would use

papis addto 'einstein photon definition' -f a.pdf -f b.pdf

notice that we repeat two times the flag -f, this is important.

Command-line Interface

Add files to an existing document

papis addto [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--git, --no-git

Add and commit files

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

-f, --files <files>

File fullpaths to documents

--file-name <file_name>

File name for the document (papis format)

--doc-folder <doc_folder>

Apply action to a document path

Arguments

QUERY

Optional argument

Browse

This command will try its best to find a source in the internet for the document at hand.

Of course if the document has an url key in its info file, it will use this url to open it in a browser. Also if it has a doc_url key, or a doi, it will try to compose urls out of these to open it.

If none of the above work, then it will try to use a search engine with the document’s information (using the browse-query-format). You can select which search engine you want to use using the search-engine setting.

It uses the configuration option browse-key to form an url according to which key is given in the document. You can bypass this option using the -k flag issuing the command.

papis browse -k doi einstein

This will form an url through the DOI of the document.

papis browse -k isbn

This will form an url through the ISBN of the document using isbnsearch.org.

papis browse -k ads

This will form an url using the gread ADS service and there you can check for similar papers, citations, references and much more. Please note that for this to work the document should have a DOI attached to it.

papis browse -k whatever

This will consider the key whatever of the document to be a valid url, I guess at this point you’ll know what you’re doing.

papis browse -k search-engine

This is the default, it will do a search-engine search with the data of your paper and hopefully you’ll find it.

Command-line Interface

Open document’s url in a browser

papis browse [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

-k, --key <key>

Use the value of the document’s key to open in the browser, e.g. doi, url, doc_url …

-n, --print

Just print out the url, do not open it with browser

-a, --all

Apply action to all matching documents

--doc-folder <doc_folder>

Apply action to a document path

Arguments

QUERY

Optional argument

Bibtex

This command helps to interact with bib files in your LaTeX projects.

Examples

I use it for opening some papers for instance

papis bibtex read new_papers.bib open

or to add papers to the bib

papis bibtex           \
  read new_papers.bib  \ # Read bib file
  add -q einstein      \ # Pick a doc with query 'einstein' from library
  add -q heisenberg    \ # Pick a doc with query 'heisenberg' from library
  save new_papers.bib    # Save in new_papers.bib

or if I update some information in my papis yaml files then I can do

papis bibtex          \
  read new_papers.bib \ # Read bib file
  update -f           \ # Update what has been read from papis library
  save new_papers.bib   # save everything to new_papers.bib, overwriting

Local configuration file

If you are working in a local folder where you have a bib file called main.bib, you’ll grow sick and tired of writing always read main.bib and save main.bib, so you can write a local configuration file .papis.config for papis bibtex to read and write automatically

[bibtex]
default-read-bibfile = main.bib
default-save-bibfile = main.bib
auto-read = True

with this setup, you can just do

papis bibtex add -q einstein save

Check references quality

When you’re collaborating with someone, you might come across malformed or incomplete references. Most journals want to have all the ``doi``s and urls available. You can automate this diagnostic with

For this you kan use the command doctor

papis bibtex read mybib.bib doctor

Mostly I want to have only the references in my project’s bib file that are actually cited in the latex file, you can check which references are not cited in the tex files by doing

papis bibtex iscited -f main.tex -f chapter-2.tex

and you can then filter them out using the command filter-cited.

To monitor the health of the bib project’s file, I mostly have a target in the project’s Makefile like

.PHONY: check-bib
check-bib:
    papis bibtex iscited -f main.tex doctor

it does not solve all problems under the sun, but it is really better than no check!

Vim integration

Right now, you can easily use it from vim with these simple lines

function! PapisBibtexRef()
  let l:temp = tempname()
  echom l:temp
  silent exec "!papis bibtex ref -o ".l:temp
  let l:olda = @a
  let @a = join(readfile(l:temp), ',')
  normal! "ap
  redraw!
  let @a = l:olda
endfunction

command! -nargs=0 BibRef call PapisBibtexRef()
command! -nargs=0 BibOpen exec "!papis bibtex open"

And use like such: asciicast

Command-line Interface

A papis script to interact with bibtex files

papis bibtex [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options

-h, --help

Show this message and exit.

--noar, --no-auto-read

Do not auto read even if the configuration file says it

Commands

add

Add a reference to the bibtex file

bibtex

Import documents from a bibtex file

browse

browse a document in the documents list

doctor

Check bibfile for correctness, missing…

edit

Tries to find the document in the list…

filter-cited

Filter cited documents from the read bib…

import

Import documents to papis e.g.

iscited

Check which documents are not cited e.g.

open

Open a document in the documents list

ref

Print the reference for a document

rm

Remove a document from the documents list

save

Save the documents imported in bibtex format

sort

Sort documents

unique

Remove repetitions

update

Update documents from and to the library

Config

The config command allows you to query the settings used by Papis on your system.

The config command returns the value used by Papis. Therefore, if you have not customized some setting, it will return the default value. In contrast, if you have customized it, it will return the value set in the configuration file. For example, to find out to what your “default-library” is set to, call:

papis config default-library

The config command can also be used to query a settings’ default value. This is done by adding the --default flag. This ignores all settings set in your Papis configuration file (note, however, that settings set in a config.py script can count as default values). Check the default “default-library” with:

papis config --default default-library

Settings from a specific section in the configuration file can also be accessed. To take an example, the Bibtex command’s settings can be accessed with:

papis config --section bibtex
papis config --default --section bibtex

or with papis config (without the section argument) to show the settings available for all the known sections.

You can also query a specific setting within a section. For example like this:

papis config --section bibtex default-read-bibfile
papis config --default --section bibtex default-read-bibfile

Alternatively, you can also use the <section.setting> format to query the value of a setting in a specific section:

papis config bibtex.default-read-bibfile
papis config --default bibtex.default-read-bibfile

For some more advanced usage, we can also query multiple settings at once. Here, sections specified with <section>.<setting> override the section specified by --setting <section>. This can be achieved by:

papis config --section sec1 key1 key2 key3 sec2.key4 sec3.key5

You can find a list of all available settings in the configuration section at General settings. Commands and other plugins can define their own settings, which are documented separately.

Command-line Interface

Print configuration values

papis config [OPTIONS] [OPTIONS]...

Options

-h, --help

Show this message and exit.

-s, --section <section>

select a default section for the options

-d, --default

List default configuration setting values, instead of those in the configuration file

--json

Print settings in a JSON format

Arguments

OPTIONS

Optional argument(s)

Main

Examples

  • To override some configuration options, you can use the flag --set, for instance, if you want to override the editor used and the opentool to open documents, you can just type

    papis --set editor gedit --set opentool firefox edit
    papis --set editor gedit --set opentool firefox open
    
  • If you want to list the libraries and pick one before sending a database query to papis, use --pick-lib as such

    papis --pick-lib open 'einstein relativity'
    

Command-line Interface

papis [OPTIONS] COMMAND [ARGS]...

Options

-h, --help

Show this message and exit.

--version

Show the version and exit.

-v, --verbose

Make the output verbose (equivalent to –log DEBUG)

--profile <profile>

Print profiling information into file

-l, --lib <lib>

Choose a library name or library path (unnamed library)

-c, --config <config>

Configuration file to use

--pick-lib

Pick library to use

--cc, --clear-cache

Clear cache of the library used

-s, --set <set_list>

Set key value, e.g., –set info-name information.yaml –set opentool evince

--color <color>

Prevent the output from having color

Options:

always | auto | no

--log <log>

Logging level

Options:

INFO | DEBUG | WARNING | ERROR | CRITICAL

--logfile <logfile>

File to dump the log

--np <np>

Use number of processors for multicore functionalities in papis

Commands

add

Add a document into a given library

addto

Add files to an existing document

bibtex

A papis script to interact with bibtex files

browse

Open document’s url in a browser

citations

Handle document citations

config

Print configuration values

doctor

Check for common problems in documents

edit

Edit document information from a given…

exec

Execute a python file in the environment…

explore

Explore new documents using a variety of…

export

Export a document from a given library

git

Run git command in a library or document…

list

List documents’ properties

merge

Merge two documents from a given library

mv

Move a document into some other path

open

Open document from a given library

rename

Rename entry

rm

Delete a document, a file, or a notes-file

run

Run an arbitrary shell command in the…

serve

Start a papis server

update

Update a document from a given library.

Edit

This command edits the information of the documents. The editor used is defined by the editor configuration setting.

Command-line Interface

Edit document information from a given library

papis edit [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--doc-folder <doc_folder>

Apply action to a document path

--git, --no-git

Add changes made to the info file

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

-n, --notes

Edit notes associated to the document

-a, --all

Apply action to all matching documents

-e, --editor <editor>

Editor to be used

Arguments

QUERY

Optional argument

Explore

This command is in an experimental stage but it might be useful for many people.

Imagine you want to search for some papers online, but you don’t want to go into a browser and look for it. Explore gives you way to do this, using several services available online, more should be coming on the way.

An excellent such resource is crossref, which you can use by using the subcommand crossref:

papis explore crossref --author 'Freeman Dyson'

If you issue this command, you will see some text but basically nothing will happen. This is because explore is conceived in such a way as to concatenate commands, doing a simple

papis explore crossref -h

will tell you which commands are available. Let us suppose that you want to look for some documents on crossref, say some papers of Schroedinger, and you want to store them into a bibtex file called lib.bib, then you could concatenate the commands crossref and export --format bibtex as such

papis explore crossref -a 'Schrodinger' export --format bibtex lib.bib

This will store everything that you got from crossref in the file lib.bib and store in bibtex format. explore is much more flexible than that, you can also pick just one document to store, for instance let’s assume that you don’t want to store all retrieved documents but only one that you pick, the pick command will take care of it

papis explore crossref -a 'Schrodinger' pick export --format bibtex lib.bib

notice how the pick command is situated before the export. More generally you could write something like

papis explore \
    crossref -a Schroedinger \
    crossref -a Einstein \
    arxiv -a 'Felix Hummel' \
    export --format yaml docs.yaml \
    pick  \
    export --format bibtex specially-picked-document.bib

The upper command will look in crossref for documents authored by Schrodinger, then also by Einstein, and will look on the arxiv for papers authored by Felix Hummel. At the end, all these documents will be stored in the docs.yaml. After that we pick one document from them and store the information in the file specially-picked-document.bib, and we could go on and on.

If you want to follow-up on these documents and get them again to pick one, you could use the yaml command to read in document information from a yaml file, i.e., the previously created docs.yaml

papis explore \
    yaml docs.yaml \
    pick \
    cmd 'papis scihub {doc[doi]}' \
    cmd 'firefox {doc[url]}'

In this last example, we read the documents’ information from docs.yaml and pick a document, which then feed into the explore cmd command, that accepts a papis formatting string to issue a general shell command. In this case, the picked document gets fed into the papis scihub command which tries to download the document using scihub, and also this very document is tried to be opened by firefox (in case the document does have a url).

Command-line Interface

Explore new documents using a variety of resources

papis explore [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options

-h, --help

Show this message and exit.

add

papis explore add [OPTIONS]

arxiv

Look for documents on ArXiV.org.

Examples of its usage are

papis explore arxiv -a ‘Hummel’ -m 100 arxiv -a ‘Garnet Chan’ pick

If you want to search for the exact author name ‘John Smith’, you should enclose it in extra quotes, as in the example below

papis explore arxiv -a ‘“John Smith”’ pick

papis explore arxiv [OPTIONS]

Options

-h, --help

Show this message and exit.

-q, --query <query>
-a, --author <author>
-t, --title <title>
--abstract <abstract>
--comment <comment>
--journal <journal>
--report-number <report_number>
--category <category>
--id-list <id_list>
--page <page>
-m, --max <max>

bibtex

Import documents from a bibtex file

Examples of its usage are

papis explore bibtex lib.bib pick

papis explore bibtex [OPTIONS] BIBFILE

Options

-h, --help

Show this message and exit.

Arguments

BIBFILE

Required argument

citations

Query the citations of a paper

Example:

Go through the citations of a paper and export it in a yaml file

papis explore citations ‘einstein’ export –format yaml einstein.yaml

papis explore citations [OPTIONS] [QUERY]

Options

--doc-folder <doc_folder>

Apply action to a document path

-h, --help

Show this message and exit.

-b, --cited-by

Use the cited-by citations

-a, --all

Apply action to all matching documents

Arguments

QUERY

Optional argument

cmd

Run a general command on the document list

Examples of its usage are:

Look for 200 Schroedinger papers, pick one, and add it via papis-scihub

papis explore crossref -m 200 -a ‘Schrodinger’

pick cmd ‘papis scihub {doc[doi]}’

papis explore cmd [OPTIONS] COMMAND

Options

-h, --help

Show this message and exit.

Arguments

COMMAND

Required argument

crossref

Look for documents on crossref.org.

Examples of its usage are

papis explore crossref -a ‘Albert einstein’ pick export –bibtex lib.bib

papis explore crossref [OPTIONS]

Options

-h, --help

Show this message and exit.

-q, --query <query>

General query

-a, --author <author>

Author of the query

-t, --title <title>

Title of the query

-m, --max <_ma>

Maximum number of results

-f, --filter <_filters>

Filters to apply

-o, --order <order>

Order of appearance according to sorting

Default:

desc

Options:

desc | asc

-s, --sort <sort>

Sorting parameter

Default:

score

Options:

relevance | issued | updated | published | published-print | references-count | deposited | score | indexed | is-referenced-by-count | published-online

dblp

Look for documents on dblp.org.

Examples of its usage are

papis explore dblp -a 'Albert einstein' pick export --bibtex lib.bib
papis explore dblp [OPTIONS]

Options

-h, --help

Show this message and exit.

-q, --query <query>

General query

-m, --max <max_results>

Maximum number of results

dissemin

Look for documents on dissem.in

Examples of its usage are

papis explore dissemin -q ‘Albert einstein’ pick cmd ‘firefox {doc[url]}’

papis explore dissemin [OPTIONS]

Options

-h, --help

Show this message and exit.

-q, --query <query>

export

Export retrieved documents into various formats for later use

Examples of its usage are

papis explore crossref -m 200 -a ‘Schrodinger’ export –yaml lib.yaml

papis explore export [OPTIONS]

Options

-h, --help

Show this message and exit.

-f, --format <fmt>

Format for the document

Options:

bibtex | json | yaml

-o, --out <out>

Outfile to write information to

isbn

Look for documents using isbnlib

Examples of its usage are

papis explore isbn -q ‘Albert einstein’ pick cmd ‘firefox {doc[url]}’

papis explore isbn [OPTIONS]

Options

-h, --help

Show this message and exit.

-q, --query <query>
-s, --service <service>
Options:

default | goob | openl | wiki

json

Import documents from a json file

Examples of its usage are

papis explore json lib.json pick

papis explore json [OPTIONS] JSONFILE

Options

-h, --help

Show this message and exit.

Arguments

JSONFILE

Required argument

lib

Query for documents in your library

Examples of its usage are

papis lib -l books einstein pick

papis explore lib [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--doc-folder <doc_folder>

Apply action to a document path

-l, --library <library>

Papis library to look

Arguments

QUERY

Optional argument

pick

Pick a document from the retrieved documents

Examples of its usage are

papis explore bibtex lib.bib pick

papis explore pick [OPTIONS]

Options

-h, --help

Show this message and exit.

-n, --number <number>

Pick automatically the n-th document

yaml

Import documents from a YAML file.

Examples of its usage are:

papis explore yaml lib.yaml pick
papis explore yaml [OPTIONS] YAMLFILE

Options

-h, --help

Show this message and exit.

Arguments

YAMLFILE

Required argument

Export

The export command is useful to work with other programs such as bibtex.

Some examples of its usage are:

  • Export one of the documents matching the author with einstein to bibtex:

papis export --format bibtex 'author : einstein'

or export all of them

papis export --format bibtex --all 'author : einstein'
  • Export all documents to bibtex and save them into a lib.bib file

papis export --all --format bibtex --out lib.bib
  • Export a folder of one of the documents matching the word krebs into a folder named, interesting-document

  papis export --folder --out interesting-document krebs

this will create the folder ``interesting-document`` containing the
``info.yaml`` file, the linked documents and a ``bibtex`` file for
sharing with other people.

Note

Every document exported also comes with the key _papis_local_folder associated that points to the full local folder path where the document is stored in the file system. This is done for the convenience of third party apps.

Command-line Interface

Export a document from a given library

papis export [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--doc-folder <doc_folder>

Apply action to a document path

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

-a, --all

Apply action to all matching documents

--folder

Export document folder to share

-o, --out <out>

Outfile or outdir

-f, --format <fmt>

Format for the document

Options:

bibtex | json | yaml

Arguments

QUERY

Optional argument

Git

This command is useful if your library is itself a git repository. You can use this command to issue git commands in your library repository without having to change your current directory.

CLI Examples

  • Check the status of the library repository:

papis git status
  • Commit all changes:

papis git commit -a

List

This command is to list contents of a library.

Examples

  • List all document files associated will all entries:

    papis list --all --file
    
  • List all document year and title with custom formatting:

    papis list --all --format '{doc[year]} {doc[title]}'
    
  • List all documents according to the bibitem formatting (stored in a template file bibitem.template):

    papis list --all --template bibitem.template
    
  • For scripting, printing the id of a series of documents is valuable in order to further use the id in other scripts.

    papis_id=$(papis list --id)
    papis open papis_id:${papis_id}
    papis edit papis_id:${papis_id}
    # etc.
    

Command-line Interface

List documents’ properties

papis list [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

-i, --info

Show the info file name associated with the document

--id

Show the papis_id

-f, --file

Show the file name associated with the document

-d, --dir

Show the folder name associated with the document

-n, --notes

List notes files, if any

--format <_format>

List entries using a custom papis format, e.g. ‘{doc[year] {doc[title]}

--template <template>

Template file containing a papis format to list entries

--downloaders

List available downloaders

--libraries

List defined libraries

-a, --all

Apply action to all matching documents

--doc-folder <doc_folder>

Apply action to a document path

Arguments

QUERY

Optional argument

Mv

Command-line Interface

Move a document into some other path

papis mv [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--git, --no-git

Add git interoperability

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--doc-folder <doc_folder>

Apply action to a document path

Arguments

QUERY

Optional argument

Open

The open command is a very important command in the papis workflow. With it you can open documents, folders or marks.

Marks

One of special things about this command is the possibility of creating marks for documents. As you would imagine, it is in general difficult to create marks for any kind of data. For instance, if our library consists of pdf files and epub files for instance, we would like to define bookmarks in order to go back to them at some later point.

How you define marks can be customized through the marks configuration settings here. The default way of doing it is just by defining a marks list in a document. Let us look at a concrete example:

author: Isaiah Shavitt, Rodney J. Bartlett
edition: '1'
files: [book.pdf]
isbn: 052181832X,9780521818322

marks:
- {name: Intermediates definition, value: 344}
- {name: EOM equations, value: 455}

publisher: Cambridge University Press
ref: book:293288
series: Cambridge Molecular Science
title: 'Many-Body Methods in Chemistry and Physics'
type: book
year: '2009'

This book has defined two marks. Each mark has a name and a value. If you tell the open command to open marks, then it will look for the marks and open the value (page number). This is the default behaviour, however if you go to the configuration you’ll see that you can change the convention to what it suits you.

Examples

  • Open a pdf file linked to a document matching the string bohm

    papis open bohm
    
  • Open the folder where this last document is stored

    papis open -d bohm
    

    Please notice that the file browser used will be also related to the file-browser setting.

  • Open a mark defined in the info file

    papis open --mark bohm
    

Command-line Interface

Open document from a given library

papis open [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--doc-folder <doc_folder>

Apply action to a document path

-a, --all

Apply action to all matching documents

--tool <tool>

Tool for opening the file (opentool)

-d, --dir

Open directory

-m, --mark, --no-mark

Open mark

Arguments

QUERY

Optional argument

Rename

Command-line Interface

Rename entry

papis rename [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--git, --no-git

Add git interoperability

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--doc-folder <doc_folder>

Apply action to a document path

Arguments

QUERY

Optional argument

Rm

Command-line Interface

Delete a document, a file, or a notes-file

papis rm [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--git, --no-git

Remove in git

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--doc-folder <doc_folder>

Apply action to a document path

--file

Remove files from a document instead of the whole folder

-n, --notes

Remove the notes file from a document instead of the whole folder

-f, --force

Do not confirm removal

-a, --all

Apply action to all matching documents

Arguments

QUERY

Optional argument

Run

This command is useful to issue commands in the directory of your library.

Examples

  • List files in your directory

papis run ls
  • Find a file in your directory using the find command

papis run find -name 'document.pdf'
  • Find all pdfs in the document folders matching einstein

  papis run -p einstein --all -- find . -name '*.pdf'

notice that in general, the symbol ``--`` is advisable
so that the arguments after it are considered as positional arguments
for the shell commands.

In this example you could also use pipes, for instance to print the
absolute path to the files, in linux you can use the command
``readlink -f`` and a pipe ``|`` to do this, i.e.:
papis run -p einstein \
        --all -- "find . -name '*.pdf' | xargs readlink -f"
  • Replace some text in all info.yaml files by something. For instance imagine you want to replace all note field names in the info.yaml files by _note so that the note field does not get exported to bibtex. You can do

    papis run -a -- sed -i "s/^note:/_note:/" info.yaml
    

Command-line Interface

Run an arbitrary shell command in the library or command folder

papis run [OPTIONS] <COMMANDS>

Options

-h, --help

Show this message and exit.

-p, --pick <QUERY>

Give a query to pick a document to run the command in its folder

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--doc-folder <doc_folder>

Apply action to a document path

-a, --all

Apply action to all matching documents

--prefix <PREFIX>

Prefix shell commands by a prefix command

Arguments

<COMMANDS>

Optional argument(s)

Update

This command is to update the information of the documents.

Some examples of the usage are given below

Examples

  • Update a document automatically and interactively (searching by doi number in crossref, or in other sources…)

    papis update --auto -i "author : dyson"
    
  • Update your library from a bib(la)tex file where many entries are listed. papis will try to look for documents in your library that match these entries and will ask you entry per entry to update it (of course this is done if you use the -i flag for interactively doing it). In the example libraryfile.bib is a file containing many entries.

    papis update --from bibtex libraryfile.bib -i
    
  • Tag all einstein papers with the tag classics

    papis update --all --set tags classics einstein
    

and add the tag of physics to all papers tagged as classics

papis update --all --set tags '{doc[tags]} physics' einstein

Command-line Interface

Update a document from a given library.

papis update [OPTIONS] [QUERY]

Options

-h, --help

Show this message and exit.

--git, --no-git

Add git interoperability

--doc-folder <doc_folder>

Apply action to a document path

-a, --all

Apply action to all matching documents

--sort <FIELD>

Sort documents with respect to FIELD

--reverse

Reverse sort order

--auto

Try to parse information from different sources

--from <from_importer>

Add document from a specific importer (arxiv, bibtex, crossref, dblp, doi, folder, isbn, lib, pdf2arxivid, pdf2doi, pmid, yaml)

-s, --set <set_tuples>

Update document’s information with key value.The value can be a papis format.

Arguments

QUERY

Optional argument

Citations

The citations command updates and creates the citations.yaml and cited.yaml files for every document.

Examples

  • Create the citations.yaml file for a document that you pick

    papis citations -c
    

    or longer

    papis citations --fetch-citations
    
  • Create the citations.yaml file for all documents matching an author

    papis citations --all -c author:einstein
    
  • Overwrite the citations.yaml file with the --force flag for all Einstein papers

    papis citations --force -c author:einstein
    # or
    papis citations -fc author:einstein
    
  • Update the citations.yaml file with citations of documents existing in your library

    papis citations --all --update-from-database author:einstein
    
  • Create the cited-by.yaml for all documents in your library (this might take a while)

    papis citations --fetch-cited-by --all