吐槽一下MC的电子书(内容较多,各位慢慢读哈)
mathcad吧
全部回复
仅看楼主
level 12
朱老剑客 楼主
试着做了一个,花了大概30分钟看“作者参考资料”,花了1个小时就做了一个……原来一直以为在MC里做电子书是很高大上的事情,实际做起来,怎么说呢?如果仅仅是简单的电子书,比wiki和PKM要容易;而如果要加上索引,做成可以对关键内容进行搜索的电子书,就比较麻烦了。
MC有两个作用:
一是计算工具,可以进行简单或者复杂的计算,这个貌似是大家都在用的,或者说在很多人看来,MC仅仅就是一个计算软件;
二是知识管理软件,这只有企业级的用户,或者电子书作者才会体会到吧——现在感觉这恐怕才是MC的真正面目。
嗯,我感觉很多单位使用MC做计算书,实际上仅仅是产生了计算的工作表,顶多算是通过相对引用把一系列工作表做成一个整体,可以在不同的工作表之间进行跳转,实际上如果稍作加工成为电子书的话,可能第一次的编辑时间会很长——MC的电子书对格式什么都比较讲究,在“作者参考资料”里关于“什么才是合适的电子书格式”单独安排了一章,其实你也不必完全按照它的建议去做,只是如果完全采纳它的建议的话,做出来的电子书会很好看,或者说比较适于阅读和重复利用——之后就是简单的复制、修改了。
MC具有很强的外链、内链、相对引用\绝对引用、OLE对象操作等等功能,仅仅做成数学计算工作表确实有些浪费了。嗯,不过MC版本的PKM或者PIM也有它的软肋——就我这段时间学习的各种可以整合知识的软件来看,这恐怕是绝大多数类似软件的软肋——搜索功能很差劲,MC提供了“索引”可以搜索电子书中的重要的知识点,而一般的ctrl+f页面内搜索也不会自动生成list。(相较之下,wiki的灵魂是wiki字,zim的灵魂是tag,能够充分的利用正则表达式来对电子书文件夹里的所有全文进行搜索并给出list的软件真的太少了。)
实话说我也不会完全依靠MC的电子书系统来整合自己的工作表的,其他的都还好说,主要是“制作索引”这个步骤太麻烦了!但如果没有索引的话,MC的电子书就仅仅是一大堆工作表的打包工具,也就没有太大的意义了。
但有一点可能是以后会经常用到的,就是如果我用MC开发软件的话,用这个电子书做成函数说明文件还是很不错的——就像那4个扩展包的样子——而且所有的可引用.xmcd或.mcd文件在编写电子书的过程中都被很严谨的格式化了,对于统一的引用也是有好处的。
下面说说怎么做这个电子书吧,原文是英文,我自己做过了一遍,也发现MC自带帮助里有些错误,这里说说我实际怎么做的。
先解释一下电子书的样子:
注意上面的工具条:
回到电子书封面,对应.hbk文件中的SPLASH,如果在.hbk中不给出这个变量的话,打开电子书点击这个图标时什么也不会发生。
打开地址栏,MC的电子书界面实际上是当年Mathsoft公司在IE5.0的基础上开发的网络浏览器,而Mathcad的所有工作表都被定义为是一个网页,在没有上服务器的时候,它就是基于本地硬盘的静态网页,嗯,所以我们在操作MC工作表里的区域的时候多少都有些像是在用DreamWaver。
这里再多说两句,在MC15M030中的“作者参考资料”中的“发布html网页”一章里还提到了Calculation Server,可以将MC工作表挂在服务器上实现通过IE浏览器来进行计算,但是这回我看M045的帮助文件里就直接把Calculation Server部分的内容给删掉了,也就是说在M045中仅仅只能输出类似于pdf文档的静态页面了——实际上Calculation Server的功能在MC12的时候就消失了,不过一直到MC14仍旧可以通过挂在Calculation Server上实现网络上的实时计算(Ochkov先生最后的几个著名的热工水力的计算表就是用MC14挂在他的Calculation Server上的。),到了MC15的M040版彻底不再支持Calculation Server,因为MC11的Calculation Server是基于msxml4.0构建的,而M040使用的是msxml6.0,Calculation Server的版本不能向上兼容。M040的相关帮助我没有看,可能在M040的时候,PTC就已经把这方面的帮助内容给删掉了吧。
呵呵,再补充两句,以前有些吧友问过,甲方的电脑里没有安装Mathcad,我们自己编写的计算书在他们的电脑里打不开,他们也就看不到我们的计算过程了,嗯,其实可以把MC另存为pdf或者html文件,这样只要有pdf浏览器或者IE浏览器就可以看到你的工作表了。
回到前一个视图。
进入后一个视图。
上一章节。
下一章节。这两个与TOC是有关系的。
历史记录列表,里面记录了你都浏览过这个电子书的那些章节,从这个列表里可以更快速的进行跳转。
搜索电子书,就是通过“索引”文件找到自己关心的章节,然后点击章节既可实现跳转。
复制。
保存。这是MC对电子书的一种保护机制,如果你对电子书进行了修改的话,此时直接退出,MC不会提醒你是否保存修改,然后当你再次打开电子书的时候,你看到的样子仍旧是作者发布时给出的样子。如果非要进行修改,就需要在修改之后点击这个保存,或者按ctrl+s,但此时弹出来的页面是“另存为”,也就是说允许你修改并另存成其他文件,但原书的内容仍然是不会修改的。
这里还是要多说两句,在MC的“工具”菜单中有一个“保护工作表”,给出了3了保护级别,“文件”“内容”“编辑”,并让作者给出保护密码。“文件”级别,就是需要使用密码才能打开文件;“内容”级别,就是需要使用密码才能复制、剪切文件中的区域;“编辑”级别,是需要密码才能对工作表进行编辑,比如说修改某个变量,给某个常量重新赋值。MC的区域是默认“防止区域被编辑”的,但这个选项仅在“保护工作表”功能启动的时候才有效用。在启动了“保护工作表”的前提下,如果希望用户可以改变其中某些区域赋值,那就在这个区域的“属性”中取消“防止区域被编辑”选项就可以了。
更神奇的问题是,这个保护工作表的密码是可以破解的!用一般的破解rar、zip文件密码的软件就可以破解,尤其是.xmcdz文件的密码,它本身就是一个zip文件,相当没有密码能力可言。但是呢!?MC的区域保护密码是无法破解的!因为它不存在与xml文件内,也不是hex格式,到底是什么我问过好几家大牛,他们都说不清,但就是没办法破解!没有MD5,没有Hash,没有Shell,连原始的xml文件中都找不到任何密码的踪影,什么都没有,可没有密码就是打不开。多特么神奇!一个MC里有两套密码管理机制,而区域保护密码机制给人的感觉就是胡添出来的。
打印。
调出Mathcad的help。
首先是准备.hbk文件,这个文件也很奇特,实际上它就是一个.txt文件改了一个文件名,但当把扩展名改为.hbk文件之后,你用文本编辑器(多牛逼的都可以)是无法通过“打开”命令直接打开这个文件的,系统会提示你“这个不是文本文件”,那么怎么打开呢?有两个方法:
(1)首先你得安装一个高级一些文本编辑器,最好是可以编辑hex文件的,然后让这个文本编辑器与你的右键进行系统级的关联,然后右键点击那个.hbk文件,选择这个文本编辑器,就可以打开了。
(2)把.hbk文件的扩展名改为.txt,然后双击……
MC12以及其之后的所有MC根目录里的文本文件——.txt,.hbk什么的——都是用unicode编码编写的,所以你在编写.hbk和之后的.txt文件的时候一定要小心,要保存为unicode编码——我记得Win7中文版的默认记事本文件编码是GB2312,这个在MC中是认不出来的。而MC11以及其之前的文本都是用ASCII编写的,用任何编辑器都可以打开,保存,没问题。
.hbk文件是一个有固定格式的文件,格式的规律如下(使用.txt文件编辑):
“.”代表元数据,关键是path部分不要写错,其他的错一点儿也无所谓。
“;”代表注释,不会被编译,随便写什么话都可以。
格式呢,大概是这样的:
.version 14
.title xxx
.noscriptwarning
.path xxx
.path xxx\xxxx
……
SPLASH xxx1.xmcd : xxx1
about1 xxx1.xmcd : xxx1
about2 xxx2.xmcd : xxx2
overview xxxx.xmcd : xxxx
TOC xxx3.xmcd : xxx3
xxx4 xxx4.xmcd : xxx4
xxx5 xxx5.xmcd : xxx5
……
解释如下:
(1)第1行是声明电子书所使用的计算引擎,这个在MC14之前的版本中很重要,但是在MC15中就无所谓了,因为MC15可以打开所有.xmcd和.mcd文件,无所谓什么计算引擎的指定了,不管你声明了什么计算引擎,用的都是version 14的引擎。
(2)第2行是声明电子书的名称,这个名称一定要和.hbk文件名字和包含相应的MC工作表的文件夹的名字相同,也就是说这3个名字是一个名字,否则在之后的索引编译中就会报错。
(3)第3行是告诉MC不要为自己工作表里的VBS插件代码报警,如果你的工作表里根本没有用到VBS插件的话,这一条也就没有必要写了。当然,如果你要用VBS编一个宏病毒的话,这句声明就让你顺利达到捣乱的目的。
(4)第4行给出包含你的MC工作表的文件夹路径。如果使用path开头呢,就可以使用相对路径了,如果不用path开头,就要把绝对路径给贴上,但不管是你写了相对路径还是绝对路径,在你完成了索引编译之后,MC都默认的是相对路径,也就是说这个声明仅影响到索引编译(如果你没有编译索引的话,还会影响到其他用户的使用(他们不一定会把电子书文件放在你的绝对路径所指定的文件夹里))。
比如说电子书中所包含的MC工作表我给打包之后放在了C:\program files\mathcad\mathcad15\handbook\xxx\中了
那么我写绝对路径就是:
.C:\program files\mathcad\mathcad15\handbook\xxx\
使用path呢,就是:
.path xxx
然后还要给出子目录的路径,相对路径是这样的:
.path xxx\xxxx1
.paht xxx\xxxx2
嗯,不过呢,这第(4)行声明路径的步骤貌似不是必须的,至少我看MC自带的所有.hbk文件都没有声明路径。
(5)SPLASH声明是一定要放在第1位的,这是你的电子书封面,如果你的电子书没有封面,那也就不用声明了。
(6)TOC声明很重要,不能没有,如果不给出TOC的话,你打开电子书之后就是一张白板,什么内容都没有,也就是说你必须要为你的电子书制作一个目录页,然后使用超链接把一系列的MC工作表联系起来。
(7)about、overview声明可有可无,这相当于一本书的引言、前言、概述,这两个声明是放在TOC之前还是放在TOC之后,根据你的个人喜好而言,这些工作表在,hbk中所处的位置也仅是影响到索引的顺序,但索引文件还可以进一步编辑,所以放在哪里无所谓的。
(8)再之后就是正文的一系列工作表了。
在这里可以看到每个.xmcd文件的声明都是3段,大概格式是:
aaa bbb.xmcd : ccc
其中aaa是MC识别用的文件名,bbb是实际工作表文件名,ccc是当你鼠标处在链接上时在状态栏中所反映出来的字符串。aaa、bbb、ccc可以不完全相同,但为了方便编辑和修改,我觉得还是尽量一致比较好。
注意在“:”前后都要有空格!而且是半角空格,也就是英文空格,否则MC不会识别的。
(9)如果一本书非常大,在一个主目录下,又要开几个分目录,怎么办呢?
TOC是一定要有的,这是主目录。分目录的格式是toc_xxx toc_xxx.xmcd : xxx_toc 。
2015年12月27日 16点12分 1
level 12
朱老剑客 楼主
太长,百度一时没发出来,结果连着发了两篇,各位多包涵,为了防止被度娘误删,让我这两个帖子都保留着吧,阿门。
2015年12月27日 17点12分 4
level 1
安装完是英文版,怎么改成中文版?
2016年12月05日 06点12分 7
level 1
厉害了,大神,请教一下如何在下标中再添加一个下标呢?即下标的下标?
2016年12月06日 04点12分 8
level 7
神贴,这是境界
2017年01月04日 13点01分 9
level 6
楼主费心了。不负mathcad吧之名[大拇指]
2019年04月03日 05点04分 10
level 1
有电子书原始数据,初始数据。留下大名。有肉吃
2019年04月26日 11点04分 11
1