Skip to content

PerfectlyNormal/texrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

texrack Code Climate

Simple Rack middleware to render LaTeX to PNGs on the fly.

Requirements

  • pdflatex must be installed
  • convert (from ImageMagick) must be installed

Configuration

If "pdflatex" or "convert" is not available in PATH, you can change Texrack.config and specify where to find them.

If you want a custom logger, set Texrack.config[:logger] to anything responding to #warn, #debug, #info and so on. For example Rails.logger if mounting inside a Rails application.

The default configuration is

Texrack.config = {
  pdflatex: "pdflatex",
  convert:  "convert",
  logger:   nil,
  cache_dir: Dir.mktmpdir,
  allowed_domains: ['*.example.com']
}

Usage

Either POST or GET to the configured URL with data set to the LaTeX source to compile.

If you GET / without setting data, you get a simple form.

Display mode

Everything is rendered inside a displaymath block (\[ or $$) by default. To disable the displaymath block, pass math=0.

Packages

The only included package is amsmath. To add more, send a pipe-separated string as packages. Arguments can be prepended.

For example: packages="[usenames,dvipsnames,svgnames,table]xcolor|amssymb" turns into

\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{amssymb}

Always respond with 200 OK

If you are dealing with software incapable of proper status codes (looking at you, Flash), you can pass always_200=1 and it'll respond with 200 OK even though we should really respond with a 5xx.

Trim result image

Pass trim=1 to tell ImageMagick to trim the result using -trim.

crossdomain.xml

If TexRack is used from Flash, and hosted on a different domain, you might need a crossdomain.xml file. Set Texrack.config[:allowed_domains] to an array of domains that should be allowed access.

Example: allowed_domains: ['*.example.com']

Caching

Generated images are cached by default, so we don't have to shell out to pdflatex and imagemagick all the time. Configure cache_dir to store the files somewhere safe, otherwise a tempdir is created and used.

The application sends ETags for each generated image.