Skip to content

gonzalezreal/swiftui-math

SwiftUIMath

Render LaTeX-style math expressions natively in SwiftUI.

SwiftUIMath provides a small, focused SwiftUI API for displaying mathematical expressions across Apple platforms.

Demo

Motivation

SwiftUIMath aims to make math expressions feel native in SwiftUI. It provides a small, focused API that renders math directly and integrates naturally with SwiftUI across Apple platforms.

Features

  • Native SwiftUI Math view
  • Inline and display math typesetting
  • Bundled, high-quality math fonts
  • Monochrome rendering (respects foregroundStyle)
  • Multicolor rendering (honors LaTeX color commands)
  • Vector-based, native rendering

Minimum requirements

You can use SwiftUIMath on the following platforms:

  • iOS 17+
  • macOS 14+
  • tvOS 17+
  • watchOS 10+
  • visionOS 1.0+

Getting started

The simplest way to render math is with the Math view:

Math("x^2 + y^2 = z^2")

By default, math is rendered in display style. You can control the typesetting style using a view modifier:

Math("\\int_0^1 x^2\\,dx = \\frac{1}{3}")
  .mathTypesettingStyle(.text)

Math("\\frac{1}{2} + \\sqrt{2}")
  .mathTypesettingStyle(.display)

Styling math

SwiftUIMath keeps styling explicit and predictable. There are three main knobs: font, typesetting style, and rendering mode.

Fonts

SwiftUIMath ships with a curated set of bundled math fonts, exposed via Math.Font.

Math("\\sum_{i=1}^{n} x_i")
  .mathFont(Math.Font(name: .latinModern, size: 24))

You can check Font.swift for the available bundled fonts.

Rendering mode

SwiftUIMath supports two rendering modes: monochrome (the default) and multicolor.

In monochrome mode, Math respects the surrounding SwiftUI foreground style.

Math("E = mc^2")
  .foregroundStyle(.blue)

This mode is ideal when math should blend naturally with surrounding text.

Multicolor mode honors LaTeX color commands such as \color and \textcolor. Currently, only hex colors (e.g. #RRGGBB) are supported.

Math("\\color{#cc0000}{a}+\\color{#00aa00}{b}+\\color{#0000cc}{c}")
  .mathRenderingMode(.multicolor)

In multicolor mode:

  • Explicit LaTeX colors are preserved
  • Uncolored glyphs use a base color (Color.primary by default)

Scope

SwiftUIMath focuses on rendering LaTeX math-mode expressions.

It is designed for displaying mathematical notation in SwiftUI views, not for typesetting full LaTeX documents or evaluating expressions. While it supports a wide range of common math constructs, not all LaTeX commands are implemented.

Installation

You can add SwiftUIMath to an Xcode project by adding it to your project as a package.

https://github.com/gonzalezreal/swiftui-math

If you want to use SwiftUIMath in a SwiftPM project, it's as simple as adding it to your Package.swift:

dependencies: [
  .package(url: "https://github.com/gonzalezreal/swiftui-math", from: "0.1.0")
]

And then adding the product to any target that needs access to the library:

.product(name: "SwiftUIMath", package: "swiftui-math"),

Acknowledgments

SwiftUIMath builds on prior work in native math rendering on Apple platforms:

  • iosMath laid the groundwork for native math layout and rendering.
  • SwiftMath, originally forked by this project, brought these ideas into the Swift ecosystem and inspired it.

This work would not be possible without these projects and their contributors.

License

This library is released under the MIT license. See LICENSE for details.

About

Native math expression rendering for SwiftUI

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors