当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 31 篇帖子 ]  前往页数 1, 2, 3  下一页
作者 内容
1 楼 
 文章标题 : 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-16 22:55 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次

目录:
前言
1chem
1-1 关于 chem,还有一段典故
1-2 使用
1-3 安装chem
2chem and tex




前言
对于我们化学专业的人而言输入化学式是一件头痛的事。化学式分两类有机,无机。无机的化学式大都是字母与字母数字。输入还是比较方便的(用oo的公式输入就很方便)。但是有机的就苦了。如下:
附件:
image 2.png
image 2.png [ 1.95 KiB | 被浏览 7212 次 ]


在windows下面还有chemoffice这个软件好用在linux就没有了。也有一些但是用起来可不容易,而且做出来的也不好。当然也有一些还是不错的商业软件,但是就算是用了这些软件输入的进程也是很不方便的。后来我接触到了tex,我对于用键盘直接输入的方式很有兴趣,就像在tex下输入数学的公式一样。但是我发现tex好像对于有机化学式也是没有办法。后来我在网上看到了一种方法。就是我下面要介绍的软件。
这一个软件,可以有与chemoffice相当的功能,而且可以超过它。
同时介绍我的一个方案可以让你有更好的输入体验。这个是基于tex的。

chem
贝尔实验室的大牛Brian Kernighan (就是和里奇一起写《C语言程序设计》的大牛)写了一篇怎么用chem preprocessor画化学形的文章。人家1992年写的东西,到现在还很好用,并且在书籍排版上,似乎超过了其他的比较著名的商业软件如chemdraw和免费软件isisdraw。虽然日本学者也写了一个xymtex,但是因为语法过于古怪,并且效果也不如这个。chem宏包在最新的groff中即有支持。下面简单的介绍软件的使用。本资料主要来源于英文版的手册,如果你英语不错,建议看原版。

关于 chem,还有一段典故:

话说当年(别问我,我不知道是哪一年)一个星期一的下午,Kernighan、 Jon Bentley 和一个同在贝尔实验室的化学家 Lynn Jelinski 闲扯了一会儿,Lynn 就向他俩抱怨在文档中插入化学结构式实在太麻烦了。正好 Kernighan 刚写了 pic,就想,咦,这不可以用 pic 画吗?于是那天晚上 K&B 就写了一个简单的前端。Lynn 一看,哎,不错!他们仨花了一个星期时间完成了 chem 语言,还在 Computers & Chemistry 杂志上发了篇文章,名字叫做:Chem - a program for phototypesetting chemical structure diagrams。

