Create, edit, share and publish scientific documents.
curvenote
is an open source library and command line interface (CLI) to create share and publish technical documents.
- Write papers and reports in Markdown and Jupyter (docs)
- Create and share interactive websites (docs)
- Export to Word, LaTeX, and PDF with any template (docs)
In addition to being completely local, curvenote
can optionally sync content to https://curvenote.com to allow you to work with collaborators who enjoy WYSIWYG editing, commenting & real time collaboration for technical documents.
Curvenote is available through Node and NPM. Unless you already have this on your system you will have to install NodeJS. See full install instructions in the docs!
npm install -g curvenote
curvenote init
curvenote start
curvenote deploy
Curvenote allows you to easily create, edit, and publish content to the web as a fast, optimized site with interactive citations, cross-referencing, math, and dynamic figures from Jupyter Notebooks.
Curvenote can be used to create all sorts of open-access content, click the links below to see some examples!
- Courses & books
- Seminar & conference websites
- Blogs & technical websites
- Papers & reports
- Documentation
- Sharing Jupyter Notebooks
The default website you create can have interactive Jupyter Notebook features, and live-preview of cross-references and citations.
PhD Thesis with linked references, equations, and export to PDF.
Interactive Papers with Jupyter Notebooks and interactive visualizations.
These interactive scientific sites can be easily deployed on a hosting service called curve.space or can also be hosted on your own custom domain.
The client library is entirely local, and rebuilds in ~50ms for most projects. Meaning you can preview your content as you are writing!
First login, see authorization docs to get an API token.
curvenote token set
> YOUR_API_TOKEN
Then you can directly export your curvenote documents to:
- Microsoft Word (.docx)
- Markdown (.md) - using MyST
- LaTeX (.tex)
- PDF (.pdf)
curvenote export docx https://curvenote.com/@curvenote/blog/communicating-science communicating-science.docx
curvenote export md https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.md
curvenote export tex https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.tex -template plain_latex
curvenote export pdf https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.pdf -template arxiv_nips
Exporting to:
- LaTeX (
latex
|tex
) with a template option specified - or to PDF
Requires the jtex python package to be installed and available on the user's PATH
.
With python 3.7 or greater installed, install jtex
via pip:
python -m pip install jtex
All dependencies for curvenote
are included in this repository (a monorepo!).
curvenote
uses npm as a package manager. It includes the following packages/apps:
Apps:
curvenote
: the Curvenote command line interface (CLI)curvespace
: the web-experience for Curvenote sites, using Remix
Packages:
ui-providers
: React providers for references and site configurationmyst-to-react
: expose MyST content as an article, built with Reactsite
: components and utilities for building React and Remix sitessite-common
: utilities and types that are used in the CLI, APIs and sites, does not include Reacticons
: icons used throughout our projects, built for Reactcitation-js-utils
: utilities for using the citation-js libraryeslint-config-custom
:eslint
configurationstsconfig
:tsconfig.json
s used throughout the monorepo
Each package and app is 100% TypeScript.
Curvenote uses changesets to document changes to this monorepo, call npx changeset
and follow the prompts. Later, npx changeset version
will be called and then npx changeset publish
.
curvenote
is built and developed using:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
To build all apps and packages, run the following command:
cd curvenote
npm run build
To develop all apps and packages, run the following command:
cd curvenote
npm run dev