Skip to main content

The command-line Inkscape eXporter, Makefile and LaTeX friendly

Project description

ScapeX — The command-line Inkscape eXporter, Makefile and LaTeX friendly


ScapeX is a Python utility that invokes Inkscape to export an SVG drawing into a single PDF file or a set of PDFs.

It is designed to export high-quality drawings, graphics, and diagrams, hence the choice of the PDF format for vector graphics. The design of the command-line interface makes it suitable for on-the-fly usage or integration in a Makefile-based build system (e.g., for LaTeX). In addition, thanks to its fragments export feature, this tool can be used to create animated slides (e.g., using Beamer).

Features

  • Command-line interface with autocompletion
  • Each figure export can be configured via a sidecar TOML file
  • The fragments export mode creates multiple PDFs based on arbitrary layer combinations
  • Fonts rendering can be performed either by Inkscape during export or by LaTeX during compilation
  • Out-of-tree export capability

Installation

The easiest way to install ScapeX is to use PipX, a Pip wrapper that automatically creates a virtual environment.

pipx install scapex

To enable Zsh autocompletion, add the following to your ~/.zshrc:

[!WARNING] This must be added before the very first call to compinit (which initializes the autocompletion system).

which scapex >/dev/null && fpath+=($(scapex --completions-zsh))

Restart your shell and you are ready to go!

[!TIP] Want to try it directly from the repository? See CONTRIBUTING.md!

Usage

The simplest usage is to export a single PDF file, optionally into another build directory:

scapex -o BUILD_DIRECTORY INPUT.svg

Fragments (animations)

To create animated exports, first generate a TOML configuration file for your diagram:

scapex --generate INPUT.svg

Open the file and adjust its configuration according to the layer identifiers defined in Inkscape:

vim INPUT.toml

Once ready, perform the fragments export:

scapex --fragments INPUT.svg

Interfacing with LaTeX (fonts rendering)

Fonts rendering can be delegated to LaTeX using the --fonts-engine=latex option. This will create a .pdf_tex sidecar file to the .pdf, containing the text that will be processed by LaTeX when including the exported PDF with \input{FILE.pdf_tex}:

scapex --fonts-engine=latex INPUT.svg

Interfacing with Makefile

ScapeX can also be used inside a Makefile, enabling automatic export when a drawing is modified and proper dependency handling. See the self-documented example under examples/Makefile.

Getting help

For additional usage, see scapex -h:

usage: scapex [-h] [-v] [-o OUTPUT_DIR] [--generate]
              [--fonts-engine {latex,inkscape}] [--fragments | --no-fragments]
              [--completions-zsh]
              [SVG_FILE]

The command-line Inkscape eXporter, Makefile and LaTeX friendly

positional arguments:
  SVG_FILE              Inkscape drawing in SVG format to export

options:
  -h, --help            show this help message and exit
  -v, --verbose         Increase verbosity if set
  -o, --output-dir OUTPUT_DIR
                        Set the output directory [default = .]
  --generate            Generate a TOML template configuration file for input
                        SVG file (instead of exporting)
  --fonts-engine {latex,inkscape}
                        Set the font rendering engine [default = inkscape]
  --fragments, --no-fragments
                        Enable (or disable) fragments exportation (instead of
                        full exportation) [default = False]
  --completions-zsh     Print the path of the directory containing the Zsh
                        autocompletion script (instead of exporting)

Contributing

See CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scapex-1.0.2.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scapex-1.0.2-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file scapex-1.0.2.tar.gz.

File metadata

  • Download URL: scapex-1.0.2.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for scapex-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2f95b7a00dced331e04eca635ad17d97aeb7de6a298d18aafc5fce9c62b44068
MD5 16cbe75d39dcdadfb993dbbb74d595bb
BLAKE2b-256 6c45c75b9dcf33f8d40eae17fe80e4a05304c17a6576adf1633487bf462dec9d

See more details on using hashes here.

File details

Details for the file scapex-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: scapex-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for scapex-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 07f5e16fbba2d82f1b08fd7d2bfba8a4b274225c52ba5b6cc83b9ac35bfbb8d6
MD5 7bed5cc4b112fc74f72e135f0a60ec32
BLAKE2b-256 e2f1468d16300cf25252b3b6dd52282ff1dcd84af2188e8328e8354aa5addf20

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page