quiver

A modern commutative diagram editor for the web.

https://github.com/varkor/quiver

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.2%) to scientific vocabulary

Keywords

category-theory commutative commutative-diagrams diagram editor latex pasting-diagrams tikz tikz-cd tikzcd
Last synced: 6 months ago · JSON representation ·

Repository

A modern commutative diagram editor for the web.

Basic Info
  • Host: GitHub
  • Owner: varkor
  • License: mit
  • Language: JavaScript
  • Default Branch: master
  • Homepage: https://q.uiver.app
  • Size: 8.51 MB
Statistics
  • Stars: 3,291
  • Watchers: 28
  • Forks: 100
  • Open Issues: 61
  • Releases: 0
Topics
category-theory commutative commutative-diagrams diagram editor latex pasting-diagrams tikz tikz-cd tikzcd
Created about 7 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

quiver: a modern commutative diagram editor

quiver

quiver is a modern, graphical editor for commutative and pasting diagrams, capable of rendering high-quality diagrams for screen viewing, and exporting to LaTeX via tikz-cd.

Creating and modifying diagrams with quiver is orders of magnitude faster than writing the equivalent LaTeX by hand and, with a little experience, competes with pen-and-paper.

Try quiver out: q.uiver.app

Features & screenshots

quiver features an efficient, intuitive interface for creating complex commutative diagrams and pasting diagrams. It's easy to draw diagrams involving pullbacks and pushouts,

Pullback

adjunctions,

Adjunction

and higher cells.

3-cell

Object placement is based on a flexible grid that resizes according to the size of the labels.

Flexible grid

Arrow styles

There is a wide range of composable arrow styles.

Colours

And full use of colour for labels and arrows.

Screenshot mode

quiver is intended to look good for screenshots, as well as to export LaTeX that looks as close as possible to the original diagram.

Keyboard hints

Diagrams may be created and modified using either the mouse, by clicking and dragging, or using the keyboard, with a complete set of keyboard shortcuts for performing any action.

Export to LaTeX

When you export diagrams to LaTeX, quiver will embed a link to the diagram, which will allow you to return to it later if you decide it needs to be modified, or to share it with others.

Other features

  • Multiple selection, making mass changes easy and fast.
  • A history system, allowing you to undo/redo actions.
  • Support for custom macro definitions: simply paste a URL corresponding to the file containing your \newcommands.
  • Export embeddable diagrams to HTML.
  • Panning and zooming, for large diagrams.
  • Smart label alignment and edge offset.

Importing macros and colours

To use custom macros and colours in quiver, create a file containing the definitions, like the following.

latex \newcommand{\cat}{\mathscr} \newcommand{\psh}{\widehat} \newcommand{\smcat}{\mathbb} \newcommand{\yo}{よ}

Upload the file to a publicly accessible URL (for instance, gist.github.com), and paste the URL for the raw text into the "Macros" input at the bottom of quiver.

Currently, macros may be defined using \newcommand, \newcommand*, \renewcommand, \renewcommand*, \DeclareMathOperator, and \DeclareMathOperator*; and colours may be defined using \definecolor (using the colour modes: rgb, RGB, HTML, gray).

Editor integration

See Editor integration on the quiver wiki.

Building

Run make from the command line, and then open src/index.html in your favourite web browser.

If this fails, you might be using an incompatible version of Make or Bash. In this case, you can manually download the latest release of KaTeX and place it under src/ as src/KaTeX/. If KaTeX has not been given the correct path, you will get an error telling you that KaTeX failed to load.

quiver must be run through localhost. If you have Python installed, an easy solution is to run: make serve in the quiver directory and then open localhost:8000 in browser.

If you have any other problems building quiver, open an issue detailing the problem and I'll try to help.

Thanks to

  • S. C. Steenkamp, for helpful discussions regarding the aesthetic rendering of arrows.
  • AndréC, for the custom TikZ style for curves of a fixed height.
  • Nathan Corbyn, for adding the ability to export embeddable diagrams to HTML.
  • Paolo Brasolin, for adding offline support.
  • Carl Davidson, for discussing and prototyping loop rendering.
  • Everyone who has improved quiver by reporting issues or suggesting improvements.

Owner

  • Name: varkor
  • Login: varkor
  • Kind: user

Type theorist and Rust compiler developer.

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you would like to cite quiver, you may do so with the following."
title: quiver
abstract: "A modern commutative diagram editor."
authors:
  - family-names: Arkor
    given-names: Nathanael
    orcid: https://orcid.org/0000-0002-4092-7930
url: https://q.uiver.app/
version: 1.5.5
date-released: 2025-06-24
repository-code: https://github.com/varkor/quiver
license: MIT

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 456
  • Total Committers: 7
  • Avg Commits per committer: 65.143
  • Development Distribution Score (DDS): 0.015
Past Year
  • Commits: 37
  • Committers: 3
  • Avg Commits per committer: 12.333
  • Development Distribution Score (DDS): 0.081
Top Committers
Name Email Commits
varkor g****b@v****m 449
Tristan F. L****6@h****m 2
cartesiancat 4****t 1
Smittyvb me@s****m 1
Paolo Brasolin p****n@g****m 1
Nathan Corbyn me@n****m 1
Lemon 3****y 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 120
  • Total pull requests: 9
  • Average time to close issues: 8 months
  • Average time to close pull requests: 16 days
  • Total issue authors: 64
  • Total pull request authors: 7
  • Average comments per issue: 2.38
  • Average comments per pull request: 2.11
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 27
  • Pull requests: 4
  • Average time to close issues: 15 days
  • Average time to close pull requests: 1 day
  • Issue authors: 20
  • Pull request authors: 3
  • Average comments per issue: 0.89
  • Average comments per pull request: 0.5
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • varkor (38)
  • ouboub (9)
  • user202729 (5)
  • enjoysmath (3)
  • ephiljones (3)
  • BryceClarke (2)
  • ralphS16 (2)
  • 4e554c4c (2)
  • shashankbangalore (1)
  • hediet (1)
  • analytic-bias (1)
  • zellerede (1)
  • KalokaK (1)
  • Spamakin (1)
  • jake-87 (1)
Pull Request Authors
  • LeoDog896 (4)
  • varkor (3)
  • Lemonsity (2)
  • dependabot[bot] (2)
  • blurname (1)
  • remimimimimi (1)
Top Labels
Issue Labels
feature-request (21) discussion (18) ui-ux (18) bug (14) blocked (9) tikz-cd-output (7) diagrams (5) documentation (3) meta (2) extension (2) embedded-diagrams (2)
Pull Request Labels
dependencies (2) discussion (1)

Dependencies

service-worker/package-lock.json npm
  • 320 dependencies
service-worker/package.json npm
  • workbox-build ^7.0.0 development