# 加载和配置MathJax

<script type="text/javascript" src="path-to-MathJax/MathJax.js"></script>

<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js">
</script>

<script type="text/javascript" src="/MathJax/MathJax.js"></script>

<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

It is also possible to load MathJax dynamically after the page has
GreaseMonkey 脚本，或者一个专门准备的
bookmarklet <http://en.wikipedia.org/wiki/Bookmarklet>_。这里有一个高级用法的话题
<ajax-mathjax>

## 从CDN加载MathJax

MathJax可以通过 cdn.mathjax.org“的web服务获取，所以你可以从这里加载MathJax而不用安装到你自己的服务器上。这个CDN是云网络的一部分，所以它可以被世界各地的服务器响应。这意味着你将从离你最近的节点获取，这样会让连接更快更稳定。

CDN托管了MathJax的最新版本和旧版本。所以你可以一直连接到MathJax，也可以连接到一个固定的版本以便你的页面可以一直使用同一个版本。

mathjax/         # project-name
1.0-latest/
1.1-latest/   # the 1.1 release with any ciritical patches
2.0-beta/     # temporary
2.0-latest/   # the 2.0 release with any ciritical patches
...
latest/       # the most current version (2.0-latest in this case)

1.1-latest 最开始带包的1.1版本，但是随着时间推移它会升级，其版本会变成1.1a,1.1b等等。

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/1.1-latest/MathJax.js"></script>

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>

## 配置MathJax

config 参数去加载。接下来会详细说明：

## 使用配置文件

MathJax/config 目录。主要有其中以下几个：

default.js

TeX-AMS-MML_HTMLorMML.js

TeX-AMS_HTML.js

MML_HTMLorMML.js

AM_HTMLorMML.js

TeX-AMS-MML_SVG.js

TeX-MML-AM_HTMLorMML.js

,或者 符号书写公式。如果浏览器支持就处理为MathML，否则就使用Html和Css渲染。

The combined configuration
files load the majority of the needed files all as one large file, reducing
the number of network requests that are needed. That means you will
probably be getting the components that MathJax needs faster than you would
without the combined file, but you may be loading components that are never
actually used; that is the trade off.

Each of the combined configuration files comes in two flavors: the ones
listed above, which only configure the output processors but don’t include
the main code, and a “full” version, that also includes the complete
output processors. For example, with TeX-AMS_HTML.js and
TeX-AMS_HTML-full.js, the latter includes the complete HTML-CSS output
processor. The “full” configuration files are substantially larger (on
the order of 70KB more), so you need to decide whether it is worth loading the

load the full version, but if you are including MathJax in a theme file for
a blog or wiki that only includes mathematics occasionally, then perhaps it
is better to use the standard configuration instead, in which case the
output processors are only loaded when they are actually needed, saving the
configured to compress the files it sends, the difference between the two
is considerably reduced. Furthermore, most browsers will cache the
first page a user views, so it may be best to use the “full” version after
all. Note, however, that mobile devices sometimes have limits on the size
of files that they cache, so they may be forced to download the
configuration on every page. You need to keep these issues in mind as you
decide on which configuration to use.

To load a configuration file, use config=filename (where filename
is one of the names above without the .js) as a parameter to the URL of
the MathJax.js file. For example

<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

loads the config/TeX-AMS-MML_HTMLorMML.js configuration file from the
MathJax distributed network service.

You can include more than one configuration file by separating them with
commas. For example, if you have a locally defined configuration file
called MathJax/config/local/local.js that modifies the settings for the
TeX-AMS_HML configuration, defines some new TeX macros, and so on, you
can use

<script type="text/javascript"
src="path-to-MathJax/MathJax.js?config=TeX-AMS_HTML,local/local">
</script>

to first load the main configuration, then the local modifications.

## Using a local configuration file with the CDN

You can load MathJax from the MathJax CDN server but still use a
configuration from your own local server. For example, suppose you
have a configuration file called local.js on your own server, in a
directory called MathJax/config/local. Then you can load MathJax
from the CDN and still use your configuration file as follows:

<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML,http://myserver.com/MathJax/config/local/local.js">
</script>

Because the local.js file is not on the CDN server, you must give
the complete URL to the local configuration file. Note that you also
have to edit the call that is at the bottom of
the configuration file to change it from
[MathJax]/config/local/local.js to the complete URL as you give it
in the config parameter. In the example above, it would be

MathJax.Ajax.loadComplete("http://myserver.com/MathJax/config/local/local.js");

That is because the [MathJax] in the original URL refers to the
root directory where MathJax.js was loaded, which is on the CDN,
not your local server, and so you need to tell MathJax the actual

