
Security News
New Website “Is It Really FOSS?” Tracks Transparency in Open Source Distribution Models
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
:uri-project: https://github.com/asciidoctor/asciimath ifndef::env-site[:status:]
An http://asciimath.org[AsciiMath] parser and MathML/LaTeX generator written in pure Ruby.
ifdef::status[] [discrete]
image:{uri-project}/workflows/CI/badge.svg?branch=master["Build Status", link={uri-project}/actions?query=branch%3Amaster] image:https://img.shields.io/gem/v/asciimath.svg?label=gem%20version[Gem Version, link=https://rubygems.org/gems/asciimath] endif::status[]
Add this line to your application's Gemfile:
And then execute:
$ bundle
Or install it yourself as:
$ gem install asciimath
First require the library.
Then parse an AsciiMath string.
The parsed expression is a set of nested Array and Hash objects.
This expression can then be converted to MathML, HTML (experimental) or LaTeX.
The MathML, HTML or LaTeX code is returned as a String.
The AsciiMath parser and converters can be invoked via the command line as follows:
asciimath "an asciimath string"
or
This command will print out the generated code on stdout.
The parser can be extended by passing a custum tokenization table:
my_tokens_table = AsciiMath::SymbolTableBuilder.new AsciiMath::Parser.add_default_parser_symbols(my_tokens_table) my_tokens_table.add('mysymbol', :mysymbol, :symbol)
Furthermore, the behaviour of the tokenizer be customized by altering the value
associated with a token in AsciiMath::Tokenizer::DEFAULT_PARSE_SYMBOL_TABLE
:
my_tokens_table = AsciiMath::SymbolTableBuilder.new AsciiMath::Parser.add_default_parser_symbols(my_tokens_table) my_tokens_table.add('alpha', :beta, :symbol)
The same behaviour applies to each individual render (MathMLBuilder
,
HTMLBuilder
and LatexBuilder
). By adding entries to a rendere's rendering
table (or modifying exisisting entries), users can customize it's output:
my_rendering_table = AsciiMath::SymbolTableBuilder.new AsciiMath::MarkupBuilder.add_default_display_symbols(my_rendering_table) my_rendering_table.add('alpha', '\u03b2', :identifier)
The HTML output is still regarded somewhat experimental - for basic usage it is fine, but it is not yet complete. Known issues are as follows:
sqrt
function does not generate sane outputbb
) will result in broken output.Rendering the HTML output correctly requires the inclusion of style/math.css
in the html document.
There is currently no specific required font for this output, it simply selects a serif
font family - change the @font-family
attribute in the .math-inline
class to select something specific.
All LaTeX commands and environments used in the output are coverved by
https://ctan.org/pkg/amsmath[`amsmath`] and amssymb
, with a few exceptions:
\color
\cancel
\mathscr
\twoheadrightarrowtail
The \color
command is supported by the
https://www.ctan.org/pkg/xcolor[`xcolor`] package, which is included in most
LaTeX distributions. The \cancel
command is supported by the
https://www.ctan.org/pkg/cancel[cancel] package, also included in most LaTeX
distributions. The other commands are supported by the
https://ctan.org/pkg/stix[`stix`] package.
. Fork it (https://github.com/pepijnve/asciimath/fork)
. Create your feature branch (git checkout -b my-new-feature
)
. Commit your changes (git commit -am 'Add some feature'
)
. Push to the branch (git push origin my-new-feature
)
. Create a new Pull Request
FAQs
Unknown package
We found that asciimath demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.