Configurable MathJax Support
This commit is contained in:
parent
efb671aaf2
commit
48808bfb75
|
@ -8,11 +8,13 @@ language = "en"
|
|||
edition = "2018"
|
||||
|
||||
[output.html]
|
||||
mathjax-support = true
|
||||
site-url = "/mdBook/"
|
||||
git-repository-url = "https://github.com/rust-lang/mdBook/tree/master/guide"
|
||||
edit-url-template = "https://github.com/rust-lang/mdBook/edit/master/guide/{path}"
|
||||
|
||||
[output.html.mathjax]
|
||||
enable = true
|
||||
|
||||
[output.html.playground]
|
||||
editable = true
|
||||
line-numbers = true
|
||||
|
|
|
@ -490,6 +490,8 @@ pub struct HtmlConfig {
|
|||
pub curly_quotes: bool,
|
||||
/// Should mathjax be enabled?
|
||||
pub mathjax_support: bool,
|
||||
/// MathJax settings.
|
||||
pub mathjax: MathJax,
|
||||
/// Whether to fonts.css and respective font files to the output directory.
|
||||
pub copy_fonts: bool,
|
||||
/// An optional google analytics code.
|
||||
|
@ -550,6 +552,7 @@ impl Default for HtmlConfig {
|
|||
preferred_dark_theme: None,
|
||||
curly_quotes: false,
|
||||
mathjax_support: false,
|
||||
mathjax: MathJax::default(),
|
||||
copy_fonts: true,
|
||||
google_analytics: None,
|
||||
additional_css: Vec::new(),
|
||||
|
@ -582,6 +585,28 @@ impl HtmlConfig {
|
|||
}
|
||||
}
|
||||
|
||||
/// Configuration for how to use MathJax.
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(default, rename_all = "kebab-case")]
|
||||
pub struct MathJax {
|
||||
/// Whether MathJax support is enabled.
|
||||
pub enable: bool,
|
||||
/// Source. Default: "https://cdn.jsdelivr.net/npm/mathjax@3/es5".
|
||||
pub source: Option<String>,
|
||||
/// Configuration. Default: "tex-mml-chtml".
|
||||
pub config: Option<String>,
|
||||
}
|
||||
|
||||
impl Default for MathJax {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
enable: false,
|
||||
source: Some(String::from("https://cdn.jsdelivr.net/npm/mathjax@3/es5")),
|
||||
config: Some(String::from("tex-mml-chtml")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for how to render the print icon, print.html, and print.css.
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(default, rename_all = "kebab-case")]
|
||||
|
|
|
@ -679,6 +679,16 @@ fn make_data(
|
|||
|
||||
if html_config.mathjax_support {
|
||||
data.insert("mathjax_support".to_owned(), json!(true));
|
||||
} else if html_config.mathjax.enable {
|
||||
data.insert("mathjax_enable".to_owned(), json!(true));
|
||||
data.insert(
|
||||
"mathjax_source".to_owned(),
|
||||
json!(html_config.mathjax.source),
|
||||
);
|
||||
data.insert(
|
||||
"mathjax_config".to_owned(),
|
||||
json!(html_config.mathjax.config),
|
||||
);
|
||||
}
|
||||
|
||||
// This `matches!` checks for a non-empty file.
|
||||
|
|
|
@ -51,6 +51,24 @@
|
|||
{{#if mathjax_support}}
|
||||
<!-- MathJax -->
|
||||
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
{{else}}
|
||||
{{#if mathjax_enable}}
|
||||
<!-- MathJax -->
|
||||
{{#if is_print}}
|
||||
<script>
|
||||
MathJax = {
|
||||
startup: {
|
||||
pageReady: () => {
|
||||
return MathJax.startup.defaultPageReady().then(() => {
|
||||
window.setTimeout(window.print, 100);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
{{/if}}
|
||||
<script id="MathJax-script" async src="{{ mathjax_source }}/{{ mathjax_config }}.js"></script>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</head>
|
||||
<body>
|
||||
|
@ -304,6 +322,8 @@
|
|||
});
|
||||
</script>
|
||||
{{else}}
|
||||
{{#if mathjax_enable}}
|
||||
{{else}}
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
window.setTimeout(window.print, 100);
|
||||
|
@ -311,6 +331,7 @@
|
|||
</script>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
|
Loading…
Reference in New Issue