• This repository has been archived on 26/Mar/2023
  • Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Python
  • License
    Other
  • Created over 13 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This Markdown extension adds inline LaTeX support without the need for external images.

Markdown-LaTeX

This Markdown extension adds support for inline LaTeX expressions without the need for external images. The available modes are %TEXT%, $MATH$, and %%PREAMBLE%%.

Modes

Markdown-LaTeX can technically allow for any sort of LaTeX expression, but there are three main modes that make writing everything much easier.

%TEXT% mode

The most basic of the modes is %TEXT% mode. Any expression within %TEXT% will be parsed in a basic LaTeX text-mode, e.g. plain. For example, %``Justin Bruce Van Horne''%.

$MATH$ mode

Math mode is our second basic functionality of Markdown-LaTeX. It automatically puts LaTeX into math mode and allows for inline and multiline expressions. Let's say that we wanted to write Euler's formula: We would then write $e^{\imath x} = \cos{x} + \imath\sin{x}$.

%%PREAMBLE%% mode

Preamble mode is the only "complex" mode. It allows you to add to the preamble of the LaTeX template. So, if there are specific packages or commands you want for the HTML page, then this is where to do it. This is a global modifier and will affect the entire document. I haven't come up with an intuitive design for a per-expression basis.

Dependencies

Markdown-LaTeX depends on:

Installation

You can either copy it into the extensions sub-directory in your markdown folder (ex: /usr/lib/python2.7/site-packages/markdown/extensions/latex.py) or use it locally with the mdx_ prefix. See Markdown Extensions for more details.

Usage

markdown -x latex somefile.markdown > somefile.html

Configuration

This plugin uses dvipng in order to produce the output images. The arguments passed to dvipng are configurable, see tests/markdown-latex.cfg for an example. In particular, you may want to adapt the argument passed to the -D option in order to change output resolution resp. font size.

You may also change the delimiters used for text, math and preamble mode within the configuration file, see tests2/markdown-latex.cfg. When running this plugin on existing text you need to escape all occurrences of % and $. Changing delimiters may reduce this effort.


How does it work?

The LaTeX extension will search for either $text$ or %text% expressions. For each expression, it generates a tex file that is parsed by latex and then run through dvipng. The data is encoded via base64 and then inlined. A cache file (latex.cache) is used to store all expressions and their base64 counterparts. This is to prevent latex from being run each time.


Suggestions/Improvements: