tex输入处理器选项

下面的选项控制 TeX input processor 当你包括 'input/tex''input/tex-full''input/tex-base'load 数组 loader 块,或者加载包含tex输入jax的组合组件。它们与默认值一起列出。要设置这些选项中的任何一个,请包括 tex 在你的章节 MathJax 全局对象。


配置块

MathJax = {
  tex: {
    packages: ['base'],        // extensions to use
    inlineMath: [              // start/end delimiter pairs for in-line math
      ['\\(', '\\)']
    ],
    displayMath: [             // start/end delimiter pairs for display math
      ['$$', '$$'],
      ['\\[', '\\]']
    ],
    processEscapes: true,      // use \$ to produce a literal dollar sign
    processEnvironments: true, // process \begin{xxx}...\end{xxx} outside math mode
    processRefs: true,         // process \ref{...} outside of math mode
    digits: /^(?:[0-9]+(?:\{,\}[0-9]{3})*(?:\.[0-9]*)?|\.[0-9]+)/,
                               // pattern for recognizing numbers
    tags: 'none',              // or 'ams' or 'all'
    tagSide: 'right',          // side for \tag macros
    tagIndent: '0.8em',        // amount to indent tags
    useLabelIds: true,         // use label name rather than tag for ids
    maxMacros: 1000,           // maximum number of macro substitutions per expression
    maxBuffer: 5 * 1024,       // maximum size for the internal TeX string (5K)
    baseURL:                   // URL for use with links to tags (when there is a <base> tag in effect)
       (document.getElementsByTagName('base').length === 0) ?
        '' : String(document.location).replace(/#.*$/, '')),
    formatError:               // function called when TeX syntax errors occur
        (jax, err) => jax.formatError(err)
  }
};

请注意,有些扩展提供了其他选项。见 tex扩展选项 有关详细信息,请参阅下面的部分。

注解

的默认设置 processEscapes 已从 false 在版本2中, true 在版本3中。

注解

在3.2版之前, multlineWidth 选择权过去是主要的 tex 挡路,但现在它在 ams 中国银行业的子挡路 tex 挡路。版本3.2包含将配置从旧位置移动到新位置的代码,但是在将来的版本中将删除该向后兼容代码。


选项说明

packages: ['base']

这个数组列出了应该由tex输入处理器初始化的包的名称。这个 input/texinput/tex-full 组件会自动将它们加载的包添加到此列表中。如果显式加载addition tex扩展,则应将它们添加到此列表中。例如:

MathJax = {
  loader: {load: ['[tex]/enclose']},
  tex: {
    packages: {'[+]': ['enclose']}
  }
};

这将加载 随函附上 扩展,并通过将其包括在包列表中来激活它。

您可以使用以下命令从默认列表中删除软件包 '[-]' 而不是 [+] ,如下例所示:

MathJax = {
  tex: {
    packages: {'[-]': ['noundefined']}
  }
};

这将禁用 名词定义的 扩展名,这样未知宏名称将导致错误消息,而不是以红色显示。

如果您既需要删除一些默认软件包,又需要添加新软件包,则可以通过将这两个包都包括在大括号中来实现:

MathJax = {
  loader: {load: ['[tex]/enclose']},
  tex: {
    packages: {'[-]': ['noundefined', 'autoload'], '[+]': ['enclose']}
  }
};

这将禁用 名词定义的自动装填 扩展,并在 随函附上 分机。

inlineMath: [['\\\(','\\\)']]

这是要用作行内数学分隔符的字符串对数组。每对中的第一个是初始分隔符,第二个是终端分隔符。你想要多少对就有多少对。例如,

inlineMath: [ ['$','$'], ['\\(','\\)'] ]

会让mathjax去寻找 $...$\(...\) 作为内联数学的分隔符。(请注意,默认情况下不启用单美元符号,因为它们在普通文本中使用得太频繁,因此如果要将它们用作数学分隔符,必须显式指定它们。)

注意,分隔符不能看起来像html标记(即不能包含小于号),因为浏览器在mathjax有机会运行之前会将它们转换为标记。数学分隔符只能包含文本,不能包含标记。

displayMath: [ ['$$','$$'], ['\\\[','\\\]'] ]

这是一个字符串对数组,将用作显示公式的分隔符。每对中的第一个是初始分隔符,第二个是终端分隔符。你想要多少对就有多少对。

注意,分隔符不能看起来像html标记(即不能包含小于号),因为浏览器在mathjax有机会运行之前会将它们转换为标记。数学分隔符只能包含文本,不能包含标记。

processEscapes: false

当设置为时 true ,您可以使用 \$ 表示文字美元符号,而不是将其用作数学分隔符,并且 \\ 表示文字反斜杠(以便您可以使用 \\\$ 要获取文字,请执行以下操作 \$\\$...$ 以在行内数学之前获得反斜杠jsut)。什么时候 false\$ 将不会更改,并且其美元符号可被视为数学分隔符的一部分。通常将其设置为 true 如果启用 $ ... $ 行内分隔符,以便您可以键入 \$ MathJax会在呈现的文档中将其转换为常规的美元符号。

processRefs: true

当设置为 true ,mathjax将处理 \ref{{...}} 数学模式之外。

processEnvironments: true

什么时候? truetex2jax 不仅查找内联和显示数学分隔符,还查找 Latex 环境 (\begin{{something}}...\end{{something}} )并将它们标记为由mathjax处理。什么时候? false , Latex 环境将不会在数学模式之外进行处理。

digits: /^(?:[0-9]+(?:\{,\}[0-9]{3})*(?:\.[0-9]*)?|\.[0-9]+)/

这将提供一个正则表达式,用于在分析tex表达式时标识数字。默认情况下,小数点是 . 你可以使用 {{,}} 在那之前的每三位数之间。如果你想用 {{,}} 作为十进制指示器,使用

MathJax = {
  tex: {
    digits: /^(?:[0-9]+(?:\{,\}[0-9]*)?|\{,\}[0-9]+)/
  }
};
tags: 'none'

这控制方程是否编号以及如何编号。默认设置为 'none' 与未执行自动编号的mathjax早期版本兼容(因此页面不会更改其外观)。你可以把这个改成 'ams' 对于编号为 AMSmath 包裹可以,或者 'all' 为每个显示的方程式获取方程式编号。

tagSide: 'right'

它指定了 \tag{{}} 宏将放置标记,并在其上显示自动公式号。设置为 'left' 把标签放在左手边。

tagIndent: "0.8em"

这是由 \tag{{}} 宏或通过自动方程式编号。

useLabelIds: true

这控制标记的元素id是否使用 \label 名称或方程式编号。什么时候? true ,使用标签,当 false ,使用公式号。

maxMacros: 10000

因为形式的定义 \def\x{{\x}} \x 会导致mathjax无限循环, maxMacros 常量将限制mathjax处理的任何表达式中允许的宏替换数。

maxBuffer: 5 * 1024

因为形式的定义 \def\x{{\x aaa}} \x 会无限循环,同时在mathjax的方程式缓冲区中堆积大量的a maxBuffer 常量用于限制mathjax正在处理的字符串的大小。它被设置为5KB,这对于任何合理的方程都应该足够了。

baseURL: (document.getElementsByTagName('base').length === 0) ?
'' : String(document.location).replace(/#.*$/, ''))

这是创建指向标记公式(通过 \ref{{}}\eqref{{}} )当有一个 <base> 文档中会影响这些链接的元素。如果mathjax没有生成正确的链接,可以手动设置该值。

formatError: (jax, err) => jax.formatError(err)

这是当Tex input Jax报告它正在处理的TeX中的语法或其他错误时调用的函数。默认情况下,生成一个 <merror> MathML元素,其中包含指示发生的错误的消息。您可以重写该函数来执行其他任务,如记录消息、用替代消息替换消息或抛出错误,以便MathJax在该点停止(您可以使用Promises或 try/carch 挡路)。

其余选项在 所有输入处理器通用的选项 部分。


开发人员选项

除了上面列出的选项外,面向开发人员的低级选项还包括:

FindTeX: null

这个 FindTeX 将重写默认实例的对象实例。这允许您创建 FindTeX 并将其传递给tex输入jax。一 null 值表示使用默认值 FindTeX 类并创建新的实例。


tex扩展选项

有几个tex扩展在 tex mathjax配置的块。下面将对其进行描述。请注意 input/tex 组件,以及加载tex input jax的组合组件,自动包含许多这些扩展,因此默认情况下,这些选项将可用。

例如, 配置宏 包添加了 macros 阻塞到 tex 允许您预先定义用于纹理表达式的宏的配置块:

MathJax = {
  tex: {
    macros: {
      R: '\\mathbf{R}'
    }
  }
}

下面的链接中描述了各种TeX软件包(有选项)的选项:


从TeX表达式中设置选项

有时,能够从TeX表达式中更改TeX或TeX扩展选项的值是很方便的。例如,您可能希望更改单个表达式的标记侧。这个 设置选项 Extension使您可以做到这一点。它定义了一个 \setOptions 允许您更改TeX解析器的选项值或给定TeX包的选项值的宏。

由于此功能可能会在允许社区成员输入TeX表示法的页面上产生潜在的不良后果,因此默认情况下不会加载此扩展模块,并且不能由加载此扩展模块 require{{}} 。您必须加载它并将其显式添加到TeX包列表中,才能设置选项。该扩展具有配置参数,允许您控制可以从TeX表达式中修改哪些包和选项,如果您在社区设置中使用此宏,您可能希望调整这些参数。