0

我想使用 Wpf webBrowser 控件来呈现数学方程。我已经下载了 MathJax,并将其包含在我的 Visual Studio 项目中。

我试图加载一个MathJax示例。这是我正在使用的 html 代码:

<!DOCTYPE html>
<html>
<head>
<title>MathJax MathML Test Page</title>
<!-- Copyright (c) 2010-2012 Design Science, Inc. -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<script type="text/javascript" src="MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full"></script>

</head>
<body>

<p>
When
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mi>a</mi><mo>&#x2260;</mo><mn>0</mn>
</math>,
there are two solutions to
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mi>a</mi><msup><mi>x</mi><mn>2</mn></msup>
  <mo>+</mo> <mi>b</mi><mi>x</mi>
  <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn>
</math>
and they are
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mi>x</mi> <mo>=</mo>
  <mrow>
    <mfrac>
      <mrow>
        <mo>&#x2212;</mo>
        <mi>b</mi>
        <mo>&#x00B1;</mo>
        <msqrt>
          <msup><mi>b</mi><mn>2</mn></msup>
          <mo>&#x2212;</mo>
          <mn>4</mn><mi>a</mi><mi>c</mi>
        </msqrt>
      </mrow>
      <mrow> <mn>2</mn><mi>a</mi> </mrow>
    </mfrac>
  </mrow>
</math>
</p>

</body>
</html>

使用以下代码一切正常:

string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/test-1.html", curDir)));

但如果我尝试这段代码:

string s = File.ReadAllText(Directory.GetCurrentDirectory() + "\\test-1.html");
this.webBrowser1.NavigateToString(s);

我得到一个脚本错误:

An error has occurred in the script on this page.
Line:    1
Char:    1
Error:   Syntax Error
Code:    0
URL:     about:MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full

怎么了?使用类似于上一个代码的东西真的很有帮助,所以我可以避免保存文件只是为了加载它......

4

1 回答 1

0

请注意,错误中的 URL 是about:MathJax-Reduced/unpacked...,这是一个aboutURL,而不是file://您在第一种情况下的 URL。我怀疑这是问题的原因。这表明该NavigateToString函数正在使用about:blank或类似的 URL 作为页面的基本 URL,因此 MathJax 获得了错误的路径。请注意,当从文件中读取它并将其作为字符串加载时,您会丢失实际的页面位置。这意味着您可能必须从绝对 URL 而不是相对 URL 加载 MathJax(即,包括目录的file://和路径MathJax-Reduced)。

于 2013-04-30T11:12:26.143 回答