Board logo

标题: [原创] HTA版方程式上下标智能识别工具 [打印本页]

作者: youxi01    时间: 2009-3-28 21:03     标题: HTA版方程式上下标智能识别工具

一、程序介绍:能够将化学里 方程式或者化学式 中的数字、+、-智能识别为上下标,目前(测试阶段)本工具能够准确转化绝大多数的化学方程式、离子方程式、化合物、简单离子、复杂离子等中的上下标,可以大大减少化学教师手动输入上下标的麻烦。本工具完全开源,欢迎使用、复制、改装、传播,但在传播过程中请注明原作者:2laoshi(youxi01),另外,禁止将本工具用于商业用途!

二、注意事项使用本工具不能保证方程式中所有的上下标都能够转化正确,如果你在使用过程发现有错误,请在本文下边留言告知,我会及时的对程序中的正则算法进行更新,谢谢!


三、程序编写:vbs+hta

四、运行界面
转化前:

转化后:

保存:

五、作者:2laoshi(youxi01),个人博客:http://www.2laoshi.cn

六、程序下载智能转化上下标工具

源代码:
  1. <!--////////程序说明/////////====
  2. Intro  自动生成上下标
  3. FileName 自动
  4. Author  2laoshi(youxi01)
  5. Version  Beta1.0
  6. Web  http://www.2laoshi.cn
  7. MadeTime 2009-3-26~
  8. <!--//////////设置hta格式////////////-->
  9. <HTA:APPLICATION
  10. SCROLL="no"
  11. MaximizeButton="no"
  12. MinimizeButton="no"
  13. INNERBORDER="no"
  14. SHOWINTASKBAR="yes"
  15. SINGLEINSTANCE="yes"
  16. BORDER="thin"
  17. />
  18. <style type="text/css">
  19. a:link {color: blue}
  20. a:visited {color: blue}
  21. body  {background: #EEEEEE}
  22. button {
  23. height:23px;
  24. padding:2px 0 2px 0;
  25. margin:0px 2px 0 0;
  26. }
  27. .footer {
  28. text-align:center;
  29. margin:4px;
  30. font-size:15px;
  31. }
  32. #MyEditor {
  33. height:200px;
  34. width:388px;
  35. border:1px solid buttonshadow;
  36. }
  37. #ShowTip {
  38. background-color:#006644;
  39. color:Yellow;
  40. width=200px;
  41. height:30px;
  42. line-height:30px;
  43. font-size:12px;
  44. text-align:center;
  45. position:absolute;
  46. left:100px;
  47. top:80px;
  48. border:1px solid red;
  49. filter:Alpha(opacity=0);
  50. }
  51. #MyLink {
  52. width=99%;
  53. height:20px;
  54. font-size:12px;
  55. text-align:center;
  56. }
  57. </style>
  58. <script language="vbscript">
  59. width=400
  60. height=290
  61. window.resizeTo width,height
  62. ileft=(window.screen.width-width)/2
  63. itop=(window.screen.height-height)/2   
  64. window.moveTo ileft,itop
  65. Sub CopyText()
  66. MyEditor.document.execCommand("selectAll")
  67. MyEditor.document.execCommand("Copy")
  68. ShowTip.filters.alpha.opacity=100
  69. ShowTipinfo()
  70. MyEditor.document.selection.empty()
  71. End Sub
  72. Function RegExpRep(strng, patrn,patrn2)
  73. Set regEx =New RegExp ' 建立正则表达式。
  74. regEx.IgnoreCase =True' 设置是否区分字符大小写。
  75. regEx.Global =True' 设置全局可用性。
  76. regEx.Pattern=patrn
  77. RegExpRep=regEx.replace(strng,patrn2)
  78. set regEx=nothing
  79. End Function
  80. Sub GOGO()
  81. str=MyEditor.document.body.innertext&vbcrlf
  82. '处理特殊离子(带一个电荷的离子团,如:高锰酸根离子)
  83. ostr="MnO4-,ALO2-,NH4+,NO3-,HCO3-,HSO3-"
  84. ostr=split(ostr,",")
  85. for i=0 to Ubound(ostr)
  86.   Tr=right(ostr(i),2)
  87.   Tl=left(ostr(i),len(ostr(i))-2)
  88.   Tr1=left(Tr,1)
  89.   Tr2=Right(Tr,1)
  90. str=RegExpRep(str,ostr(i),Tl&"<sub>"&Tr1&"</sub><sup>"&Tr2&"</sup>")
  91. next
  92. '处理上标;
  93. str=RegExpRep(str,"(\d?[\+-])\s*([\+=\r\n、\.\u4e00-\u9fa5])","<sup>$1</sup> $2")
  94. '处理下标;
  95. str=RegExpRep(str,"([a-zA-Z))])([1-5])","$1<sub>$2</sub>")
  96. str=RegExpRep(str,"[\r\n]","<p>")
  97. str=replace(str,"<sup>+</sup><sup>+</sup>","<sup>+</sup>")
  98. MyEditor.document.body.innerhtml=str
  99. End Sub
  100. Function ShowTipinfo()
  101. if ShowTip.filters.alpha.opacity>0 then
  102. ShowTip.filters.alpha.opacity=ShowTip.filters.alpha.opacity-1
  103. settimeout "ShowTipinfo",50
  104. end if
  105. End Function
  106. </script>
  107. <body topmargin="2" leftmargin="2" oncontextmenu=self.event.returnvalue=false>
  108. <title>智能转化上下标-爱老师网 www.2laoshi.cn</title>
  109. <iframe id="MyEditor" onload="initeditor()"></iframe><br />
  110. <div id="ShowTip">已复制,请直接粘贴到word文档中</div>
  111. <p class=footer>
  112. <button onclick=GOGO><font color=red>生成上下标</font></button>
  113. <button onclick=CopyText>复制到剪贴板</button>
  114. <button onclick=self.close>退出</button></p>
  115. <div ID="Mylink"><a href="http://www.2laoshi.cn">欢迎光临爱老师网</a>¤<a href="http://www.2laoshi.cn/post/176.html">报告错误</a></div>
  116. <script language="javascript">
  117. function initeditor()
  118. {
  119. oStyle=MyEditor.document.createStyleSheet();
  120. oStyle.addRule("P","font-size:14px")
  121. oStyle.addRule("P","padding:0px")
  122. oStyle.addRule("P","margin:0px")
  123. oStyle.addRule("sub","font-family:Times new roman")
  124. oStyle.addRule("sup","font-family:Times new roman")
  125. MyEditor.document.designMode="on";
  126. }
  127. </script>
复制代码

作者: defanive    时间: 2009-3-28 21:08

对VBS及HTA还是不得其要领。。。
作者: youxi01    时间: 2009-3-28 21:10

和批处理差不多
学习思路也差不多,多看,多练OK
作者: Batcher    时间: 2009-3-28 22:02

图片无法显示
作者: youxi01    时间: 2009-3-28 22:10

显示不了你就刷啊,呵呵。
作者: Batcher    时间: 2009-3-28 23:56

现在可以了,可能是刚才网络不好吧。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2