iosMath
是一个用于在 iOS 和 MacOS 应用程序中显示精美渲染的数学公式的库。它使用 LaTeX 排版规则,在一个 UILabel
等效类中排版用 LaTeX 编写的公式。因此,公式的渲染效果与 LaTeX 的渲染效果完全一致。
它类似于 Web 端的 MathJax 或 KaTeX,但适用于原生 iOS 或 MacOS 应用程序,无需使用 UIWebView
和 Javascript。更重要的是,它比使用 UIWebView
速度更快。
以下是一些您可以使用此库渲染的公式的屏幕截图
EXAMPLES.md 文件包含更多示例。
iosMath
在 iOS 6+ 或 MacOS 10.8+ 上运行,并且需要 ARC 才能构建。它依赖于以下 Apple 框架
此外,对于 iOS,它还需要
此外,对于 MacOS,它还需要
iosMath 可通过 CocoaPods 获取。要安装它
pod 'iosMath'
。pod install
安装 pod。您也可以将 iosMath 作为静态库添加到您的项目或工作区。
iosMath.xcodeproj
拖放到您的项目或工作区(使用“Product Navigator view”)。libIosMath.a
。您可能还需要将 iosMath
添加到 Target Dependencies 列表。MathFontBundle
添加到 Copy Bundle Resources
列表中。#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 文件。
此发行版包含以下字体。这些字体的许可如下