cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 6577|回复: 1

[Nspire] 【整理】不用模拟器,将 TXT 转换为 TNS

[复制链接]
发表于 2016-10-2 15:29:28 | 显示全部楼层 |阅读模式
本帖最后由 Arnie97 于 2016-10-2 15:42 编辑

TL;DR
  • 把 UTF-8 编码的文本文档与附件中各程序置于同一文件夹中。
  • 打开附件中的 TXT2XML,把要转换的 TXT 拖入窗口。
  • 点击「2TNS」按钮,在同一目录下得到 TNS 文件。
  • 部分中文文档可能无法正确转换,路径中含空格的文档可能无法正确转换。
  • 为了方便大家测试,附件中提供了一段能完美转换的文字。


正文
本来今天打算写一个将 TXT 转换为 TNS 的工具,搜索相关资料后发现已经有人造过这方面的轮子了,我来搬运一下。

根据 Hackspire 上对 TNS 文件格式的介绍,早期的 TNS 就是 Documents.xml、ProblemX.xml 的 ZIP 包,后期也是在 ZIP 文件结构上进行的修改。说句题外话,这和 M$ Office 2007 之后采用的 OOXML 格式有异曲同工之妙。
Documents.xml 中记录着 Nspire 文档中「问题」的数量和各种文档设置信息,而各个 ProblemX.xml(X 为 1~50 的整数)记录着每个「问题」中的具体内容。Hackspire 上给出了两个文件的示例:
  • https://hackspire.org/index.php/Document.xml
  • https://hackspire.org/index.php/ProblemX.xml

根据这一点,ndless 的开发者们开发了命令行工具 Luna(https://ndlessly.wordpress.com/2011/09/19/luna-updated-for-third-party-tns-document-generation/),它可以将 ProblemX.xml 或 Lua 脚本转换为 TNS 包。

而为了方便阅读 TXT 文档,Omnimaga 论坛上的 SpiroH 写了 TXT2XML 和 XML2TNS 两个工具(https://www.omnimaga.org/ti-nspire-projects/xml2txt-xml2lua-txt2xml-lua2xml-and-2tns/)。除了顾名思义的 TXT 转 ProblemX.xml 功能外,该工具会自动调用同一目录下的 Luna 完成 ProblemX.xml 转 TNS 的操作,从而方便的实现 TXT → XML → TNS 的一条龙转换。

中文支持方面,Luna 在 wtof1996 的帮助下已经正确支持 Unicode(https://ndlessly.wordpress.com/2012/06/26/yet-another-luna-update-oclua-for-3-2/)。
而 TXT2XML 完全不支持 Unicode,有时候会凭借 UTF-8 与 ASCII 的向下兼容性歪打正着的转换为合法的 TNS 文档,有时候则会生成无法打开的 TNS 文档。此外,这个程序存在文件路径中的空格处理不当、BOM 处理不当、没有提供分页功能等诸多不足,且用到了 Win32 API 解析 XML,无法跨平台使用。为此,我可能会重写该程序,敬请期待。

luna-v0.3a-with-txt2xml.zip

689.05 KB, 下载次数: 291

发表于 2016-10-2 16:07:52 | 显示全部楼层
楼主辛苦了,支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-22 06:15 , Processed in 0.039959 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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