LaTex 绘制平面化学结构式

LaTex绘制化学结构式主要通过以下宏包

  1. chemfig
  2. ochem
  3. streeTeX
  4. XyMTeX
  5. ConTeXt’s PPCHTeX

其中CTex的完整包中默认有chemfig和XyMTex这两个宏包。其中又以chemfig开发较为活跃,因此主要介绍以chemfig绘制化学结构式。

目前我已经将chemfig官方文档第1.4版翻译为中文,希望系统性学习chemfig的同学可以移步https://chemfig.man.huzheyang.cn

XyMTex是日本学者在二十世纪九十年代提出的一种绘制化学结构式的Tex宏包,经过数十年的发展功能日臻完善。其主要以预定义的复杂结构为基础,再描述支链基团。因此描述具有多个基本复杂结构的大分子化合物较为适宜。不过日本人做的软件包,大多数做得还没三哥强。

与之对应的是chemfig对化合物的描述方法,chemfig主要通过线性结构、支链结构、环状结构和任意两点相连这四种基本结构组成一个分子结构。最大的缺点是描述字符串的长度一定是分子原子数的Ω(n),而应用XyMTex则可能是Ω(1)。

我们从具体的实例出发,解释chemfig四种基本结构的书写方式

例一


观察罗匹尼罗的分子式,我们发现母体是一个吲哚结构,用chemfig的环状结构描述就是一个六元环与一个五元环以边相连。chemfig中环状结构的写法就是:#起始原子#*#环中原子数#(#分子结构#)。现在我们不关心环上的支链,那么分子结构就是一个线性结构。解释一下线性结构的书写方法,线性结构写作:#第一个原子##键类型#[#键参数#]#第二个原子#……。其中单键的键类型用符号‘-’表示;双建用‘=’表示,键参数用于描述键方向键长等其他信息。因此这个吲哚骨架,写作\chemfig{*6(-=(*5(---N--))-=-=)},生成得到的图片见下图

注意到骨架上有三个支链结构,支链结构的写法就是在支链产生的原子后方直接加上(#分子结构#),有几个支链就放几个小括号。吲哚骨架上的氮原子有一个支链氢,即(-[2]H),其中键参数项中的2代表键的方向是2,这里解释一下键方向,键的方向有三种表达方式:预设方向、绝对方向和相对方向。预设方向从0到7,将360°每隔45°逆时针分为八个方向,其中0方向相当于X轴正向;绝对方向以一个冒号开始,后面跟上相对于0方向的角度,例如上图中苯环上的碳到五元环上的氮,其绝对方向可写作[:18]即逆时针18°;相对方向是以上一个键的方向为“0方向”所旋转的角度,如果没有上一个键,则以0方向为“0方向”,写法上是两个冒号加角度,例如[::60]就是相对上一个键逆时针旋转60°。其他支链同理,因此罗匹尼罗的完整写法就是:

\chemfig{*6(-(-[6]-[::-60]-[::-60]N(-[::-60]-[::60]-[::60]H_3C)-[::60]-[::-60]-[::60]H_3C)=(*5(--(=[0]O)-N(-[2]H)--))-=-=)}

例二

通过观察我们发现以环结构的视角,有三个环两两相连,而chemfig中这种非线性相连的环是难以用例一中介绍的三种方式书写的,因此需要第四种结构任意两点相连,需要相连的原子后跟?[#连接编号#,#键参数#],即可如果只有一对相连原子,方括号内容也可以省略。那么培高利特就写作下式。

\chemfig{*6(-(-[:-90]N?[a]-[4]H)=(*6(-(=[6]?[a])--(<[::-120]H)(*6(-N(-[:-30]-[::60]-[::-60]CH_3)--(<[2]-[:30]SCH_3)--(<:[::-120]H)-))---))-=-=)}

注意观察上式中问号部分内容。

留下评论