iosMath
是一个用于在 iOS 和 MacOS 应用程序中显示美观渲染的数学公式的库。它使用类似于 UILabel
的等效类来排版使用 LaTeX 编写的公式。它使用与 LaTeX 相同的排版规则,因此公式将按照 LaTeX 的渲染方式渲染。
它与 MathJax 或 KaTeX(用于网页)类似,但对于原生 iOS 或 MacOS 应用程序,无需使用 UIWebView
和 Javascript。更重要的是,它的速度比使用 UIWebView
快得多。
以下是您可以使用此库渲染的一些公式的屏幕截图
EXAMPLES.md 文件包含更多示例。
iosMath
在 iOS 6+ 或 MacOS 10.8+ 上正常工作,并需要 ARC 来构建。它依赖于以下 Apple 框架
此外,对于 iOS,它还需要
此外,对于 MacOS,它还需要
您还可以将 iosMath 添加为静态库到项目或工作区中。
iosMath.xcodeproj
拖放到您的项目或工作区(使用“产品导航器视图”)。libIosMath.a
。您可能还需要将 iosMath
添加到“目标依赖项”列表中。MathFontBundle
添加到“复制打包资源”列表中。#import <IosMath/IosMath.h>
在需要的地方包含 IosMath。该库提供了一个类 MTMathUILabel
,它是一个支持渲染数学公式的 UIView
。要显示一个公式,只需创建一个如下所示的 MTMathUILabel
#import "MTMathUILabel.h"
MTMathULabel* label = [[MTMathUILabel alloc] init];
label.latex = @"x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}";
将 MTMathUILabel
作为您 UIView
的子视图添加,渲染如上所示的二次公式示例。
这是当前库支持的公式类型的列表
本项目包含一个示例应用程序,展示了如何使用应用程序以及可以渲染的不同方程。要运行示例应用程序,请克隆存储库,并先运行 pod install
命令。然后在 iOS 上运行 iosMathExample 应用程序。在 MacOS 上运行 MacOSMath 应用程序。
MTMathUILabel
支持一些高级配置选项
您可以在显示模式(相当于 LaTeX 中的 $$
或 \[
)和文本模式(相当于 LaTeX 中的 $
或 \(
)之间切换 MTMathUILabel
的模式。默认样式是显示。要切换到文本模式,只需
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许可协议下获得。有关更多信息,请参阅许可协议文件。
此发行版包含以下字体。以下字体的许可协议如下: