2017-04-13 79 views
0

我想通過OMath命名空間向Word寫一個方程式,但我無法獲得正確生成的轉義字符。當我執行下面的控制檯程序時,它恰當地放置分子和除數,但轉義字符「\ delta」仍然完全按照輸入,而不是轉換成小寫字母delta的希臘符號。OMath buildup()轉義字符

如果我在\ delta中的'a'之後設置光標,並按下空格,它將進行轉換。如果從功能區點擊專業版,也會轉換。

有人可以解釋如何以編程方式創建一個轉義字符,並讓它正確顯示?

static void Main(string[] args) 
    { 
     string fName = @"C:\Users\Desktop\Doc_1.docx"; 

     Word._Application myApp = new Word.Application(); 
     myApp.Visible = true; 

     Word.Document myDoc = myApp.Documents.Open(fName); 

     Word.Range myFunctionR = myApp.Selection.OMaths.Add(myApp.Selection.Range); 
     Word.OMathFunction myFunction = myApp.Selection.OMaths[1].Functions.Add(
      myApp.Selection.Range, Word.WdOMathFunctionType.wdOMathFunctionBox); 
     Word.OMathBox myBox = myFunction.Box; 

     myBox.E.Range.Text = @"\delta = (PL)/(AE)"; 
     myBox.E.BuildUp(); 
    } 

如果我貼出來,從MS Word中的MathML和它看起來像這樣:

正確的/所需的版本:

<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> 
<mml:mi>δ</mml:mi><mml:mi>  
<mml:mi> </mml:mi> 
<mml:mo>=</mml:mo> 
<mml:mfrac> 
    <mml:mrow> 
     <mml:mi>P</mml:mi> 
     <mml:mi>L</mml:mi> 
    </mml:mrow> 
    <mml:mrow> 
     <mml:mi>A</mml:mi> 
     <mml:mi>E</mml:mi> 
     </mml:mrow> 
</mml:mfrac> 

錯誤/編程版本:

<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> 
<mml:mo>\</mml:mo> 
<mml:mi>d</mml:mi> 
<mml:mi>e</mml:mi> 
<mml:mi>l</mml:mi> 
<mml:mi>t</mml:mi> 
<mml:mi>a</mml:mi> 
<mml:mi> </mml:mi> 
<mml:mo>=</mml:mo> 
<mml:mfrac> 
    <mml:mrow> 
     <mml:mi>P</mml:mi> 
     <mml:mi>L</mml:mi> 
    </mml:mrow> 
    <mml:mrow> 
     <mml:mi>A</mml:mi> 
     <mml:mi>E</mml:mi> 
     </mml:mrow> 
</mml:mfrac> 

回答

0

在這種情況下只是將\ u03B4文本解決了這個問題,我本來希望能夠從逃脫做更復雜的場景就像你可以在Word打字的時候...看起來像我認爲它比現在更復雜。

我現在認爲Microsoft公式編輯器只不過是MathML渲染器/數據輸入實用程序。直接使用MathML &將其導入Word似乎是正確/最好的方法。