Authoring tools for scholarly communication. Create interactive web pages or formal research papers from markdown source. Living Papers is intended to be a "language toolkit" for parsing, transforming, and rendering documents.
To get up and running quickly, use the Living Papers project template. Then take a look at other example articles.
This repo is a research testbed for Living Papers development. There will be bugs. Contributions (issues, PRs, etc) are welcome!
For more about Living Papers' motivation and development please see the Living Papers UIST'23 paper and overview video.
To cite Living Papers in research publication, please use the following citation data:
@inproceedings{heer2023living,
author = {Heer, Jeffrey and Conlen, Matthew and Devireddy, Vishal and Nguyen, Tu and Horowitz, Joshua},
title = {Living Papers: A Language Toolkit for Augmented Scholarly Communication},
year = {2023},
url = {https://doi.org/10.1145/3586183.3606791},
doi = {10.1145/3586183.3606791},
booktitle = {Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology},
articleno = {42},
numpages = {13},
series = {UIST '23}
}
Before working with Living Papers, set up your local environment:
pandoc
from the command line. A recent version of Pandoc (v2.18 or higher) is recommended.To use Living Papers for a new publishing project, you can install the @living-papers/cli
npm package, which provides the lpub
utility to convert source to output documents.
That said, we recommend copying the project template repo for a pre-configured authoring setup.
Clone this monorepo, run npm install
to install JavaScript dependencies.
Once installed, you can:
npm run build
to build the monorepo package exports.npm run test
to run test cases across monorepo packages.npm run lint
to lint source code across monorepo packages.npx lpub filename.md
to compile a source file in the current directory.The examples
folder contains example Living Papers articles. Within the folder for each example, run npm run build
to produce compiled output article(s). Be sure to run npm run build
at the monorepo level before trying to build examples.
This repository uses a monorepo organization. Here is an overview of the folder structure:
examples
: Example Living Papers articlespackages
: Primary Living Papers packages
ast
: Abstract Syntax Tree (AST) manipulationcli
: Command line interface programscompiler
: Article parser and compilercomponents
: Web components for HTML outputruntime
: Reactive runtime for HTML outputruntime-compiler
: JavaScript parser/compiler for the reactive runtimetemplates
: Article templates