iosMathFork 1.0.3

iosMathFork 1.0.3

hl134711维护。



  • huanglu

iosMath

Build Status Version License Platform

iosMath 是一个用于在 iOS 和 MacOS 应用程序中显示美观渲染的数学公式的库。它使用类似 UILabel 的类来排版使用 LaTeX 编写的公式。它使用与 LaTeX 相同的排版规则,因此公式将按照 LaTeX 的渲染方式呈现。

它与网页上的 MathJaxKaTeX 类似,但适用于本机 iOS 或 MacOS 应用程序,无需使用 UIWebView 和 JavaScript。更重要的是,它的速度比使用 UIWebView 快得多。

示例

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

Quadratic Formula

Calculus

AM-GM

Ramanujan Identity

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

要求

iosMath 支持iOS 6+或 MacOS 10.8+,并需要 ARC 构建支持。它依赖于以下 Apple 框架:

  • Foundation.framework
  • CoreGraphics.framework
  • QuartzCore.framework
  • CoreText.framework

此外,对于 iOS 需要

  • UIKit.framework

此外,对于 MacOS 需要

  • AppKit.framework

安装

Cocoapods

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

  1. 在 Podfile 中添加 iosMath:pod 'iosMath'
  2. 执行 pod install 命令进行安装。

静态库

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

  1. 下载最新的代码版本 (见此处),或将存储库作为 git 子模块添加到您的 Git 跟踪项目。
  2. 在 Xcode 中打开您的项目,然后将 iosMath.xcodeproj 拖放到您的项目或工作区(使用“产品导航器视图”)。
  3. 选择您的目标并转到“构建阶段”选项卡。在“链接二进制与库”部分选择添加按钮。在表格中查找并添加 libIosMath.a。您可能还需要将 iosMath 添加到“目标依赖项”列表。
  4. MathFontBundle 添加到“复制捆绑资源”列表。
  5. 使用 #import <IosMath/IosMath.h> 将 IosMath 包括在任何需要其的页面。

使用方法

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

#import "MTMathUILabel.h"

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

MTMathUILabel 添加为您的 UIView 的子视图,即可渲染上述示例中的二次公式。

包含的功能

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

  • 简单代数方程
  • 分数和连分数
  • 指数和下标
  • 三角函数公式
  • 平方根和n次根
  • 微积分符号 - 极限、导数、积分
  • 大运算符(例如乘积、求和等)
  • 大括号(使用\left和\right)
  • 希腊字母
  • 组合数学(\binom, \choose等)
  • 几何符号(例如角、全等等)
  • 比例、比率、百分比
  • 数学间距
  • 上划线和下划线
  • 数学重音符号
  • 矩阵
  • 方程对齐
  • 更改粗体、罗马、花体和其他字体样式(\bf, \text, 等)
  • 最常用的数学符号
  • 颜色

示例

本项目包含一个示例应用程序,展示如何使用该应用程序以及您可以渲染的不同方程。要运行示例应用程序,首先将代码库克隆到本地,并运行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中使用。

内容间隔

MTMathUILabelcontentInsets,可以更精细地控制方程相对于视图的位置。

如果您需要设置它,可以像以下这样操作

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

如果给MTMathUILabel的LaTeX文本无效,或者其中包含目前不支持的操作,则将显示错误消息而不是标签。

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

label.displayErrorInline = NO;

未来增强功能

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

  • 支持显式的大括号(bigl, bigr等)
  • 增加缺失的plain TeX命令

相关项目

对于只想实现数学渲染之外的人来说,有两个相关项目

许可证

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

字体

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