Render LaTeX-style math expressions natively in SwiftUI.
SwiftUIMath provides a small, focused SwiftUI API for displaying mathematical expressions across Apple platforms.
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.
- Native SwiftUI
Mathview - Inline and display math typesetting
- Bundled, high-quality math fonts
- Monochrome rendering (respects
foregroundStyle) - Multicolor rendering (honors LaTeX color commands)
- Vector-based, native rendering
You can use SwiftUIMath on the following platforms:
- iOS 17+
- macOS 14+
- tvOS 17+
- watchOS 10+
- visionOS 1.0+
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)SwiftUIMath keeps styling explicit and predictable. There are three main knobs: font, typesetting style, and rendering mode.
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.
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.primaryby default)
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.
You can add SwiftUIMath to an Xcode project by adding it to your project as a package.
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"),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.
This library is released under the MIT license. See LICENSE for details.