编辑,原始问题如下 - 我想将问题简化为以下内容:
- 获取包含公式中的矩阵和向量的 LaTeX 输入文件并使其可访问的最佳方法是什么?
下面我描述我到目前为止所做的工作,包括将方程式转换为带有 MathML 的网络文档。
我现在知道 Firefox 原生支持 MathML,但 Chrome 不支持,这让我有些困惑。
我非常感谢任何答案/建议/评论 - 我非常感谢迄今为止的所有评论
从这些中我了解到,MathML 可以在 Chrome 等不支持 MathML 的浏览器上使用 MathJax 呈现,(尽管我并不真正了解如何做到这一点。)
原始帖子。
首先,请注意以下与此主题相关的先前问题的几点
我取得了进步,非常感谢以下问题/答案的贡献者;
我也知道
我知道无障碍对于不同的人来说有着不同的含义。
我在这里询问的具体问题是关于使方程式变得易于理解 - 特别是在涉及方程式时生成一些可以被屏幕阅读器读取的输出。
我有几个由 LaTeX 文件生成的 PDF 文档,其中包括矩阵、向量等方程式。
我希望能够生成无障碍或者至少从相同的 LaTeX 文件中提取这些文档的更易于访问的版本。据我所知,一个好方法是使用 LaTeX 到 MathML 转换器。我这样做的假设是,如果 MathML 几乎是方程式可访问性的标准。这是我从网络搜索中找到的。
如果我可以将 LaTeX 文档中的方程式转换为 MathML 标准,那么屏幕阅读器应该能够读取 MathML 方程式,这至少可以提高文档的可访问性。
我已经生成了文件math_test.tex
来测试该过程如下所示在这个问题的底部。
我已使用以下命令来生成 web 文件...
mk4ht mzlatex math_test.tex "html,mathplayer"
latexml math_test.tex |latexmlpost --dest=math_test.html -
(使用 mk4ht 版本 1.1 和 latexml 版本 0.8.4 - 均在 debian linux 上 - mk4ht 可能有点旧,但 latexml 是最新的,因为 debian 存储库中的 latexml 似乎存在问题已知问题)
结果有点多变,并且主要取决于我用来查看文件的 Web 浏览器... - 下面的多个屏幕截图显示了结果,源 LaTeX 代码也在下面。 - 简而言之,Firefox 做得很好,但 Chrome 似乎失去了“垂直间距”。对我来说,Latexml 比 mk4ht 更好,但我知道 mk4ht 可能存在版本问题
我的问题...
- 使用 latexml 和 Firefox 浏览器可以获得最佳效果 - 我是否做错了什么导致不同的浏览器显示不同的结果?火狐latexml 版本看起来最好,但我需要尝试让它无法使用铬合金如果有意义的话,使其可访问(见下文)
- 我是否遗漏了什么 - 您对如何生成更易于访问的文件(尤其是具有可读方程式的文档)有更好的建议吗?
不确定为什么网络浏览器的行为如此不同,但显然 Chrome 是一个问题,而且我还没有测试过 IE/Edge/Safari... - 我想知道是否每个人都在为 Firefox 开发 lateml/mk4ht - 对此的任何想法都会很有趣。鉴于 Firefox 的效果要好得多,我想知道我是否需要尝试在 html 的开头放置合适的条件/if 语句,以防止它们被其他网络浏览器读取 - 或者可能只是加载 pdf 文件。
最佳匹配 - (0.8.4)在 Firefox 中latexml
提供以下文件.html
latexml
.html
(0.8.4)在 chrome 中给出以下文件
mk4ht
.xht
(v1.1)在 Firefox 中提供以下内容
mk4ht
.xht
(v1.1)在 Chrome 中显示以下内容
LaTeX 源文档
\documentclass[12pt,a4]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
\centerline{\textbf{\large{Mathematical expressions}}}
\begin{enumerate}
\item Vectors $\mathbf u$, $\mathbf a$ and $\mathbf b$:
\begin{align}
\mathbf u &= \begin{pmatrix} -2\\-1\end{pmatrix}
& \mathbf a &= \begin{pmatrix} -3\\1\end{pmatrix}
& \mathbf b &= \begin{pmatrix} 1\\3\end{pmatrix}
\end{align}
$\mathbf u = \alpha \mathbf a + \beta \mathbf b \qquad$ Norm:$|| \mathbf u||$.
\begin{align}
\hat{\mathbf u} &= \lambda \mathbf a = {\langle\mathbf a, \mathbf u\rangle \over \langle\mathbf a, \mathbf a\rangle} \mathbf a
= {\begin{pmatrix}-3\\1\end{pmatrix}\cdot\begin{pmatrix}-2\\-1\end{pmatrix} \over \begin{pmatrix}-3\\1\end{pmatrix} \cdot \begin{pmatrix}-3\\1\end{pmatrix} }\mathbf a = { 5 \over 10 }\mathbf a =
{ 1 \over 2 }\mathbf a = \begin{pmatrix}-1.5\\0.5\end{pmatrix}
\end{align}
\item Matrices
\begin{align*}
\begin{pmatrix}1&3+2i\\3-2i&4\end{pmatrix} &&
{\rm det}{\mathbf A}&=
\begin{vmatrix}3&4&7\\2&-2&1\\1&2&5\end{vmatrix}
&
\begin{vmatrix}x&1&1\\1&x&1\\1&1&x \end{vmatrix}
&= (x-1)^2(x+2)
\end{align*}
\item $ a_1 \ge 0 \qquad p(x) = p_0+p_1x+p_2x^2+p_3x^3+p_4x^4+p_5x^5$
\item Transformations:
\begin{align*}
T:\mathbb R^3 &\rightarrow \mathbb R^2& \text{where}\quad
T \begin{pmatrix}a_1\\a_2\\a_3\end{pmatrix} = \begin{pmatrix}a_1a_2\\a_1a_3\end{pmatrix}
\end{align*}
\begin{align*}
T:P_3 &\rightarrow M_{22} & \text{where}\quad
T \begin{pmatrix}a_0+a_1x+a_2x^2+a_3x^3\end{pmatrix} = \begin{pmatrix}a_1&a_2\\a_3&a_1-a_0\end{pmatrix}
\end{align*}
\end{enumerate}
\end{document}
答案1
我以为不久前我修复了围栏,当时我删除了 MathML 配置中弃用元素的大多数实例。应该改用。我忽略的是整个表达式必须用括起来的,否则围栏括号无法正确呈现。
现在它应该在 TeX4ht 源中得到修复。这是更新的 mathml.4ht您可以尝试一下。
顺便说一句,最好使用
make4ht math_text.tex "mathml,mathjax"
make4ht 对生成的 HTML 进行后处理,并修复一些问题,尤其是 MathML 中的问题。mathjax
选项将加载 MathJax,它修复了许多渲染问题。例如,即使没有修复,它也可以正确显示我们错误的 MathML 代码。
这是在没有 MathJax 的 Firefox 中文件的呈现方式:
这是使用 MathJax 的:
您可以看到它使用了更漂亮的字体并且它也可以在 Firefox 以外的其他浏览器中运行。
答案2
一个选择是写降价作为.Rmd
文件并编译RStudio
成HTML
文件。Rmarkdown
工作流程如下:
在文件的下游.Rmd
,所有处理均自动进行RStudio
。
这是 Rmd 文件:
---
title: ""
author: ""
date: ""
output:
html_document:
pandoc_args: "--mathml"
keep_tex: true
header-includes:
- \usepackage{amsmath}
- \usepackage{amssymb}
---
## Mathematical expressions
1. Vectors $\mathbf u$, $\mathbf a$ and $\mathbf b$:
\begin{align}
\mathbf u &= \begin{pmatrix} -2\\-1\end{pmatrix}
& \mathbf a &= \begin{pmatrix} -3\\1\end{pmatrix}
& \mathbf b &= \begin{pmatrix} 1\\3\end{pmatrix}
\end{align}
<br>
$\begin{aligned}
\quad \mathbf u &= \alpha \mathbf a + \beta \mathbf b \qquad \text{Norm:}|| \mathbf u||
\end{aligned}$
<br>
\begin{align}
\hat{\mathbf u}
&= \lambda \mathbf a \quad
= {\langle\mathbf a, \mathbf u\rangle \over \langle\mathbf a, \mathbf a\rangle} \mathbf a
= {\begin{pmatrix}-3\\1\end{pmatrix}\cdot\begin{pmatrix}-2\\-1\end{pmatrix} \over \begin{pmatrix}-3\\1\end{pmatrix} \cdot \begin{pmatrix}-3\\1\end{pmatrix} }\mathbf a
= { 5 \over 10 }\mathbf a
= { 1 \over 2 }\mathbf a = \begin{pmatrix}-1.5\\0.5\end{pmatrix}
\end{align}
<br>
2. **Matrices**
\begin{align*}
\begin{pmatrix}1&3+2i\\3-2i&4\end{pmatrix} &&
{\rm det}{\mathbf A}&=
\begin{vmatrix}3&4&7\\2&-2&1\\1&2&5\end{vmatrix}
&
\begin{vmatrix}x&1&1\\1&x&1\\1&1&x \end{vmatrix}
&= (x-1)^2(x+2)
\end{align*}
<br>
3. $\begin{aligned} a_1 \ge 0 \qquad p(x) = p_0+p_1x+p_2x^2+p_3x^3+p_4x^4+p_5x^5 \end{aligned}$
<br>
4. **Transformations:**
\begin{align*}
T:\mathbb R^3 &\rightarrow \mathbb R^2& \text{where}\quad
T \begin{pmatrix}a_1\\a_2\\a_3\end{pmatrix} = \begin{pmatrix}a_1a_2\\a_1a_3\end{pmatrix}
\end{align*}
\begin{align*}
T:P_3 &\rightarrow M_{22} & \text{where}\quad
T \begin{pmatrix}a_0+a_1x+a_2x^2+a_3x^3\end{pmatrix} = \begin{pmatrix}a_1&a_2\\a_3&a_1-a_0\end{pmatrix}
\end{align*}
语法与写入文件中的语法非常接近。在 YAML 标头中.tex
切换即可获得相应的 pdf。html_document
pdf_document
这是 HTML 输出:
为了使用 编写 HTML mathml
,我们向 添加了--mathml
传递给 的参数pandoc
。这就是我们在 HTML 文件顶部看到的内容:
在这个工作流程中,knitr
生成一个.tex
文件。我们可以看到,它很普通,与楼主的原始代码非常相似latex
,只是添加了环境等元素enumerate
。
\begin{document}
\centerline{\textbf{\large{Mathematical expressions}}}
\begin{enumerate}
\item Vectors $\mathbf u$, $\mathbf a$ and $\mathbf b$:
\begin{align}
\mathbf u &= \begin{pmatrix} -2\\-1\end{pmatrix}
& \mathbf a &= \begin{pmatrix} -3\\1\end{pmatrix}
& \mathbf b &= \begin{pmatrix} 1\\3\end{pmatrix}
\end{align}
$\mathbf u = \alpha \mathbf a + \beta \mathbf b \qquad$ Norm:$|| \mathbf u||$.
\begin{align}
\hat{\mathbf u} &= \lambda \mathbf a = {\langle\mathbf a, \mathbf u\rangle \over \langle\mathbf a, \mathbf a\rangle} \mathbf a
= {\begin{pmatrix}-3\\1\end{pmatrix}\cdot\begin{pmatrix}-2\\-1\end{pmatrix} \over \begin{pmatrix}-3\\1\end{pmatrix} \cdot \begin{pmatrix}-3\\1\end{pmatrix} }\mathbf a = { 5 \over 10 }\mathbf a =
{ 1 \over 2 }\mathbf a = \begin{pmatrix}-1.5\\0.5\end{pmatrix}
\end{align}
\item Matrices
\begin{align*}
\begin{pmatrix}1&3+2i\\3-2i&4\end{pmatrix} &&
{\rm det}{\mathbf A}&=
\begin{vmatrix}3&4&7\\2&-2&1\\1&2&5\end{vmatrix}
&
\begin{vmatrix}x&1&1\\1&x&1\\1&1&x \end{vmatrix}
&= (x-1)^2(x+2)
\end{align*}
\item $ a_1 \ge 0 \qquad p(x) = p_0+p_1x+p_2x^2+p_3x^3+p_4x^4+p_5x^5$
\item Transformations:
\begin{align*}
T:\mathbb R^3 &\rightarrow \mathbb R^2& \text{where}\quad
T \begin{pmatrix}a_1\\a_2\\a_3\end{pmatrix} = \begin{pmatrix}a_1a_2\\a_1a_3\end{pmatrix}
\end{align*}
\begin{align*}
T:P_3 &\rightarrow M_{22} & \text{where}\quad
T \begin{pmatrix}a_0+a_1x+a_2x^2+a_3x^3\end{pmatrix} = \begin{pmatrix}a_1&a_2\\a_3&a_1-a_0\end{pmatrix}
\end{align*}
\end{enumerate}
答案3
根据https://dlmf.nist.gov/LaTeXML/manual/usage/usage.single.html#SS0.SSS0.P5,你可以将选项传递--javascript=LaTeXML-maybeMathJax.js
给 latexmlpost,如果浏览器不支持 MathML,它将调用适当的 MathJax 库。更具体地说,调用
latexml myfile --dest=myfile.xml
latexmlpost --javascript=LaTeXML-maybeMathJax.js myfile.xml --dest=myfile.html
加载提供的 javascript 文件,该文件使用配置加载 cloudflare cdn MathJax MML_HTMLorMML
。在 Chrome 中,我最终得到: