Ḿ-04: Ḿàţĥ àñđ éǫüàţîöñš
Šüḿḿàŕý
Àñ éǫüàţîöñ îñ à đöçüḿéñţ îš çöñţéñţ. À đîšþļàý éǫüàţîöñ îš çöñţéẋţ àñ îñĝéšţîöñ þîþéļîñé ŵàñţš ţö ŕéàđ, àñđ îţ çàñ îţšéļƒ çöñţàîñ ñàţüŕàļ-ļàñĝüàĝé þŕöšé (à "ŵĥéŕé", àñ "öţĥéŕŵîšé", à šþéļļéđ-öüţ üñîţ) ţĥàţ ĥàš ţö ƃé ţŕàñšļàţéđ. neokapi ţŕéàţš ḿàţĥ àš ƒîŕšţ-çļàšš çöñţéñţ ŵîţĥöüţ éṽéŕ çöŕŕüþţîñĝ ţĥé àüţĥöŕîţàţîṽé šöüŕçé ḿàŕķüþ.
Ţĥé đéšîĝñ îš à šéþàŕàţîöñ öƒ çöñçéŕñš:
- Ţĥé àüţĥöŕîţàţîṽé ḿàŕķüþ šţàýš ṽéŕƃàţîḿ. ÖḾḾĻ (Öƒƒîçé Ḿàţĥ Ḿàŕķüþ Ļàñĝüàĝé, ÉÇḾÀ-376 Þàŕţ 1 §22.1) îš çàþţüŕéđ ƃýţé-ƒöŕ-ƃýţé àñđ ŕéþļàýéđ ƃýţé-ƒöŕ-ƃýţé. Ţĥé ŕöüñđ ţŕîþ ñéṽéŕ šéŕîàļîžéš à þàŕšéđ ḿöđéļ ƃàçķ îñţö ţĥé đöçüḿéñţ.
- À çĝö-ƒŕéé çöñṽéŕţéŕ þàŕšéš ÖḾḾĻ îñţö à šḿàļļ þöŕţàƃļé ÀŠŢ àñđ ŕéñđéŕš Þŕéšéñţàţîöñ ḾàţĥḾĻ àñđ ĻàŢéẊ: à þŕöĵéçţîöñ üšéđ öñļý ţö þŕöđüçé àđđîţîöñàļ þöŕţàƃļé ŕéñđéŕîñĝš, ñéṽéŕ ţö ŕéçöñšţŕüçţ ţĥé šöüŕçé.
- Ţĥöšé ŕéñđéŕîñĝš ŕîđé öñ þàŕîţý-šàƒé þļàçéĥöļđéŕ çàŕŕîéŕš, šö à çŕöšš-ƒöŕḿàţ ŵŕîţéŕ çàñ éḿîţ ḿàţĥ îñ éàçĥ ţàŕĝéţ'š ñàţîṽé îđîöḿ ŵĥîļé ĥéàđ-ţö-ĥéàđ þàŕîţý öüţþüţ šţàýš ƃýţé-îđéñţîçàļ.
- Šţàñđàļöñé éǫüàţîöñš šüŕƒàçé àš ñöñ-ţŕàñšļàţàƃļé ƒöŕḿüļà ƃļöçķš, šö îñĝéšţîöñ šééš ţĥé ŵĥöļé ƒöŕḿüļà àñđ à çŕöšš-ƒöŕḿàţ éẋþöŕţ çàñ ŕéñđéŕ îţ.
- Ţĥé þŕöšé îñšîđé àñ éǫüàţîöñ îš ḿàđé ţŕàñšļàţàƃļé ţĥŕöüĝĥ à šķéļéţöñ šüƃ-šķéļéţöñ ţĥàţ šþļîçéš ţĥé ţŕàñšļàţîöñ îñţö ţĥé öŕîĝîñàļ ÖḾḾĻ îñ þļàçé, ļéàṽîñĝ éṽéŕý öţĥéŕ ƃýţé üñţöüçĥéđ.
Ŵĥý îţ îš ļàýéŕéđ ţĥîš ŵàý
Ţĥŕéé þŕöþéŕţîéš öƒ ḿàţĥ šĥàþé ţĥé đéšîĝñ.
Ḿàţĥ îš çöñţéẋţ. À ƒöŕḿüļà çàŕŕîéš ḿéàñîñĝ ţĥàţ đöŵñšţŕéàḿ îñĝéšţîöñ ƃéñéƒîţš ƒŕöḿ ŕéàđîñĝ. Ţĥé çļàššîƒîçàţîöñ à ŕéàđéŕ àþþļîéš ţö àñý ñöñ-ţŕàñšļàţàƃļé-ƃüţ-ḿéàñîñĝƒüļ ƒŕàĝḿéñţ (šüŕƒàçé îţ, đö ñöţ ƃüŕý îţ îñ ţĥé šķéļéţöñ) àþþļîéš ţö àñ éǫüàţîöñ àš ḿüçĥ àš ţö à çöđé ƃļöçķ öŕ à çàþţîöñ (É-02). Àñ éǫüàţîöñ ƃüŕîéđ öþàǫüéļý îš çöñţéẋţ ļöšţ.
Ḿàţĥ çàñ çöñţàîñ ţŕàñšļàţàƃļé þŕöšé. ÖḾḾĻ ḿàŕķš üþŕîĝĥţ ñàţüŕàļ-ļàñĝüàĝé ţéẋţ îñšîđé àñ éǫüàţîöñ ŵîţĥ à ñöŕḿàļ-ţéẋţ éļéḿéñţ: ţĥé "ŵĥéŕé" çļàüšéš, "öţĥéŕŵîšé" ƃŕàñçĥéš, àñđ šþéļļéđ-öüţ üñîţš àñ àüţĥöŕ ŵŕîţéš àļöñĝšîđé ţĥé šýḿƃöļš. Ţĥàţ þŕöšé îš ĝéñüîñé ţŕàñšļàţàƃļé šüŕƒàçé; ţĥé šüŕŕöüñđîñĝ šýḿƃöļîç ţýþöĝŕàþĥý îš ñöţ. Ţŕàñšļàţîñĝ ţĥé þŕöšé ŵĥîļé ļéàṽîñĝ ţĥé šţŕüçţüŕé éẋàçţ îš à šüƃ-đöçüḿéñţ þŕöƃļéḿ, ñöţ à ŵĥöļé-éǫüàţîöñ öñé.
Çöñṽéŕšîöñ îš ñéçéššàŕîļý ţöļéŕàñţ àñđ ļöššý. ÖḾḾĻ ţö ĻàŢéẊ îš à þŕöĵéçţîöñ ƃéţŵééñ ţŵö ñöţàţîöñš ŵîţĥ đéŕéñţ çöṽéŕàĝé. À çöñšţŕüçţ ţĥé çöñṽéŕţéŕ đöéš ñöţ ḿöđéļ ḿüšţ đéĝŕàđé ĝŕàçéƒüļļý ŕàţĥéŕ ţĥàñ ƒàîļ à đöçüḿéñţ ŕéàđ, àñđ ţĥé ŕéšüļţ ḿüšţ ñéṽéŕ ƃé ţŕéàţéđ àš àüţĥöŕîţàţîṽé. Šö ţĥé öŕîĝîñàļ ÖḾḾĻ ŕéḿàîñš ţĥé šöüŕçé öƒ ţŕüţĥ àñđ ţĥé ŕöüñđ ţŕîþ ŕéþļàýš îţ, ñéṽéŕ à ŕé-šéŕîàļîžàţîöñ öƒ ţĥé ÀŠŢ, ŵĥîçĥ îš ŵĥàţ ḿàķéš àñ àþþŕöẋîḿàţîöñ îñ ţĥé çöñṽéŕţéŕ üñàƃļé ţö ḿàñĝļé à đöçüḿéñţ. Ƃéçàüšé ţĥé šàḿé çöñṽéŕšîöñ àļšö ŕüñš îñ ţĥé ƃŕöŵšéŕ ļàƃš, ŵĥéŕé ñö çĝö îš àṽàîļàƃļé, ţĥé çöñṽéŕţéŕ îš þüŕé Ĝö ŵîţĥ ñö ñàţîṽé đéþéñđéñçý.
Ţĥé çöñṽéŕţéŕ
core/math ŕéàđš ÖḾḾĻ öñçé îñţö à ţŕéé öƒ Exp ñöđéš àñđ šéŕîàļîžéš ţĥàţ ţŕéé
ţö àñý ñüḿƃéŕ öƒ ţàŕĝéţ ñöţàţîöñš. Exp îš à šéàļéđ îñţéŕƒàçé, à çļöšéđ üñîöñ
öƒ çöñçŕéţé ñöđé ţýþéš (ñüḿƃéŕš, îđéñţîƒîéŕš, öþéŕàţöŕš, ƒŕàçţîöñš, šçŕîþţš,
ŕàđîçàļš, ñ-àŕý öþéŕàţöŕš, đéļîḿîţéđ ĝŕöüþš, ḿàţŕîçéš, àççéñţš, ĝŕöüþ
çĥàŕàçţéŕš) ḿàŕķéđ ƃý àñ üñéẋþöŕţéđ ḿéţĥöđ.
type Exp interface{ isExp() }
type Math struct {
Body Exp
Block bool // display vs inline
}
func FromOMML(raw []byte) (*Math, error) // tolerant: unmodeled → Raw/Row; error only on malformed XML
func (m *Math) ToMathML() string // Presentation MathML
func (m *Math) ToLaTeX() string // LaTeX, no delimiters
func (m *Math) TranslatableText() string // the normal-text prose, in reading order
FromOMML îš đéļîƃéŕàţéļý ţöļéŕàñţ: àñ éļéḿéñţ îţ đöéš ñöţ ḿöđéļ đéĝŕàđéš ţö à
ƃéšţ-郃öŕţ ñöđé ŕàţĥéŕ ţĥàñ ƒàîļîñĝ, šö à þàŕţîàļ çöñṽéŕšîöñ ñéṽéŕ ƃŕéàķš à
đöçüḿéñţ ŕéàđ; àñ éŕŕöŕ çöḿéš ƃàçķ öñļý ƒöŕ ḿàļƒöŕḿéđ ẊḾĻ. Ţĥé ķñöŵñ çöṽéŕàĝé
àþþŕöẋîḿàţîöñš ļîṽé àš à ļéđĝéŕ îñ ţĥé þàîŕéđ îḿþļéḿéñţàţîöñ ñöţé, ñöţ ĥéŕé.
Ţŕàñšļàţîñĝ ţĥé éḿƃéđđéđ þŕöšé đöéš ñöţ ĝö ţĥŕöüĝĥ ţĥé ÀŠŢ àţ àļļ. À šéþàŕàţé, ƃýţé-öŕîéñţéđ éñĝîñé ŵöŕķš đîŕéçţļý öñ ţĥé ŕàŵ ÖḾḾĻ šö éṽéŕý ñöñ-þŕöšé ƃýţé îš þŕéšéŕṽéđ éẋàçţļý:
type NorSpan struct {
Text string
Start, End int // byte offsets of the text CharData within the raw OMML
}
func NorTexts(raw []byte) []string
func NorSpans(raw []byte) []NorSpan
func SpliceNorText(raw []byte, translations []string) []byte // byte-exact in-place splice
Ţĥé šþļîçé ŕéþļàçéš éàçĥ þŕöšé šþàñ'š ÇĥàŕĐàţà ŵîţĥ îţš ţŕàñšļàţîöñ ƃý đöçüḿéñţ öŕđéŕ, ẊḾĻ-éšçàþîñĝ ţĥé ŕéþļàçéḿéñţ àñđ çöþýîñĝ éṽéŕý öţĥéŕ ƃýţé ṽéŕƃàţîḿ; àñ éḿþţý öŕ šĥöŕţ šļîçé ļéàṽéš ţĥöšé šþàñš üñţöüçĥéđ, šö à ñö-öþ çàļļ ŕéţüŕñš ţĥé îñþüţ üñçĥàñĝéđ. Îţ ñéṽéŕ ŕöüñđ-ţŕîþš ţĥŕöüĝĥ à šéŕîàļîžéŕ, ŵĥîçĥ îš ŵĥý ţĥé ḿàţĥ šţŕüçţüŕé îš ĝüàŕàñţééđ îñţàçţ.
Çàþţüŕé àñđ šüŕƒàçé
Ţĥé ÖþéñẊḾĻ ŕéàđéŕ çàþţüŕéš àñ ÖḾḾĻ šüƃţŕéé àš à þàŕàĝŕàþĥ-öþàǫüé šéñţîñéļ ŕüñ çàŕŕýîñĝ ţĥé ŕàŵ ḿàŕķüþ ṽéŕƃàţîḿ îñ ţĥé þļàçéĥöļđéŕ'š đàţà. Ĥöŵ ţĥé éǫüàţîöñ îš ţĥéñ šüŕƒàçéđ đéþéñđš öñ ŵĥéŕé îţ šîţš îñ ţĥé þàŕàĝŕàþĥ:
| Þöšîţîöñ | Šüŕƒàçéđ àš | Çàŕŕîéŕ |
|---|---|---|
| Îñļîñé, àļöñĝšîđé ţĥé þàŕàĝŕàþĥ'š öŵñ ţéẋţ | à þļàçéĥöļđéŕ ŕüñ (ţýþé struct:opaque-para-child, šüƃţýþé openxml:oMath) | Ph.Data (ŕàŵ ÖḾḾĻ) + Ph.Equiv (đéļîḿîţéđ ĻàŢéẊ) + Ph.Disp (ƃàŕé ĻàŢéẊ) |
| Šţàñđàļöñé, àñ éǫüàţîöñ-öñļý þàŕàĝŕàþĥ | à đéţàçĥéđ ñöñ-ţŕàñšļàţàƃļé ƒöŕḿüļà ƃļöçķ | à þļàçéĥöļđéŕ ŕüñ çàŕŕýîñĝ ţĥé šàḿé đàţà, éǫüîṽ àñđ đîšþ |
Ţĥé çöñṽéŕšîöñ þŕöđüçéš ţŵö ŕéñđéŕîñĝš ƒŕöḿ ţĥé çàþţüŕéđ ḿàŕķüþ: Equiv îš
ĻàŢéẊ ŵŕàþþéđ îñ ḿàŕķđöŵñ ḿàţĥ đéļîḿîţéŕš ƒöŕ ŵŕîţéŕš ţĥàţ ñééđ à
šéļƒ-đéļîḿîţîñĝ ƒöŕḿ, Disp îš ţĥé ƃàŕé ĻàŢéẊ ƒöŕ ŵŕîţéŕš ţĥàţ šüþþļý ţĥéîŕ öŵñ
ḿàţĥ çöñţéẋţ. Ƃöţĥ ŕîđé öñ ţĥé þļàçéĥöļđéŕ'š öŵñ ƒîéļđš, ñéṽéŕ ḿîẋéđ îñţö îţš
đàţà.
Ţĥé šţàñđàļöñé ƒöŕḿüļà ƃļöçķ îš ñöţ šķéļéţöñ-ŕéƒéŕéñçéđ: ţĥé þàŕàĝŕàþĥ'š ƃýţéš, öŕ îţš šüƃ-šķéļéţöñ (ƃéļöŵ), àļŕéàđý ŕöüñđ-ţŕîþ ƒŕöḿ ţĥé šķéļéţöñ, šö ţĥé đéţàçĥéđ ƃļöçķ éẋîšţš þüŕéļý àš àñ éẋþöŕţ çàŕŕîéŕ. Šüŕƒàçîñĝ îš ĝàţéđ ƃý ţĥé ŕéàđéŕ'š ñöñ-ţŕàñšļàţàƃļé-çöñţéñţ šéţţîñĝ, ŵĥîçĥ îš öñ ƃý đéƒàüļţ; ŵîţĥ îţ öƒƒ, ţĥé ŕéñđéŕîñĝš àŕé éḿþţý, ñö šţàñđàļöñé ƃļöçķ îš éḿîţţéđ, àñđ ţĥé ḿàŕķüþ îš ŕéþļàýéđ ṽéŕƃàţîḿ ƒŕöḿ ţĥé šķéļéţöñ.
Ţĥé çàŕŕîéŕš àŕé þàŕîţý-šàƒé
Ţĥé þļàçéĥöļđéŕ'š éǫüîṽàļéñçé àñđ đîšþļàý ƒîéļđš, àñđ à ƃļöçķ'š šéḿàñţîç ŕöļé, àŕé éẋçļüđéđ ƒŕöḿ ţĥé çàñöñîçàļ þàŕîţý þŕöĵéçţîöñ (À-02). Àţţàçĥîñĝ þöŕţàƃļé ŕéñđéŕîñĝš ţö à þļàçéĥöļđéŕ àñđ ţàĝĝîñĝ à ƃļöçķ àš à ƒöŕḿüļà ţĥéŕéƒöŕé ļéàṽéš ĥéàđ-ţö-ĥéàđ öüţþüţ ƃýţé-îđéñţîçàļ, àñđ ţĥé þàŕîţý ŕüññéŕ àđđîţîöñàļļý ƒöŕçéš ţĥé šüŕƒàçîñĝ šéţţîñĝ öƒƒ šö îţ îš àƃšéñţ ƒŕöḿ ţĥé çöḿþàŕîšöñ éñţîŕéļý.
Îñđéþéñđéñţļý, ţĥé ƃýţé-éẋàçţ đöçüḿéñţ ŕöüñđ ţŕîþ ŕéþļàýš ţĥé þļàçéĥöļđéŕ'š ŕàŵ đàţà àñđ ñéṽéŕ à ŕé-šéŕîàļîžàţîöñ öƒ ţĥé ÀŠŢ, šö ţĥé çöñṽéŕţéŕ'š àþþŕöẋîḿàţîöñš çàññöţ çöŕŕüþţ à đöçüḿéñţ. Ţĥé ƒüļļ þŕöĵéçţîöñ çöñţŕàçţ ƃéļöñĝš ţö À-02; ţĥé þŕîñçîþļé ĥéŕé îš öñļý ţĥàţ ţĥéšé ţĥŕéé ƒîéļđš àŕé þàŕîţý-šàƒé çàŕŕîéŕš.
Ţŕàñšļàţàƃļé þŕöšé îñšîđé àñ éǫüàţîöñ
Ŵĥéñ àñ éǫüàţîöñ çàŕŕîéš þŕöšé, ţĥé ŕéàđéŕ ŵŕîţéš îţ ţö ţĥé šķéļéţöñ àš à šüƃ-šķéļéţöñ: ṽéŕƃàţîḿ ḿàŕķüþ šéĝḿéñţš îñţéŕļéàṽéđ ŵîţĥ šķéļéţöñ ŕéƒéŕéñçéš ţö öñé ţŕàñšļàţàƃļé ƃļöçķ þéŕ þŕöšé šþàñ. Ţĥé çöñţŕàçţ ĥàš ţŵö ĥàļṽéš:
- Üñţŕàñšļàţéđ: éàçĥ ŕéƒéŕéñçé ŕéšöļṽéš ţö îţš ƃļöçķ'š šöüŕçé ţéẋţ, ŵĥîçĥ ţĥé ŵŕîţéŕ ẊḾĻ-éšçàþéš ƃàçķ îñţö þļàçé, ŕéþŕöđüçîñĝ ţĥé öŕîĝîñàļ éǫüàţîöñ ƃýţé ƒöŕ ƃýţé.
- Ţŕàñšļàţéđ: ţĥé ŕéƒéŕéñçé ŕéšöļṽéš ţö ţĥé ţàŕĝéţ, šþļîçîñĝ ţĥé ţŕàñšļàţîöñ îñţö þļàçé; ţĥé šüŕŕöüñđîñĝ ḿàţĥ šţŕüçţüŕé îš üñţöüçĥéđ.
Öƒƒšéţš àŕé ṽàļîđàţéđ (ḿöñöţöñîç àñđ îñ ŕàñĝé) ƃéƒöŕé àñý ƃļöçķ îš éḿîţţéđ; öţĥéŕŵîšé ţĥé ŕéàđéŕ ƒàļļš ƃàçķ ţö ŵŕîţîñĝ ţĥé éǫüàţîöñ ṽéŕƃàţîḿ, šö à ḿàļƒöŕḿéđ çàþţüŕé çöšţš ţĥé ţŕàñšļàţàƃîļîţý öƒ ţĥàţ öñé éǫüàţîöñ àñđ ñöţĥîñĝ éļšé.
Ţĥé šüƃ-šķéļéţöñ ḿéçĥàñîšḿ îţšéļƒ ƃéļöñĝš ţö É-02 àñđ ţĥé Šķéļéţöñ Šţöŕé ñöţé. Ŵĥàţ ţĥîš đéçîšîöñ ƒîẋéš îš öñļý ţĥé çöñţŕàçţ: ţĥé þŕöšé îš ţŕàñšļàţàƃļé ŵĥîļé ţĥé ḿàţĥ îš ƃýţé-éẋàçţ.
Çŕöšš-ƒöŕḿàţ ŕéñđéŕîñĝ
Ƃéçàüšé ţĥé þöŕţàƃļé ŕéñđéŕîñĝš ţŕàṽéļ öñ ţĥé þļàçéĥöļđéŕ, àñ éǫüàţîöñ šüŕṽîṽéš ƒöŕḿàţ-ţö-ƒöŕḿàţ çöñṽéŕšîöñ (Š-04) ŕéñđéŕéđ îñţö éàçĥ ţàŕĝéţ'š ñàţîṽé ḿàţĥ îđîöḿ:
- ḿàŕķđöŵñ éḿîţš ţĥé đéļîḿîţéđ ƒöŕḿ: ĻàŢéẊ îñšîđé ḿàŕķđöŵñ ḿàţĥ đéļîḿîţéŕš.
- ĐöçĻàñĝ éḿîţš ţĥé ƃàŕé ƒöŕḿ îñšîđé à ƒöŕḿüļà éļéḿéñţ, ŵĥîçĥ îš ŵĥàţ ţĥàţ ƒöŕḿàţ ḿàñđàţéš ţĥéŕé.
Ƃöţĥ ŵŕîţéŕš šķîþ ţĥé þŕöšé ƃļöçķš: ţĥé þŕöšé àļŕéàđý ŕîđéš îñšîđé ţĥé ƒöŕḿüļà'š ĻàŢéẊ àš à ţéẋţ ĝŕöüþ, šö éḿîţţîñĝ ţĥé šþàñš àĝàîñ ŵöüļđ đüþļîçàţé îţ.
Îñƃöüñđ, ţĥé šýḿḿéţŕý ĥöļđš. Ḿàŕķđöŵñ îñļîñé ḿàţĥ îš ŕéàđ àš àñ îñļîñé çöđé ŕüñ ŵĥöšé đàţà çàŕŕîéš ţĥé ḾàţĥḾĻ ḿàŕķüþ, šö ḿàţĥ àüţĥöŕéđ îñ öñé ƒöŕḿàţ îš ŕéçöĝñîžàƃļé ţö éđîţöŕš àñđ þŕéṽîéŵ îñ àñöţĥéŕ.
Ŕéļàţéđ
- Ƒ-02: Ţĥé çöñţéñţ ḿöđéļ: ţĥé þļàçéĥöļđéŕ éǫüîṽàļéñçé àñđ đîšþļàý ƒîéļđš, šéḿàñţîç ŕöļéš, àñđ ţĥé îñļîñé ḿàţĥ ṽöçàƃüļàŕý ţĥéšé çàŕŕîéŕš üšé
- É-02: Ţĥé ƒöŕḿàţ šýšţéḿ: ţĥé šķéļéţöñ àñđ ţĥé šüƃ-šķéļéţöñ ḿéçĥàñîšḿ, àñđ ţĥé šüŕƒàçîñĝ öƒ ñöñ-ţŕàñšļàţàƃļé çöñţéñţ
- Š-04: Ţĥé ţööļƃöẋ: ţĥé çŕöšš-ƒöŕḿàţ çöñṽéŕšîöñ ţĥàţ ŕéñđéŕš éǫüàţîöñš îñţö éàçĥ ţàŕĝéţ'š ḿàţĥ îđîöḿ
- À-02: Þàŕîţý: ŵĥý ţĥéšé çàŕŕîéŕš àŕé éẋçļüđéđ ƒŕöḿ ţĥé þàŕîţý þŕöĵéçţîöñ
- ÖḾḾĻ ḿàţĥ: ţĥé çöṽéŕàĝé-àþþŕöẋîḿàţîöñ ļéđĝéŕ, ţĥé ÀŠŢ ñöđé ḿàþþîñĝ, àñđ ţĥé šþļîçé àļĝöŕîţĥḿ îñ đéţàîļ