All Projects → aslushnikov → Latex Online

aslushnikov / Latex Online

Licence: mit
Online latex compiler. You give it a link, it gives you PDF

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Latex Online

Pandoc Letter Din5008
Pandoc template for writing Markdown letters (DIN 5008)
Stars: ✭ 77 (-79.79%)
Mutual labels:  latex, pdf
Travis Ci Latex Pdf
Travis CI and deployment service to build PDF from LaTeX document.
Stars: ✭ 170 (-55.38%)
Mutual labels:  latex, pdf
Nb pdf template
A more accurate representation of jupyter notebooks when converting to pdfs.
Stars: ✭ 109 (-71.39%)
Mutual labels:  latex, pdf
Stories About Ming Dynasty
明朝那些事儿(全七卷)
Stars: ✭ 52 (-86.35%)
Mutual labels:  latex, pdf
Pandoc Latex Template
A pandoc LaTeX template to convert markdown files to PDF or LaTeX.
Stars: ✭ 3,750 (+884.25%)
Mutual labels:  latex, pdf
Docker Texlive
A docker container containing an installation of texlive as well as several useful scripts.
Stars: ✭ 52 (-86.35%)
Mutual labels:  latex, pdf
Neotex
latex live preview - plugin for neovim and vim 8
Stars: ✭ 170 (-55.38%)
Mutual labels:  latex, pdf
Ultimate Beamer Theme List
A collection of custom Beamer themes
Stars: ✭ 652 (+71.13%)
Mutual labels:  latex, pdf
Open Publisher
Using Jekyll to create outputs that can be used as Pandoc inputs. In short - input markdown, output mobi, epub, pdf, and print-ready pdf. With a focus on fiction.
Stars: ✭ 242 (-36.48%)
Mutual labels:  latex, pdf
Awesome Cv
📄 Awesome CV is LaTeX template for your outstanding job application
Stars: ✭ 14,957 (+3825.72%)
Mutual labels:  latex, pdf
Cv Boilerplate
Programmatic generation of high-quality CVs
Stars: ✭ 967 (+153.81%)
Mutual labels:  latex, pdf
Letter Boilerplate
Finest letter typesetting from the command line
Stars: ✭ 374 (-1.84%)
Mutual labels:  latex, pdf
Readteractive
Tool for writing and generating interactive books.
Stars: ✭ 23 (-93.96%)
Mutual labels:  latex, pdf
Milewski Ctfp Pdf
Bartosz Milewski's 'Category Theory for Programmers' unofficial PDF and LaTeX source
Stars: ✭ 9,037 (+2271.92%)
Mutual labels:  latex, pdf
Satysfi
A statically-typed, functional typesetting system
Stars: ✭ 815 (+113.91%)
Mutual labels:  latex, pdf
Dvisvgm
A fast DVI, EPS, and PDF to SVG converter
Stars: ✭ 134 (-64.83%)
Mutual labels:  latex, pdf
Resume
👾 My resume / 我的简历
Stars: ✭ 482 (+26.51%)
Mutual labels:  latex, pdf
Invoice Boilerplate
Simple automated LaTeX invoicing system
Stars: ✭ 604 (+58.53%)
Mutual labels:  latex, pdf
Resumake.io
📝 A website for automatically generating elegant LaTeX resumes.
Stars: ✭ 2,277 (+497.64%)
Mutual labels:  latex, pdf
Latexdraw
A vector drawing editor for LaTeX (JavaFX).
Stars: ✭ 336 (-11.81%)
Mutual labels:  latex, pdf

About LaTeX.Online alt text

This service is developed to compile latex documents online. It can build PDF directly from GIT repository with TeX sources or from any link to TeX file.

In addition, the service provides command-line utility (for compiling local documents), API and Stand-Alone version. See more below.

Latex-Online

Contents

Capabilities

  • Compile .TEX file via link. (Limitation: includes will be ignored)
  • Compile GIT repo via link.
  • Compile local files or git repo via command-line interface.
  • REST API for compiling.

API

HTTP Response Codes

The service will return HTTP.2xx on success and compiled PDF file. Otherwise a HTTP.4xx code will be returned with a compilation error log in response body.

Compile url

Format:

