数学密集型学科中的无障碍开放教科书:挑战与解决方案
Accessible Open Textbooks in Math-Heavy Disciplines
面临的挑战
在许多数学密集型学科中,首选的写作平台是 LaTeX。它可以生成高质量的排版文档,并且能够很好地处理公式和数学图表。 实际上,数学、物理和计算机科学领域的每一位研究人员或讲师都精通使用它,并且它在这些核心学科之外也有广泛的用户群(例如,哲学和经济学)。
不幸的是,它只能生成 PDF 输出。PDF 不是一种无障碍的格式:它不能很好地缩放以在平板电脑或手机上显示,文本不会重排,它不包含语义信息(例如,什么是标题或什么是列表),图像、公式和图表只能以视觉方式访问。这给依赖材料的替代呈现方式(以其他颜色、文本大小、字体或非视觉格式,即音频或盲文)的读者,或者只是想在非打印页面大小的设备(例如,在智能手机或小型电子阅读器上)上访问材料的读者带来了困难。
一个部分的解决方案是以 HTML 格式提供内容。HTML 在处理无障碍方面比 PDF 更好,并且将 HTML 转换为其他格式的技术已广泛可用。HTML 也可以被专门为视力低下或失明的用户设计的屏幕阅读器软件访问,以及更简单的文本到语音 (TTS) 软件,许多视力正常的用户也依赖这些软件(例如,患有阅读障碍或多动症的人)。在数学密集型学科中,广泛依赖 LaTeX 和 PDF 仅用于生成 OER 构成了一个独特的挑战(例如,美国数学研究所列表上只有大约一半的教科书以 HTML 格式提供)。
以 HTML 格式提供材料以确保无障碍是所有 OER 的必要条件。对于数学密集型学科,以材料的 HTML 版本呈现数学公式提出了第二个也是一个困难的挑战。长期以来,数学公式一直给网页上的显示带来问题。早期的解决方案包括显示图片或使用特殊格式和字体重新创建公式作为文本。 现代的解决方案是 MathML,这是一种用于表示可以包含在 HTML 文档中的数学公式的特殊格式。MathML 并非所有 Web 浏览器都普遍支持。 最广泛的解决方案是网页包含 polyfill 浏览器扩展 MathJax 在网页中,它向用户显示 MathML。 MathML 是一种低级格式,不适合人类在其中编写公式。但是,存在从 LaTeX 公式表示法到 MathML 的良好转换实用程序,并且 MathJax 还可以直接显示嵌入在网页中的 LaTeX 公式。例如,代码 \int_{x=0}^\infty \frac{1}{x^2} dx 产生:∫∞x=01x2
而 MathML 表示是难以理解的(右键单击公式,选择“Show Math As > MathML Code”以查看它)。 MathJax 可以自己显示公式,显示用于生成它的 LaTeX 代码,或者生成它允许浏览器渲染的某种其他格式的代码(例如,MathML、HTML 或 SVG;右键单击公式,选择“Math Settings > Math Renderer”以查看差异)。
LaTeX 的替代方案
一种选择是从一开始就避免使用 LaTeX 作为编写平台,或者将现有的 LaTeX 代码转换为更容易转换为 HTML 的格式。以下是三个选项,它们都允许使用 LaTeX 表示法来输入数学符号和公式。
- Pressbooks 是一种基于 Web 的 OER 编写和发布工具,它支持 LaTeX 公式 并支持导出为 PDF 以进行打印。它建立在 WordPress 之上,因此从某种意义上说,它是 Web 优先的。虽然可以在 Pressbooks 项目中使用数学公式,但对于数学密集型学科来说,这不是一个流行的选择。 示例:A Concise Introduction to Logic(请注意,形式证明显示为图像,图像没有 ALT 标签,并且独立公式不使用 MathML 甚至 unicode 字符,例如,逻辑 and 符号表示为 caret ^,逻辑 or 表示为字母“v”)。
- PreTeXt 是一个用于以 XML 编写数学教科书的平台,并将 XML 源代码转换为其他格式(包括用于打印的 LaTeX、用于在 Web 浏览器上显示的 HTML 和用于在 Kindle 等电子阅读器上显示的 ePub)。PreTeXt 是最古老的开放发布解决方案之一,并且在数学家中很受欢迎。 对于开放教科书,可以免费获得转换为 PreTeXt 的帮助。 示例:Abstract Algebra
- Markdown 是一种简单的标记语言,可以使用 pandoc 包轻松地转换为其他格式(包括 HTML、LaTeX、PDF 和 Word)。R Markdown(及其扩展/后继者 Quarto)和 Bookdown 是用于编写和发布 Markdown 文档的流行界面(并在“底层”使用 pandoc 和 LaTeX)。可以使用简化的 LaTeX 代码包含数学公式和符号。由于与统计软件包 R 的紧密联系,此选项在统计学家、经济学家、心理学家和数据科学家中很受欢迎。 示例,例如:Modern Statistical Methods for Psychology, Odds & Ends
以上所有方法都有其优点和缺点。 根据项目的范围和复杂性以及所需的功能,将现有项目转换为例如 Markdown 或 PreTeXt 可能是一个可行的选择,尤其应针对新项目考虑。 Markdown 的一个显着优势是它可以轻松转换为其他格式(包括 LaTeX)。
使用上述方法的明显障碍是作者必须学习新的系统和/或语言以及使用不熟悉的工具。一个更显着的缺点是 LaTeX 生态系统非常庞大。 LaTeX(或至少其前身 TeX)已经存在了将近半个世纪。有许多软件包可用于帮助生成文档,从复杂的引用管理器到用于生成专用图表和数学公式复杂布局的软件包。 LaTeX 也易于扩展;作者可以非常轻松地定义自己的宏。 Markdown 或 PreTeXt 编写的文档几乎不具备这些功能,Pressbooks 中几乎没有。 转换整个现有教科书通常需要大量工作,部分原因是 LaTeX 轻松完成的许多事情都必须从头开始重新创建。
LaTeX 到 HTML 的转换
第二种选择是使用软件自动将 LaTeX 项目转换为 HTML。 由于 LaTeX 项目的复杂性和可变性,因此很少有好的转换实用程序。 我更喜欢的解决方案是 LaTeXML。 它是 LaTeX 的重新实现,但输出到 XML 而不是 PDF,并且可以将数学公式编译为 MathML。 LaTeXML 是 ar5iv 使用的:一个将 arXiv 上的所有内容编译为 HTML 的项目。
由于 LaTeXML 模拟了 LaTeX 的实际操作,因此它可以(在很大程度上)直接处理软件包和 LaTeX 编程。 它本身支持大量流行的软件包和类,但不支持的软件包可以使用 --includestyles 标志加载和“编译”。 这种支持并不完美(例如,许多反过来依赖 expl3[](https://ctan.org/pkg/expl3) 软件包的较新软件包尚无法 编译。)LaTeXML 正在积极开发中,并且可能会在可预见的未来不断改进并获得支持。 在任何情况下,由于许多常用的软件包已经支持或可以使用 --includestyles 标志,LaTeXML 可能是将现有 LaTeX 项目转换为 HTML 的工具的最佳选择。
LaTeXML 直接生成的输出在视觉上不是很有吸引力。 由于 HTML 输出不仅会被屏幕阅读器使用(其中视觉呈现是次要的),因此需要付出一些努力才能使用 CSS 设置 LaTeXML 生成的 HTML 的样式,以生成看起来有吸引力并在各种设备和浏览器上显示良好的网页(即,响应式 网页)。
一种可用的简单解决方案是 BookML,由利兹大学的数学家 Vincenzo Mantova 开发。 BookML 使用 LaTeXML 生成使用从 Bookdown 使用的样式修改的样式的网页。 LaTeXML 和 BookML 为作者提供了额外的功能,以便根据是使用 LaTeX 生成 PDF 还是使用 LaTeXML 生成 HTML 来提供不同的代码。 BookML 扩展了此功能,例如,通过添加将 HTML 代码直接添加到生成的网页中的可能性,或者将替代文本添加到通过 LaTeX 的 \includegraphics 命令以外的方式生成的图像。 BookML 还会自动生成项目的 SCORM 包,该包可以上传到学习管理系统(例如 Brightspace、Canvas 或 Moodle)。 这对于没有简单方法将生成的网站托管在服务器上的作者特别有用。 LaTeXML(但尚未 BookML)也可以生成 ePub。
案例研究:形式逻辑开放教科书
卡尔加里大学哲学系在其 PHIL 279 课程中向 700 多名学生(主要是计算机科学专业)教授符号逻辑。 在 Taylor Institute for Teaching and Learning 的支持下,我们改编了 P.D. Magnus 的开放教科书 forall x; 由此产生的开放教科书 forall x: Calgary 自 2017 年以来一直在 PHIL 279 中使用。卡尔加里版本现在也被广泛采用,并已被翻译成德语和葡萄牙语。
我于 2024 年使用 LaTeXML 和 BookML 将本文转换为 HTML。 转换为 HTML 的基本(无错误)转换很简单,大约需要一天的工作。 它主要涉及更改 LaTeXML 无法处理的 LaTeX 代码位。 大约需要一周的时间来微调 LaTeX 代码和 CSS,以便生成更好的 HTML 和视觉输出。 例如,用于生成列表的标记有时会导致生成的网页上出现奇怪的间距。 LaTeX 用于生成链接的机制有时也无法工作(通过 LaTeXML 运行时会生成不正确的链接或链接文本)。 这些问题中的许多是由我们开始使用的旧版 LaTeX 代码的怪癖引起的,对于具有使用标准软件包的干净源代码的 LaTeX 项目来说,这些问题是不必要的。
进行转换的动力来自辛辛那提大学可访问性中心的要求,该中心需要为使用此教科书的课程中的盲人学生提供便利。 我以此为契机,使 HTML 版本尽可能地易于访问,特别是使其与屏幕阅读器配合良好。
- 将
ALT文本添加到所有图表和图像。 - 为某些文本元素提供可访问的替代方案(例如,我们使用长下划线来表示句子中的空白,但是屏幕阅读器无法解释此长下划线)。
- 切换外来术语和名称的语言,以便屏幕阅读器可以用正确的语音发音。
- 开发形式证明的非视觉表示形式,并重写代码以生成它们,以便 LaTeXML 和 BookML 可以 a) 使用 CSS 在 HTML 版本上清晰地显示它们,并且 b) 屏幕阅读器可以以文本(即听觉)形式提供缺少的视觉信息。 PDF 中的证明是用
fitch[](https://ctan.org/pkg/fitch>)软件包生成的。 通过 LaTeXML/BookML 运行时,它们是使用fitchml.sty生成的,并使用fitchml.css在项目源中用 CSS 设置样式。 非视觉演示文稿在 forall x 的可访问性注释中描述。 (感谢 Patrick Girard 和 Audrey Yap 讨论如何以非视觉方式呈现证明。这篇文章顶部的图片就是一个例子。)
还有一些工作要做,并且结果尚未经过视力低下或失明的学生的实际测试,无论是他们自己还是在课程中使用这些材料的情况下。
陷阱和技巧
很难测试 OER 的 Web 版本的可访问性。 有一些基本工具(例如 WAVE)会自动检查各种事项,例如,对比度和颜色是否适合色盲读者,图像是否具有 ALT 标签等。 LaTeXML 生成的代码通常在可以自动检查的所有内容(开发人员考虑到了可访问性)以及 OER 作者可用的资源提供的任何指导(例如,BCcampus Open 可访问性工具包)方面都做得很好。 但是,对于没有可访问性培训或经验的作者来说,详细的测试是一个挑战。
在您拥有的屏幕阅读器(例如,MacOS 上的 VoiceOver 或 Windows 上的 Narrator)中可能有效的方法可能与其他屏幕阅读器无效,可能在一种版本上有效,但在其他版本上无效,并且用于使其工作的任何黑客都可能在其他版本上失效。 对于非专家来说,在各种辅助技术上进行测试几乎是不可能的:您需要几台不同的计算机,并且能够在它们上面安装各种辅助技术,其中一些不是免费的。 如果没有单独的硬件,测试盲文至少需要了解盲文。
也就是说,通常最好使用有据可查的最佳实践。 (例如,我最初使用 aria-label 标签来为事物的发音方式提供明确的提示。 但是对 aria-label 的支持是不一致的。)
在微调代码和决定各种设置时,我感到自己被拉向了相互竞争的方向,一方面是为随意使用 TTS 扩展程序的读者提供最佳体验,另一方面是不降低依赖于真正屏幕阅读器(如 JAWS 和 NVDA)的用户的体验。 TTS 扩展程序往往对发音 unicode 字符、带有辅助替代文本的 MathML 和表格的支持较差。 以一种方式做事可能会使 Mac 上的 VoiceOver 或 Windows Narrator 读出公式和特殊符号,但随后会阻止 NVDA 正常工作。 我也很难处理可访问性建议,并且无法从我们的可访问性服务中心等校园资源获得建议或支持。
无论如何,诱骗屏幕阅读器以正确的方式发音是一种徒劳无功的行为,并且可能会产生意想不到的副作用。 (请参阅 Ben Myers 的 The Curious Case of “iff” and Overriding Screenreader Pronunciations)。 通常最好“顺其自然”,但在可访问性页面上提供指导(这是 forall x 的一个页面)。 屏幕阅读器用户习惯于更改其首选软件的设置以修复问题。 您可以通过让他们知道要注意什么来提供帮助。 一个好的屏幕阅读器可以用其他产生更好发音的文本替换文本。 例如,根据语音合成器,公式中的字母“A”可能会发音为 schwa(即,像“uh”)。 MathJax 会告诉屏幕阅读器将符号“A”读作“upper A”,并且用户可以在任何地方将其替换为“upper Eh”。