DOCX
公式与符号
使用 Math API 编写数学公式,以及为东亚文字添加拼音标注
数学公式
Math API 允许使用 OOXML 的 Office 数学标记语言(OMML)构建数学公式。
基本公式
import { Paragraph, Math: MathAPI, MathRun, MathFraction } from "@office-open/docx";
new Paragraph({
children: [
new MathAPI({
children: [
new MathFraction({
numerator: "a",
denominator: "b",
}),
],
}),
],
});
复杂公式
import {
Paragraph, Math: MathAPI, MathFraction, MathSubScript, MathSuperScript,
} from "@office-open/docx";
new Paragraph({
children: [
new MathAPI({
children: [
// x = (a + b) / c
new MathRun("x"),
new MathRun("="),
new MathFraction({
numerator: "a + b",
denominator: "c",
}),
],
}),
],
});
数学组件
| 组件 | 说明 |
|---|---|
Math | 根公式容器 |
MathRun | 公式中的文本 |
MathFraction | 分数(分子/分母) |
MathSubScript | 下标表示法 |
MathSuperScript | 上标表示法 |
MathRadical | 平方根和 n 次根 |
MathNary | 求和、积分、乘积 |
MathAccent | 重音符号(帽子、横线、波浪号等) |
MathEqArr | 公式数组(对齐的公式) |
MathBorderBox | 表达式边框框 |
MathBox | 带运算符模拟的框 |
MathGroupChr | 组字符(大括号、方括号) |
MathPhant | 占位符(不可见占位) |
MathBorderBox
在表达式周围绘制边框,可配置边框和删除线:
import { MathBorderBox } from "@office-open/docx";
new MathBorderBox({
children: [new MathRun("a")],
});
// 隐藏上边框和下边框
new MathBorderBox({
children: [new MathRun("b")],
properties: {
hideTop: true,
hideBottom: true,
},
});
BorderBox 属性
| 属性 | 类型 | 说明 |
|---|---|---|
hideTop | boolean | 隐藏上边框 |
hideBottom | boolean | 隐藏下边框 |
hideLeft | boolean | 隐藏左边框 |
hideRight | boolean | 隐藏右边框 |
strikeHorizontal | boolean | 水平删除线 |
strikeVertical | boolean | 垂直删除线 |
strikeDiagonalUp | boolean | 从左下到右上的对角线 |
strikeDiagonalDown | boolean | 从左上到右下的对角线 |
MathBox
将内容包裹在框中,可选择模拟运算符行为:
import { MathBox } from "@office-open/docx";
new MathBox({
children: [new MathRun("x + y")],
properties: { opEmu: true },
});
MathGroupChr
在内容上方或下方添加分组字符(大括号、方括号等):
import { MathGroupChr } from "@office-open/docx";
new MathGroupChr({
children: [
new MathEqArr({
rows: [[new MathRun("a")], [new MathRun("b")]],
}),
],
properties: {
chr: "{", // 分组字符
pos: "bot", // 位置:"top" 或 "bot"
vertJc: "top", // 垂直对齐
},
});
MathPhantom
创建用于间距控制的不可见占位符:
import { MathPhant } from "@office-open/docx";
new MathPhant({
children: [new MathRun("dy")],
properties: {
zeroAsc: true, // 零上升
zeroDesc: true, // 零下降
},
});
拼音标注
拼音标注为东亚文字提供发音指南(假名、拼音等):
import { Paragraph, createRuby } from "@office-open/docx";
new Paragraph({
children: [
createRuby({
base: "漢字", // 基础文本
text: "かんじ", // 拼音(注音)文本
}),
createRuby({
base: "汉字",
text: "hànzì",
language: "zh-CN", // 语言标识符
}),
],
});
拼音标注选项
| 属性 | 类型 | 说明 |
|---|---|---|
base | string | 要标注的基础文本 |
text | string | 拼音标注文本 |
alignment | "left" | "center" | "right" | 对齐方式(默认:"center") |
rubyFontSize | number | 字号(半点为单位) |
offset | number | 垂直偏移量(半点为单位) |
language | string | 语言标识符(如 "ja-JP") |