/compile?url=<url to tex file>

Example:

latexonline.cc/compile?url=https://raw.githubusercontent.com/aslushnikov/latex-online/master/sample/sample.tex

Limitation: this command will ignore all includes during compiling

Compile text

Format:

/compile?text=<tex file content>

Example:

latexonline.cc/compile?text=%5Cdocumentclass%5B%5D%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Blmodern%7D%0A%5Cusepackage%7Bamssymb%2Camsmath%7D%0A%5Cusepackage%7Bifxetex%2Cifluatex%7D%0A%5Cusepackage%7Bfixltx2e%7D%20%25%20provides%20%5Ctextsubscript%0A%25%20use%20microtype%20if%20available%0A%5CIfFileExists%7Bmicrotype.sty%7D%7B%5Cusepackage%7Bmicrotype%7D%7D%7B%7D%0A%5Cifnum%200%5Cifxetex%201%5Cfi%5Cifluatex%201%5Cfi%3D0%20%25%20if%20pdftex%0A%20%20%5Cusepackage%5Butf8%5D%7Binputenc%7D%0A%5Celse%20%25%20if%20luatex%20or%20xelatex%0A%20%20%5Cusepackage%7Bfontspec%7D%0A%20%20%5Cifxetex%0A%20%20%20%20%5Cusepackage%7Bxltxtra%2Cxunicode%7D%0A%20%20%5Cfi%0A%20%20%5Cdefaultfontfeatures%7BMapping%3Dtex-text%2CScale%3DMatchLowercase%7D%0A%20%20%5Cnewcommand%7B%5Ceuro%7D%7B%E2%82%AC%7D%0A%5Cfi%0A%5Cusepackage%5Ba4paper%5D%7Bgeometry%7D%0A%5Cifxetex%0A%20%20%5Cusepackage%5Bsetpagesize%3Dfalse%2C%20%25%20page%20size%20defined%20by%20xetex%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20unicode%3Dfalse%2C%20%25%20unicode%20breaks%20when%20used%20with%20xetex%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20xetex%5D%7Bhyperref%7D%0A%5Celse%0A%20%20%5Cusepackage%5Bunicode%3Dtrue%5D%7Bhyperref%7D%0A%5Cfi%0A%5Chypersetup%7Bbreaklinks%3Dtrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20bookmarks%3Dtrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pdfauthor%3D%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pdftitle%3D%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20colorlinks%3Dtrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20urlcolor%3Dblue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20linkcolor%3Dmagenta%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pdfborder%3D%7B0%200%200%7D%7D%0A%5Csetlength%7B%5Cparindent%7D%7B0pt%7D%0A%5Csetlength%7B%5Cparskip%7D%7B6pt%20plus%202pt%20minus%201pt%7D%0A%5Csetlength%7B%5Cemergencystretch%7D%7B3em%7D%20%20%25%20prevent%20overfull%20lines%0A%5Csetcounter%7Bsecnumdepth%7D%7B0%7D%0A%0A%5Cauthor%7B%7D%0A%5Cdate%7B%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BHello%20World%7D%5Clabel%7Bhello-world%7D%0A%0AThis%20is%20your%20first%20%5Cemph%7BC%7D%20program%3A%0A%0A%5Cbegin%7Bverbatim%7D%0A%23include%20%3Cstdio.h%3E%0A%0Aint%20main(void)%20%0A%7B%0A%20%20printf(%22hello%2C%20world%5Cn%22)%3B%0A%20%20return%200%3B%0A%7D%0A%5Cend%7Bverbatim%7D%0A%0ALet's%20write%20some%20math%3A%0A%5C%5B%20%5Cfrac%7Bdf(x)%7D%7Bdx%7D%3D%5Clim_%7Bh%20%5Cto%200%7D%7B%5Cfrac%7Bf(x%2Bh)-f(x)%7D%7Bh%7D%7D%20%5C%5D%0A%5Cend%7Bdocument%7D

Compile git repo

Format:

/compile?git=<repo>&target=<target file>

This will fetch git repo and compile the target. target should be a relative path to the repository root.

Example:

latexonline.cc/compile?git=https://github.com/aslushnikov/diplom-latex&target=diplom.tex

