{"id":13393490,"url":"https://github.com/varkor/quiver","last_synced_at":"2025-05-14T02:00:29.967Z","repository":{"id":41879528,"uuid":"163348528","full_name":"varkor/quiver","owner":"varkor","description":"A modern commutative diagram editor for the web.","archived":false,"fork":false,"pushed_at":"2025-02-21T02:59:39.000Z","size":8984,"stargazers_count":3223,"open_issues_count":55,"forks_count":91,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-04-12T00:57:26.499Z","etag":null,"topics":["category-theory","commutative","commutative-diagrams","diagram","editor","latex","pasting-diagrams","tikz","tikz-cd","tikzcd"],"latest_commit_sha":null,"homepage":"https://q.uiver.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varkor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-28T00:44:28.000Z","updated_at":"2025-04-09T04:02:31.000Z","dependencies_parsed_at":"2023-12-15T16:28:57.197Z","dependency_job_id":"f6ed363d-2e87-41cc-b030-d46d84c6f0cf","html_url":"https://github.com/varkor/quiver","commit_stats":{"total_commits":427,"total_committers":5,"mean_commits":85.4,"dds":0.00936768149882905,"last_synced_commit":"bf895038c135c811224d82f86bafadc9e14a58c6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varkor%2Fquiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varkor%2Fquiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varkor%2Fquiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varkor%2Fquiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varkor","download_url":"https://codeload.github.com/varkor/quiver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052658,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["category-theory","commutative","commutative-diagrams","diagram","editor","latex","pasting-diagrams","tikz","tikz-cd","tikzcd"],"created_at":"2024-07-30T17:00:54.122Z","updated_at":"2025-05-14T02:00:29.807Z","avatar_url":"https://github.com/varkor.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Uncategorized","Tools"],"sub_categories":["Uncategorized"],"readme":"# quiver: a modern commutative diagram editor\n\n[![quiver](screenshots/title.png \"quiver: a modern commutative diagram editor\")](https://q.uiver.app)\n\n**quiver** is a modern, graphical editor for [commutative] and [pasting diagrams], capable of\nrendering high-quality diagrams for screen viewing, and exporting to LaTeX via [tikz-cd].\n\nCreating and modifying diagrams with **quiver** is orders of magnitude faster than writing the\nequivalent LaTeX by hand and, with a little experience, competes with pen-and-paper.\n\n[commutative]: https://en.wikipedia.org/wiki/Commutative_diagram\n[pasting diagrams]: https://ncatlab.org/nlab/show/pasting+diagram\n[tikz-cd]: https://github.com/astoff/tikz-cd\n\nTry **quiver** out: [q.uiver.app](https://q.uiver.app)\n\n## Features \u0026 screenshots\n\n**quiver** features an efficient, intuitive interface for creating complex commutative diagrams and\npasting diagrams. It's easy to draw diagrams involving pullbacks and pushouts,\n\n[![Pullback](screenshots/pullback.png \"Pullback\")](http://q.uiver.app/?q=WzAsNSxbMSwyLCJBIl0sWzIsMSwiQiJdLFsyLDIsIkMiXSxbMSwxLCJBIFxcdGltZXNfQyBCIl0sWzAsMCwiWCJdLFswLDIsImYiLDJdLFsxLDIsImciXSxbMywwLCJcXHBpXzEiLDJdLFszLDEsIlxccGlfMiJdLFs0LDAsImEiLDIseyJjdXJ2ZSI6M31dLFs0LDEsImIiLDAseyJjdXJ2ZSI6LTN9XSxbNCwzLCJcXGxhbmdsZSBhLCBiIFxccmFuZ2xlIiwxLHsic3R5bGUiOnsiYm9keSI6eyJuYW1lIjoiZGFzaGVkIiwibGV2ZWwiOjF9fX1dLFszLDIsIiIsMSx7InN0eWxlIjp7Im5hbWUiOiJjb3JuZXIifX1dXQ==)\n\nadjunctions,\n\n[![Adjunction](screenshots/adjunction.png \"Adjunction\")](https://q.uiver.app/?q=WzAsMixbMCwwLCJcXG1hdGhzY3IgQyJdLFsyLDAsIlxcbWF0aHNjciBEIl0sWzAsMSwiRiIsMCx7ImN1cnZlIjotMn1dLFsxLDAsIkciLDAseyJjdXJ2ZSI6LTJ9XSxbMiwzLCIiLDAseyJsZXZlbCI6MSwic3R5bGUiOnsibmFtZSI6ImFkanVuY3Rpb24ifX1dXQ==)\n\nand higher cells.\n\n[![3-cell](screenshots/3-cell.png \"3-cell\")](https://q.uiver.app/?q=WzAsNCxbMCwwLCJYJyJdLFsxLDAsIlgiXSxbNCwwLCJZIl0sWzUsMCwiWSciXSxbMCwxLCJ4Il0sWzIsMywieSIsMl0sWzEsMiwiIiwwLHsiY3VydmUiOi0yfV0sWzEsMiwiIiwyLHsiY3VydmUiOjJ9XSxbMCwzLCJmJyIsMCx7ImN1cnZlIjotNX1dLFswLDMsImcnIiwyLHsiY3VydmUiOjV9XSxbOCw2LCJcXHZhcnBoaSIsMix7Imxlbmd0aCI6NzB9XSxbNyw5LCJcXGdhbW1hIiwwLHsibGVuZ3RoIjo3MH1dLFs2LDcsIlxcY2hpIiwyLHsib2Zmc2V0Ijo1LCJsZW5ndGgiOjcwfV0sWzYsNywiXFx1cHNpbG9uIiwwLHsib2Zmc2V0IjotNSwibGVuZ3RoIjo3MH1dLFsxMiwxMywiXFxtdSIsMCx7Imxlbmd0aCI6NzB9XV0=)\n\nObject placement is based on a flexible grid that resizes according to the size of the labels.\n\n[![Flexible grid](screenshots/flexible-grid.png \"Flexible grid\")](https://q.uiver.app/?q=WzAsMyxbMCwwLCIoQSBcXG90aW1lcyBJKSBcXG90aW1lcyBCIl0sWzIsMCwiQSBcXG90aW1lcyAoSSBcXG90aW1lcyBCKSJdLFsxLDEsIkEgXFxvdGltZXMgQiJdLFswLDIsIlxccmhvX0EgXFxvdGltZXMgQiIsMl0sWzEsMiwiQSBcXG90aW1lcyBcXGxhbWJkYV9CIl0sWzAsMSwiXFxhbHBoYV97QSwgSSwgQn0iXV0=)\n\n[![Arrow styles](screenshots/styles.png \"Arrow styles\")](https://q.uiver.app/?q=WzAsMTYsWzAsMCwiXFxidWxsZXQiXSxbMSwwLCJcXGJ1bGxldCJdLFswLDEsIlxcYnVsbGV0Il0sWzEsMSwiXFxidWxsZXQiXSxbMCwyLCJcXGJ1bGxldCJdLFsxLDIsIlxcYnVsbGV0Il0sWzAsMywiXFxidWxsZXQiXSxbMSwzLCJcXGJ1bGxldCJdLFszLDAsIlxcYnVsbGV0Il0sWzIsMCwiXFxidWxsZXQiXSxbMywxLCJcXGJ1bGxldCJdLFsyLDEsIlxcYnVsbGV0Il0sWzMsMiwiXFxidWxsZXQiXSxbMiwyLCJcXGJ1bGxldCJdLFszLDMsIlxcYnVsbGV0Il0sWzIsMywiXFxidWxsZXQiXSxbMCwxLCIiLDAseyJzdHlsZSI6eyJ0YWlsIjp7Im5hbWUiOiJtb25vIn0sImJvZHkiOnsibmFtZSI6ImRhc2hlZCIsImxldmVsIjoxfX19XSxbMiwzLCIiLDAseyJzdHlsZSI6eyJ0YWlsIjp7Im5hbWUiOiJtYXBzIHRvIn0sImJvZHkiOnsibmFtZSI6ImRvdHRlZCIsImxldmVsIjoxfSwiaGVhZCI6eyJuYW1lIjoiZXBpIn19fV0sWzQsNSwiIiwwLHsic3R5bGUiOnsidGFpbCI6eyJuYW1lIjoiaG9vayIsInNpZGUiOiJ0b3AifSwiYm9keSI6eyJuYW1lIjoic3F1aWdnbHkiLCJsZXZlbCI6MX0sImhlYWQiOnsibmFtZSI6ImhhcnBvb24iLCJzaWRlIjoidG9wIn19fV0sWzYsNywiIiwwLHsic3R5bGUiOnsidGFpbCI6eyJuYW1lIjoiaG9vayIsInNpZGUiOiJib3R0b20ifSwiYm9keSI6eyJuYW1lIjoiYmFycmVkIiwibGV2ZWwiOjF9LCJoZWFkIjp7Im5hbWUiOiJoYXJwb29uIiwic2lkZSI6ImJvdHRvbSJ9fX1dLFs4LDksImYiLDIseyJvZmZzZXQiOjJ9XSxbOCw5LCJnIiwwLHsib2Zmc2V0IjotMn1dLFsxMCwxMSwiIiwwLHsibGV2ZWwiOjIsInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6InNxdWlnZ2x5IiwibGV2ZWwiOjF9fX1dLFsxMiwxMywiIiwwLHsibGVuZ3RoIjoyMCwic3R5bGUiOnsiYm9keSI6eyJsZXZlbCI6MX19fV0sWzE0LDE1LCIiLDAseyJjdXJ2ZSI6MiwibGV2ZWwiOjMsInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImJhcnJlZCIsImxldmVsIjoxfSwiaGVhZCI6eyJuYW1lIjoiZXBpIn19fV1d)\n\nThere is a wide range of composable arrow styles.\n\n[![Colours](screenshots/colour-picker.png \"Colours\")](https://q.uiver.app/?q=WzAsNSxbMSwxLCJBIFxcdGltZXNfQyBCIixbMCw2MCw2MCwxXV0sWzIsMSwiQiIsWzI0MCw2MCw2MCwxXV0sWzEsMiwiQSIsWzI0MCw2MCw2MCwxXV0sWzIsMiwiQyIsWzI0MCw2MCw2MCwxXV0sWzAsMCwiWCIsWzEyMCw2MCw2MCwxXV0sWzAsMSwiIiwwLHsiY29sb3VyIjpbMCw2MCw2MF19XSxbMCwyLCIiLDIseyJjb2xvdXIiOlswLDYwLDYwXX1dLFsyLDMsImciLDIseyJjb2xvdXIiOlsyNDAsNjAsNjBdfSxbMTgwLDYwLDYwLDFdXSxbMSwzLCJmIiwwLHsiY29sb3VyIjpbMjQwLDYwLDYwXX0sWzE4MCw2MCw2MCwxXV0sWzAsMywiIiwwLHsiY29sb3VyIjpbMCw2MCw2MF0sInN0eWxlIjp7Im5hbWUiOiJjb3JuZXIifX1dLFs0LDIsImEiLDIseyJjdXJ2ZSI6MiwiY29sb3VyIjpbMTIwLDYwLDYwXX0sWzYwLDYwLDYwLDFdXSxbNCwxLCJiIiwwLHsiY3VydmUiOi0yLCJjb2xvdXIiOlsxMjAsNjAsNjBdfSxbNjAsNjAsNjAsMV1dLFs0LDAsIiIsMSx7ImNvbG91ciI6WzMwMCw2MCw2MF0sInN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImRhc2hlZCJ9fX1dXQ)\n\nAnd full use of colour for labels and arrows.\n\n[![Screenshot mode](screenshots/grid-hidden.png \"Screenshot mode\")](https://q.uiver.app/?q=WzAsOCxbMCwwLCJHeCJdLFsxLDAsIkZ4Il0sWzIsMCwiR3giXSxbMywwLCJGeCJdLFswLDEsIkd5Il0sWzEsMSwiRnkiXSxbMiwxLCJHeSJdLFszLDEsIkZ5Il0sWzAsMSwiXFxiZXRhX3giXSxbMSwyLCJcXGFscGhhX3giXSxbMiwzLCJcXGJldGFfeCJdLFswLDQsIkdmIiwyXSxbNCw1LCJcXGJldGFfeSIsMl0sWzUsNiwiXFxhbHBoYV95IiwyXSxbNiw3LCJcXGJldGFfeSIsMl0sWzMsNywiRmYiXSxbMSw1LCJGZiIsMV0sWzIsNiwiR2YiLDFdLFs0LDEsIlxcYmV0YV9mIiwwLHsic2hvcnRlbiI6eyJzb3VyY2UiOjIwLCJ0YXJnZXQiOjIwfSwibGV2ZWwiOjJ9XSxbNSwyLCJcXGFscGhhX2YiLDAseyJzaG9ydGVuIjp7InNvdXJjZSI6MjAsInRhcmdldCI6MjB9LCJsZXZlbCI6Mn1dLFs2LDMsIlxcYmV0YSdmIiwwLHsic2hvcnRlbiI6eyJzb3VyY2UiOjIwLCJ0YXJnZXQiOjIwfSwibGV2ZWwiOjJ9XSxbMCwyLCIxIiwwLHsiY3VydmUiOi00fV0sWzUsNywiMSIsMix7ImN1cnZlIjo0fV0sWzEsMjEsIlxcdmFyZXBzaWxvbl94IiwwLHsic2hvcnRlbiI6eyJ0YXJnZXQiOjMwfX1dLFsyMiw2LCJcXGV0YV95IiwyLHsic2hvcnRlbiI6eyJzb3VyY2UiOjMwfX1dXQ==)\n\n**quiver** is intended to look good for screenshots, as well as to export LaTeX that looks as close\nas possible to the original diagram.\n\n[![Keyboard hints](screenshots/hints.png \"Keyboard hints\")](https://q.uiver.app/?q=WzAsMixbMCwwLCJBIl0sWzEsMCwiQiJdLFswLDEsImYiXV0=)\n\nDiagrams 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.\n\n[![Export to LaTeX](screenshots/export.png \"Export to LaTeX\")](https://q.uiver.app/?q=WzAsOCxbMCwwLCJHeCJdLFsxLDAsIkZ4Il0sWzIsMCwiR3giXSxbMywwLCJGeCJdLFswLDEsIkd5Il0sWzEsMSwiRnkiXSxbMiwxLCJHeSJdLFszLDEsIkZ5Il0sWzAsMSwiXFxiZXRhX3giXSxbMSwyLCJcXGFscGhhX3giXSxbMiwzLCJcXGJldGFfeCJdLFswLDQsIkdmIiwyXSxbNCw1LCJcXGJldGFfeSIsMl0sWzUsNiwiXFxhbHBoYV95IiwyXSxbNiw3LCJcXGJldGFfeSIsMl0sWzMsNywiRmYiXSxbMSw1LCJGZiIsMV0sWzIsNiwiR2YiLDFdLFs0LDEsIlxcYmV0YV9mIiwwLHsibGVuZ3RoIjo1MCwibGV2ZWwiOjJ9XSxbNSwyLCJcXGFscGhhX2YiLDAseyJsZW5ndGgiOjUwLCJsZXZlbCI6Mn1dLFs2LDMsIlxcYmV0YSdmIiwwLHsibGVuZ3RoIjo1MCwibGV2ZWwiOjJ9XSxbMCwyLCIxIiwwLHsiY3VydmUiOi00fV0sWzUsNywiMSIsMix7ImN1cnZlIjo0fV0sWzEsMjEsIlxcdmFyZXBzaWxvbl94IiwwLHsibGVuZ3RoIjo1MH1dLFsyMiw2LCJcXGV0YV95IiwyLHsibGVuZ3RoIjo1MH1dXQ==)\n\nWhen you export diagrams to LaTeX, **quiver** will embed a link to the diagram, which will allow you\nto return to it later if you decide it needs to be modified, or to share it with others.\n\n### Other features\n- Multiple selection, making mass changes easy and fast.\n- A history system, allowing you to undo/redo actions.\n- Support for custom macro definitions: simply paste a URL corresponding to the file containing your `\\newcommand`s.\n- Export embeddable diagrams to HTML.\n- Panning and zooming, for large diagrams.\n- Smart label alignment and edge offset.\n\n## Importing macros and colours\n\nTo use custom macros and colours in **quiver**, create a file containing the definitions, like the\nfollowing.\n\n```latex\n\\newcommand{\\cat}{\\mathscr}\n\\newcommand{\\psh}{\\widehat}\n\\newcommand{\\smcat}{\\mathbb}\n\\newcommand{\\yo}{よ}\n```\n\nUpload the file to a publicly accessible URL (for instance,\n[gist.github.com](https://gist.github.com/)), and paste the URL for the raw text into the \"Macros\"\ninput at the bottom of **quiver**.\n\nCurrently, macros may be defined using `\\newcommand`, `\\newcommand*`, `\\renewcommand`,\n`\\renewcommand*`, `\\DeclareMathOperator`, and `\\DeclareMathOperator*`; and colours may be defined\nusing `\\definecolor` (using the colour modes: `rgb`, `RGB`, `HTML`, `gray`).\n\n## Editor integration\n\nSee [Editor integration](https://github.com/varkor/quiver/wiki/Editor-integration) on the [quiver\nwiki](https://github.com/varkor/quiver/wiki).\n\n## Building\nRun `make` from the command line, and then open `src/index.html` in your favourite web browser.\n\nIf this fails, you might be using an incompatible version of Make or Bash. In this case, you can\nmanually download the [latest release](https://github.com/KaTeX/KaTeX/releases) of KaTeX and place\nit under `src/` as `src/KaTeX/`. If KaTeX has not been given the correct path, you will get an\nerror telling you that KaTeX failed to load.\n\n**quiver** must be run through `localhost`. If you have Python installed, an easy solution is to\nrun:\n```\npython3 -m http.server\n```\nin the **quiver** `src` directory and then open `localhost:8000` in browser.\n\nIf you have any other problems building **quiver**, [open an\nissue](https://github.com/varkor/quiver/issues/new) detailing the problem and I'll try to help.\n\n## Thanks to\n- [S. C. Steenkamp](https://www.cl.cam.ac.uk/~scs62/), for helpful discussions regarding the\naesthetic rendering of arrows.\n- [AndréC](https://tex.stackexchange.com/users/138900/andr%c3%a9c), for the custom TikZ style for\ncurves of a fixed height.\n- [Nathan Corbyn](https://github.com/doctorn), for adding the ability to export embeddable diagrams\nto HTML.\n- [Paolo Brasolin](https://github.com/paolobrasolin), for adding offline support.\n- [Carl Davidson](https://github.com/davidson16807), for discussing and prototyping loop rendering.\n- Everyone who has improved **quiver** by reporting issues or suggesting improvements.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarkor%2Fquiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarkor%2Fquiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarkor%2Fquiver/lists"}