Reference Documentation

Python-sharelatex primer

Python-sharelatex is a library to interact with It also includes a command line tools to sync your remote project with Git. This allows you to work offline on your project and later sync your local copy with the remote one.


# Latest stable version
pip install sharelatex

# Development version
git clone
cd python-sharelatex
pip install [-e] .

Compatibility notes

The tool is targetting the community edition of ShareLatex/Overleaf and we are testing it on:

Persistent sessions

Sessions are persistent and store in the application directory (exact might differ on the OS used). Is uses appdirs internally.

Note on passwords management

Passwords are stored in your keyring service (Keychain, Kwallet …) thanks to the keyring library. Please refer to the dedicated documentation for more information.

Quick examples

Display the possible actions

slatex is a subcommand of git that calls the git-slatex programm shipped by this project.

$) git slatex

Usage: git-slatex [OPTIONS] COMMAND [ARGS]...

  --help  Show this message and exit.

  clone    Get (clone) the files from sharelatex projet URL and crate a...
  compile  Compile the remote version of a project
  new      Upload the current directory as a new sharelatex project
  pull     Pull the files from sharelatex.
  push     Push the commited changes back to sharelatex

For instance you can get the help on a specific sub-command with the following:

git slatex clone --help

Get an existing project on slatex

mkdir test
cd test
# download all files of a remote project
git slatex clone <project_URL> <local_path_to_project>

Editing and pushing back to slatex

# edit your files
# commit, commit, commit ...
# Push back your change to sharelatex
git slatex push

Concurrent updates may occur between your local files (because you changed them) and the remote ones (because you collaborators changed them). So before pushing, we try to make sure the merge between the remote copy and the local ones is ok. You’ll have to resolve the conflict manually (as usual with Git) and attempt a new push.

Pull changes from sharelatex to local (like a git pull)

# Pull changes from sharelatex
git slatex pull

Create a remote project from a local git

git slatex new <base_server_URL> <new_project_name>