iosMath
是一个用于在 iOS 和 MacOS 应用程序中显示精美渲染的数学公式的库。它使用 LaTeX 排版公式,并在类似于 UILabel
的类中显示。它使用与 LaTeX 相同的排版规则,因此公式的渲染效果与 LaTeX 完全相同。
它类似于网页上的 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 文件。
此发行版包含以下字体。 这些字体的许可如下: