找回密码
 快速注册
搜索
查看: 11|回复: 0

将一本包含大量数学和代码的教科书放到网上

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2025-1-19 08:42 |阅读模式
tobydriscoll.net/blog/putting-a-math-code-heavy-textbook-online/ 正如詹姆斯·索默斯在2018年《大西洋月刊》中指出的那样,PDF(便携式文档格式)本质上是纸张的模拟,应该被视为以电子方式呈现技术材料的过时方法。

索默斯介绍了两种替代方案:MathematicaJupyter笔记本。两者都提供语义标记以及计算交互性。然而,Mathematica是一个封闭的专有系统,这限制了它作为出版平台的吸引力。而且,不需要花费太多时间就可以发现Jupyter笔记本是面向短小的独立文档的。

有一个中间地带:老式的HTML(超文本标记语言),加上一点MathJax用于公式。它本身不是交互式的,但资源占用少,可以在几乎任何设备上显示。因此,当我决定将我与Rich Braun合著的教科书《数值计算基础》放到网上时,我的问题变成了:如何以HTML形式编写包含大量数学和代码的书籍?

现在,原始教科书是使用大量LaTeX文件和MATLAB脚本和函数制作的。为自己辩护一下,我在MATLAB发布功能还很酷的时候拼凑了所有这些东西。我的脚本实际上运行并在每次生成PDF时包含所有实际代码。当然,我认为,正确的解决方案应该是直接以HTML而不是PDF发布。对吧?

不对。我甚至懒得链接我尝试过的所有LaTeX到HTML转换器,因为我已经为它们付出了足够多的时间。这些工具并不是由不聪明的人制作的,在某种程度上它们确实有效。只是这似乎是一个极其困难的问题。部分问题在于TeX/LaTeX的一些巨大优势——可编程性和可扩展性——需要巨大的努力来复制。这只是一个猜测,但我也推测TeX的整个基础——对外观的绝对和精确控制——与HTML的“让浏览器渲染”模型是对立的。

一旦我接受了我的珍贵LaTeX文件必须被移植到其他形式的想法,我开始思考目标格式应该是什么。我曾短暂考虑过使用Jekyll,我过去曾用它写过课程笔记。它相当简单,但对于书籍项目来说不够强大。

接下来是PreTeXt,我在今年春天用它写了LA/DE课程的课程笔记。这个项目由非常关心将数学放到网上的人维护,并且有一本基于它的优秀免费线性代数教科书。然而,PreTeXt要求直接用XML编写,这对初学者来说并不容易。更糟糕的是,它没有包含代码的机制,除了Sage。Sage很棒,但不适用于这个项目。我通过黑客手段和拼凑方式在我的PreTeXt笔记中加入了一些简短的MATLAB代码,但对于我们需要的教科书级别的代码集成来说,这是不可行的。

几乎是偶然地,我找到了一个更适合我需求的解决方案:Jupyter Book。它允许用Markdown或Jupyter笔记本,或两者混合编写内容。它支持MathJax公式、交叉引用、脚注、索引和参考书目。Jupyter Book建立在Sphinx之上,这使我能够加入一个定理扩展。而且它生成静态HTML内容,但你可以指示它在每个笔记本页面上包含一个链接到交互式Binder实例

你可以亲自查看结果(在撰写本文时)FNC的前6章

这实际上是一本书的直接导入到在线格式。我还没有启用交互性,因为Julia包加载时间非常慢。将来,利用这种格式更大程度上包括例如视频讲座和演示是有意义的,我相信还会有进一步的调整。在线书籍的一大优点是它永远不会“完成”;它可以不断改进。这也是一个坏处,就我的工作生活平衡而言

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:19

Powered by Discuz!

× 快速回复 返回顶部 返回列表