All Projects → SwiftLaTeX → Swiftlatex

SwiftLaTeX / Swiftlatex

Licence: agpl-3.0
SwiftLaTeX, a WYSIWYG Browser-based LaTeX Editor

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
typescript
32286 projects
lua
6591 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Swiftlatex

Django Tinymce4 Lite
TinyMCE 4 editor widget for Django
Stars: ✭ 121 (-92.73%)
Mutual labels:  editor, wysiwyg
Wyg
A new WYSIWYG editing experience for the modern web
Stars: ✭ 73 (-95.61%)
Mutual labels:  editor, wysiwyg
Awesome Ebooks
收录开源的经典技术书籍 PDF 文件及相关网站,持续更新中...
Stars: ✭ 51 (-96.94%)
Mutual labels:  latex, editor
Remirror
ProseMirror toolkit for React 🎉
Stars: ✭ 973 (-41.53%)
Mutual labels:  editor, wysiwyg
Balsa
This repository holds source code of Balsa, a self hosted, privacy focused knowledgebase.
Stars: ✭ 93 (-94.41%)
Mutual labels:  editor, wysiwyg
Megadraft
Megadraft is a Rich Text editor built on top of Facebook's Draft.JS featuring a nice default base of components and extensibility
Stars: ✭ 982 (-40.99%)
Mutual labels:  editor, wysiwyg
Deckdeckgo
The web open source editor for presentations
Stars: ✭ 1,117 (-32.87%)
Mutual labels:  editor, wysiwyg
Uncolored
(Un)colored — Next generation desktop rich content editor that saves documents with themes. HTML & Markdown compatible. For Windows, OS X & Linux. — http://n457.github.io/Uncolored/
Stars: ✭ 733 (-55.95%)
Mutual labels:  editor, wysiwyg
Tiptap
The headless editor framework for web artisans.
Stars: ✭ 13,629 (+719.05%)
Mutual labels:  editor, wysiwyg
Texstudio
TeXstudio is a fully featured LaTeX editor. Our goal is to make writing LaTeX documents as easy and comfortable as possible.
Stars: ✭ 1,300 (-21.87%)
Mutual labels:  latex, editor
Jodit
Jodit - Best WYSIWYG Editor for You
Stars: ✭ 947 (-43.09%)
Mutual labels:  editor, wysiwyg
Awesome Wysiwyg
A curated list of awesome WYSIWYG editors.
Stars: ✭ 1,801 (+8.23%)
Mutual labels:  editor, wysiwyg
Quill
Quill is a modern WYSIWYG editor built for compatibility and extensibility.
Stars: ✭ 31,554 (+1796.27%)
Mutual labels:  editor, wysiwyg
Rich Text Editor
Math editor (http://digabi.github.io/rich-text-editor/)
Stars: ✭ 45 (-97.3%)
Mutual labels:  editor, wysiwyg
Awesome Medium Editor
Medium.com WYSIWYG editor clone, with RTL support.
Stars: ✭ 12 (-99.28%)
Mutual labels:  editor, wysiwyg
Canner Slate Editor
📝Rich Text / WYSIWYG Editor built for Modularity and Extensibility.
Stars: ✭ 1,071 (-35.64%)
Mutual labels:  editor, wysiwyg
Vim.wasm
Vim editor ported to WebAssembly
Stars: ✭ 4,915 (+195.37%)
Mutual labels:  webassembly, editor
Etherealengine
C++ Game Engine and Editor
Stars: ✭ 653 (-60.76%)
Mutual labels:  editor, wysiwyg
Hypermd
A WYSIWYG Markdown Editor for browsers. Break the Wall between writing and previewing.
Stars: ✭ 1,258 (-24.4%)
Mutual labels:  editor, wysiwyg
Tinymce
The world's #1 JavaScript library for rich text editing. Available for React, Vue and Angular
Stars: ✭ 10,179 (+511.72%)
Mutual labels:  editor, wysiwyg

This project is not actively maintained due to my work commitment. Looking for maintainers.

SwiftLaTeX

Introduction for SwiftLaTeX

SwiftLaTeX, a WYSIWYG WebAssembly client-side LaTeX Editor. All computation is done locally and files are stored in user-provided cloud storage.

Main Features

  1. Speed. SwiftLaTeX engines run in browsers, all computation is done strictly locally. It makes SwiftLaTeX more responsive (i.e., faster compilation) and scalable.

  2. WYSIWYG. SwiftLaTeX provides a WYSIWYG viewer, allowing users to editing PDF output directly.

  3. Flexible Storage Backend. SwiftLaTeX stores files in user-provided cloud storage or potentially self-hosting S3/Minio.

  4. Realtime collaboration. Send a secret link to your friend to start real-time collaboration.

Installation Guide

Compile by yourself

If you do not have node and yarn yet, try the following commands first.

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install 12 (you may need to restart your console to use nvm)
npm install yarn -g 

If you already have Node 12 and yarn, just run

git clone https://github.com/SwiftLaTeX/SwiftLaTeX
cd SwiftLaTeX
yarn
yarn start

SwiftLaTeX Technical Details

XeTeX Engine

SwiftLaTeX engine is based on Tectonic (a C++ reimplementation of XeTeX), which supports UTF-8 and Opentype fonts out of box. The engine is not 100% faithful to XeTeX. First, though XeTeX does support Chinese/Japanese/Korea/Arabic languages, the locale line breaking function is not available yet. This function is rarely used and supporting it requires a fully working ICU library, whose size may be unbearable in browser environments. Secondly, This engine not support graphite fonts, which are rarely used too.

Screenshot

SwiftLaTeX supports most legacy TeX fonts automatically. SwiftLaTeX also supports opentype fonts (ttf, otf), SwiftLaTeX provides a set of basic fonts (same as what you get from apt install texlive-full in Ubuntu), you could of cource upload your own opentype fonts.

\usepackage{fontspec}

\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Heros}[Scale=MatchLowercase]
\setmonofont{Inconsolata}[Scale=MatchLowercase]