## Using in-line configuration options

The second way to configure MathJax is through in-line configuration,
which puts the configuration options within the web page itself. The use
of in-line configuration with MathJax requires two separate <script>
tags: one for specifying the configuration settings and one for loading of
MathJax. Because MathJax starts its configuration process as soon as it is
loaded, the configuration script must come before the script tag that
loads MathJax.js itself. You do this by including a <script> with
type="text/x-mathjax-config" whose content will be run when
MathJax performs its configuration. Generally, this script will
include a MathJax.Hub.Config() call to perform MathJax
configuration, but it can also include other MathJax commands, such as
registering signal actions, or any JavaScript commands that you want.
You can have as many such script tags as you need, and MathJax will
process them in the order in which they appear in the document.

For instance,

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\$","\$"] ],
displayMath: [ ['$$','$$'], ["\$","\$"] ],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] }
});
</script>
<script type="text/javascript" src="path-to-MathJax/MathJax.js">

This example includes the tex2jax preprocessor and configures it to use
both the standard and math delimiters. It uses
the TeX input processor and the HTML-CSS output processor, and forces the
HTML-CSS processor to use the TeX fonts rather than other locally installed
fonts (e.g., fonts). See the section (or the comments in the config/default.js
include in the MathJax.Hub.Config() call. This
configuration does not load any pre-defined configuration file.

Note that you can combine in-line configuration with file-based
configuration; simply include text/x-mathjax-config scripts as above,
but also include config=filename when you load the MathJax.js
file. For example, the tex2jax preprocessor does not enable the TeX
single-dollar in-line math delimiters by default. You can load one of the
pre-defined configuration files that includes the TeX preprocessor, and use
an in-line configuration block to enable the single-dollar signs, as
in this example:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\$","\$"] ],
processEscapes: true
}
});
</script>
<script type="text/javascript" src="path-to-MathJax/MathJax.js?config=TeX-AMS_HTML">
</script>

## Configuring MathJax after it is loaded

Because MathJax begins its configuration process immediately after it is
configuration blocks for MathJax must come before MathJax.js is loaded,
so they will be available to MathJax when it starts up. There are
situations, however, when you might want to put off configuring MathJax
until later in the page.

One such situation is when you have a site that loads MathJax as part of a
theme or template, but want to be able to modify the configuration on
specific pages of the site. To accomplish this, you need to ask MathJax
to delay its startup configuration until some later time. MathJax uses
the delayStartupUntil parameter to control the timing of the startup
sequence. By default, it is set to none, meaning there is no delay
and MathJax starts configuration right away.

You can set delayStartupUntil=onload in order to prevent MathJax from
continuing its startup process until the page’s onLoad handler fires. This
allows MathJax to find the text/x-mathjax-config blocks that occur
anywhere on the page, not just the ones that appear above the <script>
that loads MathJax.js. It also means that MathJax will not begin
loading any of the files that it needs until then as well, which may delay
execute until all the images and other media are available. (If you have
used a combined configuration file, however, it already includes all the
main files that MathJax needs, so there is not much loss in delaying the
startup.)

You can set delayStartupUntil=configured in order to delay the
startup configuration until the MathJax.Hub.Configured()
method is called. This allows you to delay startup until later on the
page, but then restart the MathJax configuration process as soon as
possible rather than waiting for the entire page to load. For
example, you could use

<script type="text/javascript"
src="path-to-MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured">
</script>

<script type="text/javascript">
MathJax.Hub.Configured()
</script>

in its footer, so that MathJax will delay setting up until the footer
is reached, but will not have to wait until images and other files are
loaded. In this way, if you have text/x-mathjax-config script
tags within the main body of the document, MathJax will read and
process those before continuing its startup. In this way you can use
a default configuration that can be modified on a page-by-page basis.

Note that MathJax.Hub.Configured() is not called by MathJax;
you must make that call somewhere within the page yourself after the
configuration blocks are set up. If you do not execute this function,
MathJax will not process any of the math on the page.

## Details of the MathJax configuration process

Since there are a number of different ways to configure MathJax, it is
important to know how they interact. The configuration actions are the
following:

1. Process any configuration file explicitly specified as a script parameter.
2. Process the in-line script body (deprecated), if present.
3. If delayed startup is requested, wait for the indicated signal.
4. Process text/x-mathjax-config config blocks.
5. Process any config files queued in the configuration’s config array
by earlier config code.

Note that text/x-mathjax-config script blocks must either precede the
MathJax.js script element, or startup must be delayed. Otherwise, blocks
that follow the MathJax.js script element may or may not be available
when MathJax runs, and browser-dependent erratic behavior will result.