# JavaScript改编

> 译者： [https://sicp.comp.nus.edu.sg/chapters/127](https://sicp.comp.nus.edu.sg/chapters/127)

 <matter># 背景

像Source Academy一样，SICP的JavaScript改编是开源社区的努力。 制作这些网页和PDF版本所需的软件和数据包含在资源库 [Source Academy / sicp](https://github.com/source-academy/sicp) 中，并且与许多其他开源软件项目一样，在此资源库中也进行了改进，扩展和讨论。 。

Martin Henz从2008年开始将SICP转换为JavaScript。他从Gerald Jay Sussman获得了教科书的原始![%5Crm%5CLaTeX](img/a6a2f08930874b5e635992a6c10ab54b.jpg)来源，并将其转换为XML格式，从而使他可以将原始来源以及JavaScript改编内容保留在一个文件中。 。 他开发了一种处理系统，可以使用XSLT从XML生成HTML，从而产生了JavaScript改编的第一个版本。

# 适用于移动设备的网络版

SICP JS的[移动友好型网络版](https://sicp.comp.nus.edu.sg)由刘航（Lang Hang）在2017年设计和实施，然后由冯P标（Feng Piaopiao），何新月和王谦（2020）于2020年进一步开发。公式中保留了公式 HTML文件，并使用MathJax系统由读者的浏览器即时排版。 PDF版本由Chan Ger Hean使用Node.js开发，电子书版本由Jolyn Tan使用Node.js和pandoc开发，两者均于2019年开发。

在教科书中，程序片段通常需要其他程序片段。 为了收集和执行必要的程序，xml文件中相应的 `SNIPPET` 标签包括 `REQUIRES` 标签。 Rails服务器使用这些标签来组装可执行程序。

# PDF版

SICP JS的 [PDF版本](https://sicp.comp.nus.edu.sg/sicpjs.pdf)由Chan Ger Hean在2019年设计和实现。GerHean决定使用Node.js从XML源生成文件。 然后使用PdfLaTeX系统对文件进行排版。

# 电子书版

SICP JS的[电子书版本](https://sicp.comp.nus.edu.sg/sicpjs.epub)由Jolyn Tan在2019年设计和实现。Jolyn决定使用Node.js从XML源生成文件。 然后使用pandoc系统将文件处理为EPUB 3格式。

Figures

这些数字改编自Andres Raba的SICP 的HTML5 / EPUB3版本。 这些数字已根据“知识共享署名-相同方式共享4.0国际许可[（cc by-sa）](https://creativecommons.org/licenses/by-sa/4.0)”许可。 Tobias Wrigstad使用Inkscape和免费使用sed手动完成了数字的JavaScript改编。</matter>