别着急,还没完。话说当年(1990) GNU 要搞自由软件版本的 troff,开始重写 troff,把前端中的 pic, tbl, soelim 和 eqn 都重写了,就剩下画数学公式的 ideal 和 chem 没有重写。到现在你看你自己 Linux 中的 info groff,在 Introduction->Preprocessor 的最后还能找到:“There are other preprocessors in existence, but, unfortunately, no free implementations are available. Among them are preprocessors for drawing mathematical pictures (`ideal') and chemical structures (`chem').“

时间慢慢到了 2006 年 10 月 19 号,一个叫 Bernd Warken 的小子在 groff 的邮件列表中吼了一嗓子:哈哈,我用 Perl 重写了 chem!然后维护者 Werner LEMBERG 大叔就说:Great! 

使用

1.   从这里开始
    编译过程:
    首先建立一个文件,比如foo.chem,内容如下:
.cstart
    ring6  pointing right put N at 4 put O at 1
    bond -90 length .1 ; N
    double bond -90 length .1 ; O
.cend
然后对文件进行编译:终端输入:
$chem foo.chem | groff -p -Tps>foo.ps
$ps2epsi foo.ps
上面的命令分三部分:调用chem预处理,groff画图,把ps图像转换为epsi格式。(否则系统
会提示”No BoundingBox”)得到foo.epsi文件。epsi文件可以直接在latex中调用。

2. chem代码的结构:
chem代码的结构比较简单,如下所示:
.cstart
[这部分是画图的代码。]
.cend
这个是当年他们发的论文,详细的介绍了chem的使用方法。
http://dx.doi.org/10.1016/0097-8485(87)85006-4


安装chem
chem是groff中的一部份,我们的ubuntu自带了groff-base,但是安装groff时所用的groff-base的版本不对。所以要重新安装
https://launchpad.net/ubuntu/+source/gr ... ld/1524223
下载groff-base_1.20.1-7_i386.deb,
如果是用软件中心安装的话,由于安装了高版本的,无法安装。
sudo dpkg -i groff-base_1.20.1-7_i386.deb
可以把高版本的变成低版本的。
sudo apt-get install groff
这样chem就安装好了。
这样就可以软件输入化学式了。




chem and tex
安装TEX,这个我就不说了,在论坛里有。
我安装的是latex.
问题是我想实现一个目标,就是像在tex中一样可以输入有机化学式。我用了一个方法。
就是我们在写化学方程式的地方。我们用chem的语法一样写,然后我写了个脚本,写完了文章之后,用这个脚本处理文件。这个脚本中包括了文件的预处理,和chem处理以及latex的处理。
而预处理的部份是把文件中的chem语法部份取出来,生成相应的化学式。同时把这部份的chem语法改成tex中的图片插入的语法。这样一个合法的tex文件以及相当的化学式的eps图片就都出来了。然后就是用latex处理tex文件了。
在tex中的语法是:
代码:
\usepackage{graphicx}
.
.
\includegraphics
.cstart
    [这部分是画图的代码。]
.cend




shell脚本如下:
最新的在15,16楼
代码:
#!/bin/bash
#从文件中取取出.cstart到.cend之间的文件生成相应的文件同时编号,把这部份文件换成一段相应的代码
mkdir  ctoutfiles
cp $1 ctoutfiles
cd    ctoutfiles
file=`ls`
i=`cat $file | wc -l`
bihao=1

for m in `seq $i`
do
   if [ "`sed -n "$m,$m p" $file`"  = ".cstart" ]
   then   
      a=$m
   fi

   if [ "`sed -n "$m,$m p" $file`"  = ".cend" ]
   then
      b=$m
      sed -n "$a,$b p" $file | chem | groff -p -Tps | ps2eps >"$bihao".ps
      bihao=`expr $bihao + 1`
   fi
done

bihao=0
sed '/^.cstart$/,/^.cend$/  d'  $file | awk '{if($0 ~ /\\includegraphics/){bihao=bihao+1;print $0 "{"bihao".ps}"}else{print}}' >"$file".tex
latex "$file.tex"
xdvi  "$file".dvi




感谢这两位,对于这篇文章的帮助
http://bbs.ctex.org/viewthread.php?tid=38666
http://blog.solrex.org/articles/the-gold-old-tools-pic-and-chem.html



下面的我的一个演示:
文件:
代码:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
holle word!

\includegraphics
.cstart
    R:  benzene pointing right
        bond left from R.V4 ; HO
        bond -150 from R.V3 ; CH3O
        bond right from R.V1 ; C
        double bond up from C ; O
        bond right from C ; N
        bond 45 ; C2H5
        bond 135 from N ; C2H5
.cend

\includegraphics
.cstart
CH4
"+"
Cl2
arrow .3
CH3Cl  at Cl2  + (0.65, 0)
"+"
HCl
.cend
\end{document}

命令:
代码:
sh chemtex a

效果
附件:
Screenshot.png
Screenshot.png [ 8.88 KiB | 被浏览 7212 次 ]







这里的shell脚本是我试着写的,我还没有写过。这个花了我半个月的时间。还有一些我预想的功能没有写出来。一方面是我水平有限,还有就是我不是很清楚在这个脚本里有一些功能用不用。想听听大家的想法。同时这个脚本也没有最后定下来。想让大家帮着写一下,完善这个脚本。希望大家多提意见


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


最后由 IDRI 编辑于 2010-11-13 11:37,总共编辑了 3 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-16 23:06 
头像

注册: 2007-02-02 18:14
帖子: 30702
系统: debian sid
送出感谢: 1
接收感谢: 34
虽然只用chemwin画过一次半次,不过还是支持


_________________
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-26 19:16 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
这么多天了,为什么没有人顶呢!虽然写的不好,但就我而言是很有用的啊!


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-26 20:17 
头像

注册: 2009-01-06 15:18
帖子: 13005
地址: 人间
送出感谢: 1
接收感谢: 24
好东西。要支持下。 :em11


_________________
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-26 20:37 

注册: 2009-06-20 23:53
帖子: 490
送出感谢: 3
接收感谢: 0 次
强贴,留名 :em20


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-26 21:49 
头像

注册: 2008-04-26 12:41
帖子: 11000
送出感谢: 11
接收感谢: 38
:em11


_________________
[新手必读]wubi安装常见问题(FAQ)
[分享]装双系统的同学必看——Windows与Linux系统共享交换分区的方法
kde下唯美的暗黑内透主题(无需编译)
无穷老机上的Trinity Desktop Environment


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-26 22:34 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
我勒个去,这个好,我自己写了个 cml2svg 和 mol2svg,如果这个能编译成 svg 的话我直接就写个脚本从 mol/cml 文件到 .chem 的算了,下面来秀个我用 mol2svg 生成的分子结构(转成 png):


附件:
mol.png
mol.png [ 11.02 KiB | 被浏览 7140 次 ]
页首
 用户资料  
 
8 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-28 22:33 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
我近来发现如果想要在oo中插入chem输出的ps图时,好像不是太好。楼上的意思,没有看太明白。好像有办法把图片转成svg,望指教! :em06


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-29 11:35 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
IDRI 写道:
我近来发现如果想要在oo中插入chem输出的ps图时,好像不是太好。楼上的意思,没有看太明白。好像有办法把图片转成svg,望指教! :em06

我自己写了个脚本直接将 mol/cml 文件转换成 svg 图片,这种图片是矢量图,其他方法转换的图片可能不能无损缩放。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-10-30 12:38 
头像

注册: 2008-02-02 13:06
帖子: 838
地址: 寶能科技
送出感谢: 2
接收感谢: 2
我勒个去,这个好


_________________
宝能科技


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-11-01 16:51 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
哈哈,mol2pic 完成了,直接将 mol 文件转换成 pic 格式的文件,然后用 groff -p -Tps file.pic 处理一下就可以出来 ps 文件了。下面是一个示例:
附件:
mol2.png
mol2.png [ 18.13 KiB | 被浏览 7058 次 ]



页首
 用户资料  
 
12 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-11-01 20:53 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
楼上,
你的这个mol是什么文件?也是用于画出有机结构图的吗?不懂,请教一下? :em03 :em03
还有,就是我提过的。虽然tex很好,但是我们有时也还是要用到如oo的文字处理工具。但是在oo中插入ps图,的效果很不好。你有没有办法,把ps的转成svg,或png的? :em01 :em01 :em01


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-11-01 22:36 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
IDRI 写道:
楼上,
你的这个mol是什么文件?也是用于画出有机结构图的吗?不懂,请教一下? :em03 :em03
还有,就是我提过的。虽然tex很好,但是我们有时也还是要用到如oo的文字处理工具。但是在oo中插入ps图,的效果很不好。你有没有办法,把ps的转成svg,或png的? :em01 :em01 :em01

额,MDL 的 mol 格式阿,当然是保存化合物结构的文件了,很常用的阿。其他的还有 cml,xyz 等。
我也发现了将 ps 转换成epsi的效果不好。有方法就是用ps阅读器打开,然後截图成png :em06 或者用一个结构编辑器编辑了然後导出成图片(推荐http://www.chemaxon.com的marvinsketch,个人免费,可跨平台使用)


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-11-02 20:37 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
marvinsketch我有用过,不错的 :em01 :em01
我才大二,还没有接触到mdl,但是以后应该也要用到。能不能把mol2pic发出来共享一下 :em03 :em03 :em03


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 关键词:有机化学式 有机化学方程式 tex 解决方案
帖子发表于 : 2010-11-05 22:11 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
学习chem化了我不少时间,当然还没有学得很深。
试着把11 楼 xiooli的图用chem写出来,当作是练习了。化了我不少时间。我发现一些问题。就是出错是它报的是pic的错,在chem中不方便找到那里有错。还有就是化的时间不少。可能相对于图形界面的所用的时间有精力更多一些。这是事实我不回避。用不用这种方法,由你自己选择。
代码:
.cstart
   OH
   bond 120
   bond down ; BP
R1:   ring pointing right put O at 6
   bond up from R1.V3 ; OH
   bond down from R1.V2 ; OH
   bond -150 from R1.V4 ; OH
   bond up from R1.V1 ; O
   bond 60 ; BP
R2:    ring with .V5 at BP
   back bond -60 ; OH
   back bond 150 from R2.V4
   bond -150 from R2.V4
R3:    ring with .V6 at R2.V2
   bond up from R3.V6
   bond from R3.V2
R4:     ring double 1,2 with .V5 at R3.V1
R5:     ring with .V6 at R4.V2
    back bond down from R5.V5
R6:    ring with .V4 at R5.V2
        bond -60 from R6.V6
     
   back bond up from R6.V1
    bond 150 from R6.V4 ; BP
   double bond 60 ; O
   bond 150 length 1 from BP ; O
   bond down length 1 ; BP
R7:   ring pointing right put O at 6 with .V1 at BP
   bond down from R7.V4 ; OH
   bond up from R7.V3 ; OH
   bond down from R7.V2 ; O
   bond down ; BP
R8:   ring pointing right put O at 6 with .V1 at BP
   bond down from R8.V4 ; OH
   bond up from R8.V3 ; OH
   bond up from R8.V5
   bond left ; HO
   bond down from R8.V2 ; OH
   bond up from R7.V5
   bond -60 ; O
   bond down ; BP
R9:   ring pointing right put O at 6 with .V1 at BP
   bond down from R9.V2 ; OH
   bond from R9.V4 ; OH
   bond up  from R9.V3 ; OH
   bond up from R9.V5
   bond  60  ; OH
 
.cend

附件:
Screenshot.png
Screenshot.png [ 14.2 KiB | 被浏览 7001 次 ]



_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 31 篇帖子 ]  前往页数 1, 2, 3  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译