UnicodeMath数学公式编码_翻译(Unicode Nearly Plain - Text Encoding of Mathematics Version 3)
目錄
- 完整目錄
- 1. 簡介
- 2. 編碼簡單數(shù)學(xué)表達式
- 2.1 分數(shù)
- 2.2 上標和下標
- 2.3 空白(空格)字符使用
- 3. 編碼其他數(shù)學(xué)表達式
- 3.1 分隔符
強烈推薦本文簡明版UnicodeMath編碼教程
本文為UnicodeMath官方文檔的翻譯,原文看這。翻譯如有不準還請諒解!
由于我個人只想學(xué)習(xí)在word中使用UnicodeMath,故可能不會翻譯整個文檔。
word插入公式不自動斜體的解決辦法
微軟官網(wǎng)Word 中使用 UnicodeMath 和 LaTeX 的線性格式公式
本文持續(xù)更新。
完整目錄
1. 簡介
讓計算機理解人類語言對于提高計算機的實用性非常重要。自然語言翻譯,語音識別和生成以及編程是這種機器理解發(fā)揮作用的典型方式。這種理解越好,計算機就越有用,因此自20世紀60年代初以來,目前在這些領(lǐng)域投入了大量精力。具有諷刺意味的是,在這方面往往被忽視的一種真正的國際人類語言是數(shù)學(xué)本身。
通過一些約定, Unicode(The Unicode Standard, Version 5.0, (Reading, MA, Addison-Wesley, 2006. ISBN 0-321-18578-1) or online as http://www.unicode.org/versions/Unicode5.0.0/) 可以在可讀的近乎純文本中編碼許多數(shù)學(xué)表達式。從技術(shù)上講,這種格式是“輕微標記的格式”;因此使用“近乎”。格式是線性的,但可以以組合的演示形式顯示。為了區(qū)分本文中的兩種格式,我們將近純文本格式稱為 線性格式 ,將構(gòu)建的表示格式稱為 構(gòu)建格式。此線性格式可與基于Unicode數(shù)學(xué)屬性的啟發(fā)式一起使用,以在不借助顯式數(shù)學(xué)開/關(guān)命令的情況下識別數(shù)學(xué)表達式。 Unicode的強大促進了對這種數(shù)學(xué)符號的認可?;蛘?#xff0c;線性格式可以在用戶明確控制的“數(shù)學(xué)區(qū)域”中使用,或者使用TeX中使用的開關(guān)字符,或者使用富文本環(huán)境中的字符格式屬性。使用數(shù)學(xué)區(qū)域是可取的,因為識別啟發(fā)式不是絕對可靠的。
線性格式比[La]TeX或MathML更緊湊、易讀。然而,與這些格式不同,它并不試圖包括所有的印刷裝飾。相反,我們認為處理更高級別層中的一些裝飾是有用的,這些裝置處理文本和背景顏色,字體大小,腳注,注釋,超鏈接等豐富的文本屬性。原則上,可以擴展符號以包含屬性更高級別的層,但代價是降低了可讀性。因此,嵌入在富文本環(huán)境中,線性格式可以忠實地表示豐富的數(shù)學(xué)文本,而嵌入在純文本環(huán)境中,它缺乏大多數(shù)富文本屬性和一些數(shù)學(xué)印刷屬性。線性格式主要與表示有關(guān),但它有一些似乎只是面向內(nèi)容的語義特征,例如, n-aryands和函數(shù)應(yīng)用參數(shù)(見Secs 3.4 和 3.5)。這些已被包括在內(nèi)以幫助顯示具有適當排版的組合功能,但它們也有助于與數(shù)學(xué)導(dǎo)向程序進行互操作。
大多數(shù)數(shù)學(xué)表達式可以用線性格式明確表示,從中可以將它們導(dǎo)出到[La]TeX,MathML,C++和符號操作程序。線性格式借用了TeX的符號,表示數(shù)學(xué)對象不能很好地用于數(shù)學(xué)線性表示法,例如矩陣。
多種語法選擇可用于線性格式。本文中的選擇偏好了許多標準:數(shù)學(xué)公式的有效輸入,支持高質(zhì)量數(shù)學(xué)排版的充分通用性,至少在富文本環(huán)境中顯示優(yōu)雅數(shù)學(xué)文本的能力,以及類似于真正的數(shù)學(xué)符號的格式。顯然,必須在這些目標之間做出妥協(xié)。
線性格式用于:
對于數(shù)學(xué)感知程序之間的數(shù)學(xué)表達式的更一般存儲和交換,優(yōu)選MathML和其他更高級語言。
第2節(jié) 介紹線性格式中的 分數(shù)、下標和上標,并討論如何使用ASCII space U+0020 構(gòu)建數(shù)學(xué)表達式。
第3節(jié) 總結(jié)了其他結(jié)構(gòu)的用法及其相對優(yōu)先級,這些優(yōu)先級用于簡化表示法。
第4節(jié) 討論了輸入法。
第5節(jié) 給出了識別嵌入普通文本中的數(shù)學(xué)表達式的方法。
第6節(jié) 解釋了Unicode純文本如何在編程語言中起作用。
第7節(jié) 給出了總結(jié)。
附錄提供了簡化的 線性格式語法 和部分 運算符 列表。
2. 編碼簡單數(shù)學(xué)表達式
Unicode比ASCII有對數(shù)學(xué)更強的支持,那么Unicode近純文本數(shù)學(xué)編碼長什么樣?最著名的ASCII數(shù)學(xué)表達式編碼是TeX的編碼,因此我們將其用于比較。 MathML比TeX更冗長,一些比較也適用于它。
盡管TeX在科學(xué)和工程領(lǐng)域取得了巨大的成功,但瀏覽其編碼時,它們看起來并不像它們所代表的式子。使用TeX的符號直接手工進行代數(shù)計算并不容易。使用Unicode,人們可以更容易地表示數(shù)學(xué)表達式,且編碼的可讀性和易用性更強。通過在能夠以組合形式顯示和編輯數(shù)學(xué)表達式的系統(tǒng)中使用線性格式可以顯著增強此功能。
本節(jié)介紹帶有分數(shù),下標和上標的線性格式。最后是關(guān)于如何使用ASCII空格字符U+0020一次構(gòu)建一個構(gòu)造的小節(jié)。這是使線性格式成為輸入數(shù)學(xué)公式的理想選擇。通常,在進行語法和語義選擇的情況下,輸入便利性被賦予高優(yōu)先級。
2.1 分數(shù)
表示分數(shù)的一種方法是LaTeX的\frac{numerator} {denominator}。編譯后“{}”并不會被顯示。這些簡單的規(guī)則立即給出一個明確的“純文本”,但看起來與相應(yīng)的數(shù)學(xué)符號完全不同,從而使其更難閱讀。
相反,我們定義了一個簡單的操作來包括所有連續(xù)的字母和十進制數(shù)字,即字母數(shù)字字符的跨度,那些屬于長的x和Nd總分類(參見 Unicode標準 5.0,表4-2。普通類)。(Instead we define a simple operand to consist of all consecutive letters and decimal digits, i.e., a span of alphanumeric characters, those belonging to the L\(x\) and Nd General Categories(see The Unicode Standard 5.0,Table 4-2. General Category). )
因此,一個簡單的分子或分母由大多數(shù)非字母數(shù)字字符終止,包括例如 算術(shù)運算符,空白(U+0020),U+2200..U+23FF,U+2500..U+27FF,U+2900..U+2AFF范圍內(nèi)的Unicode字符。
分數(shù)運算符由通常的斜杠/(U+002F)給出。所以簡單的構(gòu)建分數(shù) \[\frac{abc}ozvdkddzhkzd\] 以線性格式顯示為 abc/d。要強制顯示正常大小的線性分數(shù),可以使用\ /(反斜杠后跟斜杠)。
對于更復(fù)雜的分數(shù)(例如包含運算符),可以使用小括號(),方括號[]或大括號{}來包含所需的字符組合。如果使用括號并且最外面的括號前面和后面是運算符,那么這些括號不會以組合形式顯示,因為通常不希望看到這樣的括號。因此純文本(a + c)/d 顯示為
\[\frac{a+b}ozvdkddzhkzd\]。
在實踐中,這種方法導(dǎo)致純文本比LaTeX更容易閱讀。例如\frac {a + c} ozvdkddzhkzd,因為在許多情況下分數(shù)不需要括號,而TeX需要{}。
要想顯示最外面的括號,依次將它們括在括號內(nèi),然后括號成為最外面的括號。例如,((a + c))/d 顯示為\[\frac{(a+c)}ozvdkddzhkzd\]。
這種表示法的一個非常簡潔的特征是,純文本實際上通常是一種合法的數(shù)學(xué)符號,因此它相對容易閱讀。將其與MathML版本進行對比,后者(沒有括號)編碼為
<mfrac><mrow><mi>a</mi><mo>+</mo><mi>c</mi></mrow><mi>d</mi> </mfrac>有三種組合分數(shù)可供選擇:
三種分別顯示成
當建立大的線性分數(shù),不應(yīng)刪除最外面的括號。
相同的符號語法用于“堆?!?#xff0c;其類似于沒有分數(shù)條的分數(shù)。堆棧用于創(chuàng)建二項式系數(shù),堆棧運算符為“|”(\atop)。例如,二項式定理
\[(a+b)^n=\sum_{k=0}^n\left(\begin{array}{c}n\\ k\end{array}\right)a^{k}b^{n-k}\]
的線性格式為(參見3.4節(jié) 關(guān)于“膠水” ? 的討論)(a+b)^n=Σ_(k= 0)^n?(n|k)a^k b^(n-k),
其中(n|k)是組合的二項式系數(shù)的第\(n\)項系數(shù)\(?\)。求和符號使用了下一小節(jié)中討論的下標/上標符號。
由于二項式系數(shù)非常常見,因此TeX為它們選擇了控制字。在線性格式版本3中,它使用n\choose k(c)運算符而不是\atop運算符|。因此,假設(shè)你在\(k\)之后鍵入一個空格,上面二項式定理中的二項式系數(shù)可以寫成“n\choose k”。包含此快捷方式主要是為了與TeX兼容,因為(n|k)非常容易鍵入。
當/后跟著運算符,顯然不是想要輸入分數(shù)。因此/號還被賦予了別的含義:輸入像≠這樣的否定運算符,只需鍵入/=就可得到≠。這種通過帶/來表示否定運算符在 4.1節(jié) 詳細介紹。要輸入≠,您還可以鍵入TeX的名稱\ne,但/=更簡單一些。而 4.1節(jié) 中其他否定運算符的TeX名稱更難記住。
分數(shù)的另一個技巧是兩個數(shù)字之間或斜杠和數(shù)字之間的句點或逗號被認為是數(shù)字的一部分,而不是終結(jié)符。例如,1/3.1416為 \(\frac{1}{3.1416}\),而不是\(\frac{1}{3}.1416\)。
2.2 上標和下標
上標下和上標有點棘手,但它們?nèi)匀痪哂锌勺x性。具體來說,我們通過下標運算符引入下標(在TeX中將其顯示為ASCII下劃線_)。一個簡單的下標操作數(shù)由一個或多個字符的字符串組成,其中包含 通用類別Lx(字母)和Nd(十進制數(shù)字),以及不可見的逗號。例如,諸如 \(\delta_{\mu\nu}\) 的一對下標被寫為δ_μν。類似地,上標運算符實現(xiàn)上標(在TeX中顯示為ASCII ^)。所以 a^b 表示 \(a^b\) 。具有構(gòu)建功能的文本處理系統(tǒng)的一個很好的增強功能是將_顯示為一個小的下標向下箭頭,將^顯示為一個小的上標向上箭頭,以便將這些構(gòu)建運算符的語義顯示在數(shù)學(xué)語境。
復(fù)合下標和上標包括括號內(nèi)的表達式,方括號和大括號。因此 \(\delta_{\mu+\nu}\) 寫為δ_(μ+ν)。此外,以特殊方式處理另外兩個運算符(逗號和句號)是值得的。具體來說,如果下標操作數(shù)后面直接跟一個逗號或一個句點,后面依次是空格,則逗號或句點出現(xiàn)在行上,即被視為終止下標的運算符。(Specifically, if a subscript operand is followed directly by a comma or a period that is, in turn, followed by whitespace, then the comma or period appears on line,i.e., is treated as the operator that terminates the subscript. )但是,后跟字母數(shù)字的逗號或句點將被視為下標的一部分。這種改進消除了對許多重寫括號的需要,從而產(chǎn)生更易讀的線性格式文本(請參見 第3.14節(jié) 有關(guān)逗號和句點的更多討論)。
關(guān)于上/下標的嵌套:a_b_c代表\(a_{b_c}\)。類似地,a^b^c 代表\(a^{b^c}\)
編寫像 \(a^{b_c}\) 這樣式子的需要括號: a^(b_c),因為a^b_c(或a_c^b)顯示為\(a^b_c\)。構(gòu)建程序負責確定下標或上標基數(shù)。通常,基數(shù)只是一個數(shù)學(xué)斜體字符,就像 \(a\) 。但它可能是一個括號內(nèi)的表達式或者像 \(\sin^2{x}\) 中的sin這樣的數(shù)學(xué)函數(shù)的名稱(請參見 第3.5節(jié) 有關(guān)此案例的更多討論)。它也可以是運算符,如+和=。在印度語和其他面向集群的腳本中,默認情況下,基數(shù)是下標或表示運算符之前的集群。
作為一個稍微復(fù)雜的例子,想想這個表達式怎么寫?
\(W^{3\beta}_{\delta_1\rho_2\sigma_3}\)
其線性格式為W^3β_δ1ρ1σ2。而在TeX中,需要這樣輸入
$W^{3\beta}_{\delta_1\rho_1\sigma_2}$
若使用Unicode作為符號,TeX版本看起來將會更簡單,即$W^{3β}_{δ_1ρ_σ_2}$或$W^{3β}_{δ1ρ1σ2}$,由于Unicode有全套十進制上標和下標。實際上,數(shù)字下標通常使用下劃線輸入,數(shù)字后跟空格或運算符,因此主要的簡化是需要更少的括號。
對于比(ratio)
\[\alpha_2^3\over\beta_2^3+ \gamma_2^3\]
線性格式文本可以為\(α_2^3/(β_2^3+γ_2^3)\),而標準的TeX版本為$$\alpha_2^3 \over \beta_2^3 + \gamma_2^3$$。
線性格式文本是合法的數(shù)學(xué)表達式,而TeX版本與數(shù)學(xué)表達式?jīng)]有任何相似之處。
TeX變得更長更笨重諸如
\[W_{\delta_1\rho_1\sigma_2}^{3\beta}= U_{\delta_1\rho_1}^{3\beta}+ {1 \over 8\pi^2} \int_{\alpha_1}^{\alpha_2} d\alpha_2’ \left[ {U_{\delta_1\rho_1}^{2\beta}-\alpha_2’ U_{\rho_1\sigma_2}^{1\beta}\over U_{\rho_1\sigma_2}^{0\beta}} \right] \]
它的線性格式版本為
W_δ1ρ1σ2^3β=U_δ1ρ1^3β+ 1/8π^2 ∫_α1^α2?dα'2 [(U_δ1ρ1^2β-α'-2U_ρ1σ2^1β)/U_ρ1σ2^0β]
而標準的TeX版本為
2.3 空白(空格)字符使用
由于運算符周圍的間距應(yīng)由數(shù)學(xué)顯示引擎自動提供,因此很少需要ASCII空格字符(U+0020)來顯式構(gòu)建文本間距(節(jié) 3.16 討論了這種自動間距)。但是,空格字符對于分隔線性格式表示法的操作數(shù)非常有用。當空格扮演這個角色時,它會在構(gòu)建時消除。因此,如果您輸入\alphaUnicode數(shù)學(xué)編碼后跟一個空格來獲得α,當α替換\alpha時,空格被消除。類似地,Unicode數(shù)學(xué)編碼a_1 b_2會顯示\(a_1b_2\)(中間沒有空格)。
另一個例子是消除了分數(shù)分母后面的空格,因為它會導(dǎo)致分數(shù)增加。如果空格位于分數(shù)的分子之前,則空格被消除,因為可能需要分隔分子的開始。類似地,如果在函數(shù)應(yīng)用構(gòu)造之前使用空格(參見節(jié) 3.5)或在上/下標之前(參見節(jié) 3.3),則它將被刪除,因為它將界定這些構(gòu)造的開始。
在嵌套的下標/上標表達式中,空格一次構(gòu)建一個上/下標。例如,要用編碼a^b^c建立\(a^{b^c}\),需要兩個空格。像+這樣的其他運算符會構(gòu)建整個表達式,因為這些運算符明確地終止了操作。
以下未翻譯
在TeX中,空格字符也用于分隔控制字,如 \alpha,并且不以組合形式出現(xiàn)。 TeX的使用和線性格式之間的區(qū)別在于,在TeX中,空白在組合顯示中總是被消除,而在線性格式中,不分隔操作數(shù)或關(guān)鍵字的空格確實會產(chǎn)生間距。其他間距字符在Sec。中討論。 3.16。
空間的一個顯示用途是覆蓋算法,該算法決定像+或 - 這樣的模糊一元/二元運算符是一元的。如果后跟空格,則認為操作符是二進制的,并且不顯示空格??臻g也用于在各種情況下獲得逗號,句號和冒號周圍的正確間距(參見第節(jié) 3.14)。
3. 編碼其他數(shù)學(xué)表達式
上一節(jié)描述了我們?nèi)绾我跃€性格式編碼分數(shù),上/下標,并給出了對該格式的感覺。當前部分描述了我們?nèi)绾问褂眠@種方法編碼其他數(shù)學(xué)結(jié)構(gòu),并以更正式的線性格式討論結(jié)束。
3.1 分隔符
方括號[],大括號{}和括號()在Unicode純文本中表示自己,并且能夠顯示構(gòu)建公式的文字處理系統(tǒng)應(yīng)該能夠放大它們以適應(yīng)它們內(nèi)部的內(nèi)容。一般來說,我們將這些字符稱為 分隔符。分隔對不需要由相同類型的分隔符組成。例如,可以使用[和close with}打開,并且可以在某些數(shù)學(xué)文檔中看到這種用法。結(jié)束定界符可以有下標和/或上標。分隔符中稱為 圍欄 在MathML。
這些選擇足以滿足大多數(shù)感興趣的案例。但是為了允許使用沒有匹配分隔符的分隔符并且否定分隔符的打開/關(guān)閉字符,可以使用特殊關(guān)鍵字?open和?close。這些分別轉(zhuǎn)換為框圖字符├和┤。制表字符用于
8 Unicode技術(shù)說明28
的Unicode數(shù)學(xué)的幾乎純文本編碼
開/關(guān)分隔符,因為他們不太可能被用作數(shù)學(xué)符號和他們在字體一應(yīng)俱全。如果在任何不是相反意義的分隔符的字符之前使用,則打開/關(guān)閉分隔符充當不可見的分隔符,定義分隔表達式的相應(yīng)末尾。這種情況的常見用法是“案例”等式,例如
| x | = {-x x如果 如果 X X≥<0
0,
其具有線性格式“| X | = {█(&x“if”x≥0@ - &x“if”x <0)(“(見節(jié) 3.19 關(guān)于方程式數(shù)組運算符█的討論)。
因為案例構(gòu)造相當常見,TeX有它的?case控制字。這可以用帶有?case操作符C的線性格式版本3來實現(xiàn)。這樣,上面的等式可以寫成“| x | = C(&x”if“x≥0 @ - &x“if”x <0)“,這仍然有點奇怪,但你不必輸入開口大括號和?close。
打開/關(guān)閉定界符可用于否決定界符作為公認奇怪的正常打開/關(guān)閉字符,但盡管如此,有時使用的,表達“]A + B[”,其具有線性格式“├]A+B┤[”。請注意,打開或關(guān)閉分隔符后面的空白被“吃掉”。這是為了允許開放分隔符后跟正常分隔符,而不將該對分解為單個分隔符。另見Sec。 3.18 關(guān)于如何進行任意分組。如果在出現(xiàn)像分隔符這樣的分隔符之前,需要將├視為空的開放分隔符或者],按照空格來強制開放分隔符解釋。
為了抑制自動調(diào)整大小和選擇特定尺寸,├后跟一個數(shù)字'0' - '4',含義如下表所示
數(shù)字含義
0不生長1 TeX big 2 TeX Big 3 TeX bigg 4 TeX Bigg
它是如果顯示系統(tǒng)可以在括號內(nèi)的表達式中打破方程,則很少需要使用顯式大小。
線性格式中的開放和閉合分隔符的使用無疑是TeX的顯性特性與對合法數(shù)學(xué)符號的期望之間的折衷,但靈活性值得妥協(xié),特別是在與通常構(gòu)建的文本交互時如此就像在WYSIWYG數(shù)學(xué)系統(tǒng)中一樣。為此,TeX使用?left和?right代替?open和?close。我們使用后者,因為它們適用于許多阿拉伯語語言環(huán)境中使用的從右到左的數(shù)學(xué)以及通常的從左到右的數(shù)學(xué)。
絕對值由ASCII垂直條|表示(U + 007C)。其數(shù)量在任何給定支架嵌套層次均勻度通常決定了是否
Unicode技術(shù)注意28 9
的數(shù)學(xué)的Unicode幾乎純文本編碼
豎線是接近|。具體而言,第一次出現(xiàn)被認為是open | (除非下標或上標),下一個關(guān)閉| (除非跟隨操作員),下一個打開|,依此類推。
通過丟棄絕對值內(nèi)最外面的括號,可以明確地處理嵌套絕對值。例如,建立表達式 ||x| - |y|| 可以具有線性格式|(|x| - |y|)|。通過注意垂直條|,可以在沒有澄清括號的情況下解析某些情況,例如這個情況直接跟隨運營商是開放的|。但是例子|a|b-c|d|需要澄清的解釋,因為它可以被解釋為(|a|b) - (c|d|)或|a(|b-c|)d|。通常的算法給出前者,所以如果想要后者沒有內(nèi)括號,可以輸入|(a|b-c|d)|。
我們對待的另一個案例如果它后跟一個空格(U + 0020),則作為一個接近的分隔符。這處理狄拉克符號中胸罩矢量的重要情況。例如,量子力學(xué)密度操作者 ρ 具有定義
ρ=ΣPψ|ψ??ψ|
ψ
,
10 Unicode技術(shù)說明28
其中可以使用ASCII垂直條輸入垂直條。
如果是|后跟下標和/或上標,并且沒有相應(yīng)的open |,它被視為腳本基本字符,即 不是 分隔符。其組合尺寸應(yīng)為當前顯示/內(nèi)聯(lián)模式中積分符號的高度。
Unicode范數(shù)定界符U + 2016(‖或?norm)具有與絕對值字符相同的打開/關(guān)閉定義。除了它總是被認為是一個分隔符。
分隔符也可以在其中包含分隔符。線性格式的版本2沒有形式化函數(shù)參數(shù)的逗號分隔符(MathML確實如此),但它支持垂直條分隔符?vbar,它由框圖畫光垂直字符│(U + 2502)表示。我們嘗試使用ASCII | (U + 007C)也是為了這個目的,但是由此產(chǎn)生的模糊性通常是不可克服的。使用U + 007C作為可被解密的分隔符的一種情況是形式(a|b),其中 a 和 b 是數(shù)學(xué)表達式。但是(a|b|c)將垂直條解釋為絕對值。人們可能想要解釋|在(a|b)中作為開放分隔符)作為相應(yīng)的緊密分隔符,而(尚未匹配。如果是,則取代|by├,即(├|b)。垂直條分隔符大小增加以匹配周圍括號的大小。在版本3中,其他運算符可以被視為分隔符,在它們之前加上?middle(║-U + 2551)。
另一個常見的分隔符是?mid字符|(U +2223),常用于像{x | f(x)= 0}這樣的表達式。這個分隔符的大小也與周圍的括號相匹配,并且作為關(guān)系運算符間隔開
轉(zhuǎn)載于:https://www.cnblogs.com/1024th/p/10372021.html
總結(jié)
以上是生活随笔為你收集整理的UnicodeMath数学公式编码_翻译(Unicode Nearly Plain - Text Encoding of Mathematics Version 3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 『Balancing Act 树的重心』
- 下一篇: 谈谈技术原则,技术学习方法,代码阅读及其