Optional request arguments

For every compilation request you can pass the following additional arguments:

  • force=true This will force cache skipping and document recompilation
  • command=xelatex This will compile document with xelatex compiler. Other available options are:
    • pdflatex
    • xelatex
    • lualatex
  • download=sample.pdf This will initiate downloading of the resulting PDF into the file with the name "sample.pdf"

Command-line interface

The command-line interface makes it possible to edit TeX documents in vim/emacs and compile them whenever you want from the command-line. To do so, you will need a tool called laton.

Installation

curl -L https://raw.githubusercontent.com/aslushnikov/latex-online/master/util/latexonline > laton && chmod 755 laton

This command will result in a laton script created in a current directory. Put it somewhere your $PATH references to make it available around the system.

Example 1: compile single file

If you've got a single file (say main.tex) that doesn't have any includes, then you can compile it like this:

laton main.tex

After compiling file main.pdf will be created in the current dir

Example 2: compile files with dependencies

If your paper includes some files, you have to declare them to the laton.

laton main.tex some-image.jpg some-cool-file.tex

NB The first file should be the file you want to compile, all others are supporting files.

Example 3: compile local git repo

In case you store all your .tex and supporting files in a git repo, you can compile the project with the command

laton -g main.tex

The script will behave as if main.tex includes each file stored in your git repo.

How it works?

In this section a brief description of the service from the inside is given.

Generally speaking the service is made out of two parts

  • Node.js part which with the help of express.js provides the REST API, and with the help of mc bridges the gap with memcached instance
  • Bash scripts which handle all the jobs related to the service (fetching files, hashSumming them, compiling e.t.c)

There are three types of requests:

  1. Given a link to a .TEX file, compile it
  2. Given a tarball with files structure, compile it
  3. Given a git repo, compile it

Every request is handled in a bit special way

1. Given a link to a .TEX file, compile it

  1. The URL of the given file is fetched and saved locally
  2. The hash sum of the file is counted in some way
  3. Check in cache if we've got a PDF for the hashsum
  4. If yes, then just return the precompiled PDF from cache
  5. If no, then compile the file, cache the result and return it to user

2. Given a .TEX file content, compile it

  1. Given content is saved locally
  2. The hash sum of the file in counted in some way
  3. Check in cache if we've got a PDF for the hashsum
  4. If yes, then just return the precompiled PDF from cache
  5. If no, then compile the file, cache the result and return it to user

3. Given a tarball with files structure, compile it

  1. The tarball is saved locally
  2. The hash sum of the tarball is counted in some way
  3. Check in cache if we've got a PDF for the hashsum
  4. If yes, then just return the precompiled PDF from cache
  5. If no, then extract file structure from the tarball, compile it, cache the result and return it to user

4. Given a git repo, compile it

This kind of request is handled in a bit different way, as we can get a hashSum of the repo without cloning the entire repository.

  1. Using git ls-remote extracting sha1 of the master branch
  2. Check in cache if we've got a PDF for the given sha1
  3. If yes, then just return the precompiled PDF from cache
  4. If no, then do a shallow copy of the given git repo
  5. Compile it, cache the result and return it to user

DEPLOYMENT

This part is for you if you'd like to deploy the service on your own machine. There are two ways to do it:

  • easy one, with the help of awesome project Docker
  • the hard one - to do everything manually.

Deploy with Docker

A Docker image is hosted and auto-updated on hub.docker.com

  1. docker pull aslushnikov/latex-online
  2. docker run -d -p 2700:2700 -t aslushnikov/latex-online

Deploy manually

Dependencies

  • pdflatex command to compile documents
  • bc to estimate some values in scripts
  • curl to fetch documents from web
  • node.js to run server
  • npm to install node dependencies
  • memcached for caching compiled documents
  • md5 or md5sum utility to hash documents according to their value
  • python3 to run the latexrun build system

Installation

  1. git clone [email protected]:aslushnikov/latex-online.git to clone repo
  2. sh util/check.sh to check if all dependencies are satisfied and create tmp/ dir
  3. npm install to install node dependencies

Installation of pdflatex is beyond the scope of the document.

Running

  1. node app.js - runs node server
  2. memcached - runs local memcached instance
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].