Screenshot

Build Engine

If you wanna build or enhance XeTeX engine by yourself, you need to install Emscripten first.

# Get the emsdk repo
git clone https://github.com/emscripten-core/emsdk.git

# Enter that directory
cd emsdk

# Fetch the latest version of the emsdk (not needed the first time you clone)
git pull

# Download and install the latest SDK tools.
./emsdk install latest

# Make the "latest" SDK "active" for the current user. (writes .emscripten file)
./emsdk activate latest

# Activate PATH and other environment variables in the current terminal
source ./emsdk_env.sh

Then go to the directory 'webassembly' and type make. After that, you will find the engine files swiftlatex.wasm and swiftlatex.js over there.

cd webassembly
make

Enhance Engine Display Backend

Our engine outputs html directly, you can find and hack the backend in this file(https://github.com/SwiftLaTeX/SwiftLaTeX/blob/aaaba052def4b0b7e770ac46126cdaf0b9fc39f1/webassembly/xetexdir/XeTeX_ext.c#L313). Currently, Tikz is still not fully supported. Any contributions will be appreciated. We are consider moving this logic to javascript instead.

Storage Backends

SwiftLaTeX has few requirements on storage backends. A developer who wishes to add new storage backends just needs to implement the following three simple methods.

abstract put(scope: string, itemKey: string, file: Blob): Promise<string>;
put a file to the (scope, itemKey) and return an accessible http url to the file. SwiftLaTeX stores files in a two-level key-val structure. 

abstract get(scope: string, itemKey: string): Promise<ArrayBuffer>;
get the file located in (scope, itemKey)

abstract list(scope: string): Promise<ItemEntry[]>;
list all files located in (scope)

For more concrete examples, please have a look at src/client/storage/minio.tsx.

Project Sharing and Real-time collaboration

SwiftLaTeX adopts a simple sharing mechanism, which is agnostic to storage backends, provided that the storage backends provide a public url to each file. (For example, a user can store his project in Google Drive and share the project to users who use Dropbox). Exposing public urls is not a security risk, as they are usually very long and impractical to guess.

Sharing is achieved by using the YJS, A CRDT framework with a powerful abstraction of shared data. Every changed is synced among users. https://github.com/yjs/yjs

CTAN files

LaTeX is not a stand-alone typesetting program in itself, but document preparation software that runs on top of Donald E. Knuth's TeX typesetting system. TeX distributions usually bundle together all the parts needed for a working TeX system and they generally add to this both configuration and maintenance utilities. Nowadays LaTeX, and many of the packages built on it, form an important component of any major TeX distribution. In SwiftLaTeX, all required files are fetched from CTAN (Comprehensive TeX Archive Network), https://www.ctan.org, or our mirror server.

Change Logs

You can check the detailed change logs in http://www.swiftlatex.com/changelogs.html

Production Use

SwiftLaTeX is almost ready for production use, with the following exceptions. These exceptions will be gradually removed.

  1. No graphite fonts and international line-breaking support. We so far deem this functionalty not very useful for English-speaking people.
  2. XeTeX engine cannot properly display standalone tikz pictures, we are still investigating this issue.

License

The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the LICENSE file. Copyright (c) SwiftLab, 2018-2021.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].