iosMath

Build Status Version License Platform

iosMath 是一个用于在 iOS 和 MacOS 应用程序中显示精美渲染的数学公式的库。它使用 LaTeX 排版规则,在一个 UILabel 等效类中排版用 LaTeX 编写的公式。因此,公式的渲染效果与 LaTeX 的渲染效果完全一致。

它类似于 Web 端的 MathJaxKaTeX,但适用于原生 iOS 或 MacOS 应用程序,无需使用 UIWebView 和 Javascript。更重要的是,它比使用 UIWebView 速度更快。

示例

以下是一些您可以使用此库渲染的公式的屏幕截图

Quadratic Formula

Calculus

AM-GM

Ramanujan Identity

EXAMPLES.md 文件包含更多示例。

要求

iosMath 在 iOS 6+ 或 MacOS 10.8+ 上运行,并且需要 ARC 才能构建。它依赖于以下 Apple 框架

此外,对于 iOS,它还需要

此外,对于 MacOS,它还需要

安装

Cocoapods

iosMath 可通过 CocoaPods 获取。要安装它

  1. 在您的 Podfile 中为 iosMath 添加一个条目:pod 'iosMath'
  2. 运行 pod install 安装 pod。

静态库

您也可以将 iosMath 作为静态库添加到您的项目或工作区。

  1. 下载最新代码版本或将存储库添加为 git 子模块到您的 git 跟踪项目。
  2. 在 Xcode 中打开您的项目,然后将 iosMath.xcodeproj 拖放到您的项目或工作区(使用“Product Navigator view”)。
  3. 选择您的 target,然后转到 Build phases 选项卡。在 Link Binary With Libraries 部分,选择添加按钮。在弹出的面板中找到并添加 libIosMath.a。您可能还需要将 iosMath 添加到 Target Dependencies 列表。
  4. MathFontBundle 添加到 Copy Bundle Resources 列表中。
  5. 在您需要使用它的任何地方包含 IosMath,使用 #import <IosMath/IosMath.h>

用法

该库提供了一个类 MTMathUILabel,它是一个支持渲染数学公式的 UIView。要显示公式,只需按如下方式创建一个 MTMathUILabel

#import "MTMathUILabel.h"

MTMathUILabel* label = [[MTMathUILabel alloc] init];
label.latex = @"x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}";

MTMathUILabel 作为子视图添加到您的 UIView 将渲染上面显示的二次方程示例。

包含的功能

以下是该库当前支持的公式类型列表

示例

此项目中包含一个示例应用程序,展示了如何使用该应用程序以及您可以渲染的不同公式。要运行示例应用程序,请克隆存储库,并首先运行 pod install。然后在 iOS 上运行 iosMathExample 应用程序。对于 MacOS,运行 MacOSMath 应用程序。

高级配置

MTMathUILabel 支持一些高级配置选项

数学模式

您可以更改 MTMathUILabel 的模式,在显示模式(等同于 LaTeX 中的 $$\[)和文本模式(等同于 LaTeX 中的 $\()之间切换。默认样式为显示模式。要切换到文本模式,只需

label.labelMode = kMTMathUILabelModeText;
文本对齐

公式的默认对齐方式为左对齐。可以按如下方式更改为居中或右对齐

label.textAlignment = kMTTextAlignmentCenter;
字体大小

默认字体大小为 20pt。您可以按如下方式更改它

label.fontSize = 30;
字体

默认字体是Latin Modern Math。可以更改为

label.font = [[MTFontManager fontManager] termesFontWithSize:20];

此项目捆绑了 3 种字体,但您可以使用任何 OTF 数学字体。

颜色

渲染公式的默认颜色为黑色。您可以按如下方式将其更改为任何其他颜色

label.textColor = [UIColor redColor];

也可以为公式的不同部分设置不同的颜色。只需访问 displayList 字段,并在您想要更改颜色的底层显示对象上设置 textColor

自定义命令

您可以定义您自己的命令,这些命令不是预定义的。这类似于 LaTeX 中的宏。要定义您自己的命令,请使用

[MTMathAtomFactory addLatexSymbol:@"lcm"
                            value:[MTMathAtomFactory operatorWithName:@"lcm" limits:NO]];

这将创建一个 \lcm 命令,该命令可以在 LaTeX 中使用。

内容插距

MTMathUILabel 具有 contentInsets,可以更精细地控制公式相对于视图的位置。

如果您需要设置它,您可以这样做

label.contentInsets = UIEdgeInsetsMake(0, 10, 0, 20);
错误处理

如果提供给 MTMathUILabel 的 LaTeX 文本无效,或者如果它包含当前不支持的命令,则将显示错误消息而不是标签。

此错误可以以编程方式检索为 label.error。如果您不想显示任何内容,请设置

label.displayErrorInline = NO;

未来增强功能

请注意,这不是 LaTeX 数学模式的完整实现。还有一些重要的部分缺失,将在未来的更新中包含进来。这包括

相关项目

对于寻找不仅仅是渲染数学公式的人来说,这里有两个相关项目

许可证

iosMath 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。

字体

此发行版包含以下字体。这些字体的许可如下