LaTeX/化学图形
此页面最后编辑于 10 个月前,可能已被放弃 此页面自 2023 年 11 月 22 日起未进行编辑,但本书中的其他页面可能已进行编辑。查看 相关更改 了解本书的当前状态。 您可以通过编辑和更新本书来提供帮助。如果此页面没有被积极编辑,请删除此页面上的 {{正在建设中}} 。在 WB:PROJECTS 中寻求帮助。 |
chemfig 是一个用于绘制二维化学结构的包。它是 ochem 的替代方案。ochem 需要 Perl 来绘制化学结构,而 chemfig 使用 tikz 包来生成其图形。chemfig 通过在序言中添加以下内容来使用
\usepackage{chemfig}
此包中使用的主要命令是\chemfig{}:
\chemfig{<atom1><bond type>[<angle>,<coeff>,<tikz code>]<atom2>}
<angle> 是两个原子(或节点)之间的键角。键角类型有三种:绝对角、相对角和预定义角。绝对角给出精确的角(通常为 0 到 360 度,但也可以为负数),并用以下语法表示[:<absolute angle>]. 相对角需要以下语法[::<relative angle>]并产生相对于前一个键角的角。最后,预定义角是 0 到 7 之间的整数,表示 45 度的间隔。它们用以下语法产生[< predefined angle>]. 预定义角及其对应的绝对角在下面的图中表示。
\chemfig{(-[:0,1.5,,,draw=none]\scriptstyle\color{red}0)
(-[1]1)(-[:45,1.5,,,draw=none]\scriptstyle\color{red}45)
(-[2]2)(-[:90,1.5,,,draw=none]\scriptstyle\color{red}90)
(-[3]3)(-[:135,1.5,,,draw=none]\scriptstyle\color{red}135)
(-[4]4)(-[:180,1.5,,,draw=none]\scriptstyle\color{red}180)
(-[5]5)(-[:225,1.5,,,draw=none]\scriptstyle\color{red}225)
(-[6]6)(-[:270,1.5,,,draw=none]\scriptstyle\color{red}270)
(-[7]7)(-[:315,1.5,,,draw=none]\scriptstyle\color{red}315)
-0}
|
<bond type> 描述了连接 <atom1> 和 <atom2> 的键。共有 9 种不同的键类型
\chemfig{A-B}\\
\chemfig{A=B}\\
\chemfig{A~B}\\
\chemfig{A>B}\\
\chemfig{A<B}\\
\chemfig{A>:B}\\
\chemfig{A<:B}\\
\chemfig{A>|B}\\
\chemfig{A<|B}\\
|
\chemfig{C(-[:0]H)(-[:90]H)(-[:180]H)(-[:270]H)}
<coeff> 表示键长将被乘以的因子。
<tikz code> 包括有关键的颜色或样式的附加选项。
例如,一个甲烷分子可以用以下代码生成
\chemfig{C(-[:0]H)(-[:90]H)(-[:180]H)(-[:270]H)}
|
线性分子(如甲烷)是一个比较弱的例子,但在 chemfig 中,分子是通过嵌套形成的。
骨架图可以按以下方式生成
\chemfig{-[:30]-[:-30]-[:30]}
|
\chemfig{-[:30]=[:-30]-[:30]}
|
环状结构遵循以下语法<atom>*<n>(code),其中“n”表示环的边数,“code”表示每个环的特定内容(键和原子)。
\chemfig{A*6(-B-C-D-E-F-)}
|
\chemfig{A*5(-B-C-D-E-)}
|
\chemfig{*6(=-=-=-)}
|
\chemfig{**5(------)}
|
路易斯结构使用语法 \charge{<position1>=<charge1>,<position2>=<charge2>...}{atom}
,其中 <position>
以极坐标表示,如 <angle>:<shift>
,但如果不需要额外偏移,则可以省略 :<shift>
。在电荷字段中,\.
和 \:
将分别给出未配对和配对电子。配对电子也可以用一条线来表示,使用 \|
。
\charge{0=\.,90=\.,180=\.,270=\.}{C}
|
路易斯结构也可以包含在 \chemfig{}
中。
\chemfig{H-[:52.24]\charge{45=\:,135=\:}{O}-[::-104.48]H}
|
例如,考虑乙酸根离子
\chemfig{-(-[1]O^{-})=[7]O}
|
由于 chemfig 命令进入数学模式,因此离子电荷可以作为上标添加(一个注意事项:负离子需要将减号括起来,如示例所示)。
可以使用以下命令将离子的电荷圈起来\oplus和\ominus:
\chemfig{-(-[1]O^{\ominus})=[7]O}
|
或者,可以使用 \chemabove{}{ } 将电荷放在离子上方
\chemfig{-\chemabove{N}{\scriptstyle\oplus}(=[1]O)-[7]O^{\ominus}}
|
共振结构需要一些数学命令
% see "Advanced Mathematics" for use of \left and \right
% add to preamble:
% \usepackage{mathtools} % \Longleftrightarrow
$\left\{\chemfig{O-N(=[:60]O)-[:300]O}\right\}
\Longleftrightarrow
\left\{\chemfig{O=N(-[:60]O)-[:300]O}\right\}
\Longleftrightarrow
\left\{\chemfig{O-N(-[:60]O)=[:300]O}\right\}$
命令\chemrel和\chemsign在最新版本中已从 chemfig 包中移除,因此要绘制化学反应,必须改用以下命令\arrow和\+命令,该命令位于以下命令包围的块中\schemestart和\schemestop.
有几种类型的箭头可以用\arrow命令绘制
\schemestart A\arrow{->}B\schemestop\par % by default
\schemestart A\arrow{-/>}B \schemestop\par
\schemestart A\arrow{<-}B \schemestop\par
\schemestart A\arrow{<->}B \schemestop\par
\schemestart A\arrow{<=>}B \schemestop\par
\schemestart A\arrow{<->>}B \schemestop\par
\schemestart A\arrow{<<->}B \schemestop\par
\schemestart A\arrow{0}B \schemestop\par
\schemestart A\arrow{-U>}B \schemestop\par
\schemestart
A\arrow[,,->] B\arrow[,,-{Triangle[slant=0.5,blue,width=10pt]}]
C\arrow[,,-{CF[sharp]}] D \+ E
\schemestop
有关\arrow命令和 chemfig 中的化学反应的更多详细信息,请参阅 chemfig 文档文件 的第四部分“反应方案”。
可以使用以下命令创建化学反应
\chemrel[<arg1>][<arg2>]{<arrow code>}
\chemsign+ % produces a +
在\chemrel{}中,<arg1> 和 <arg2> 分别表示放在箭头上方和下方的文本。
有四种类型的箭头可以用\chemrel{}:
A\chemrel{->}B\par
A\chemrel{<-}B\par
A\chemrel{<->}B\par
A\chemrel{<>}B
可以使用以下命令对分子进行命名
\chemname[<dim>]{\chemfig{<code of the molecule>}}{<name>}
<dim> 插入到分子底部和 <name> 定义的名称顶部之间。默认情况下为 1.5ex。
<name> 将相对于它描述的分子居中。
\schemestart
\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Carboxylic acid}
\+
\chemname{\chemfig{R’OH}}{Alcohol}
\arrow{->}
\chemname{\chemfig{R-C(-[:-30]OR’)=[:30]O}}{Ester}
\+
\chemname{\chemfig{H_2O}}{Water}
\schemestop
在上面的反应中,\chemname{}在每个分子与其各自的名称之间插入 1.5ex 加上羧酸分子深度。这是因为反应中第一个分子的图形(羧酸)比其他分子延伸得更深。将醇放在首位会导致不同的结果
\schemestart
\chemname{\chemfig{R’OH}}{Alcohol}
\+
\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Carboxylic acid}
\arrow{->}
\chemname{\chemfig{R-C(-[:-30]OR’)=[:30]O}}{Ester}
\+
\chemname{\chemfig{H_2O}}{Water}
\schemestop
这是通过添加\chemnameinit{<最深的分子>}在第一个实例之前\chemname{}在反应中,并且通过添加\chemnameinit{}在反应之后
\schemestart
\chemnameinit{\chemfig{R-C(-[:-30]OH)=[:30]O}}
\chemname{\chemfig{R’OH}}{Alcohol}
\+
\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Carboxylic acid}
\arrow{->}
\chemname{\chemfig{R-C(-[:-30]OR’)=[:30]O}}{Ester}
\+
\chemname{\chemfig{H_2O}}{Water}
\chemnameinit{}
\schemestop
最后,添加\\在 <name> 中将产生换行符,允许名称跨越多行。
有关高级命令和示例,请参考 chemfig 手册,其中提供了对该包的更详细和完整的介绍。
如果你需要排版化学式,你可以选择两个非常好的包:mhchem
和 chemmacros
。
mhchem 是一个用于排版化学式和化学方程式的包。它还可以排版基本的二维化学结构。要使用此包,请将以下内容添加到你的序言中
\usepackage[version=4]{mhchem}
化学物种使用以下命令包含\ce命令。例如
\ce{3H2O} \\
\ce{1/2H2O} \\
\ce{AgCl2-} \\
\ce{H2_{(aq)}} \\
呈现
有关更多示例,请参见 meta:帮助:显示公式#化学 2。
这里有一些东西是自动排版的;2在\ce{H2O}中自动用下标表示,无需额外的命令。物种的量在公式之前。1/2 和其他分数自动排版,如\ce{1/2H2O}。中的电荷\ce{AgCl2-}自动用上标表示。如果电荷既不是 +1 也不是 -1,则用^表示上标,如\ce{AgCl2-}。相态不会自动用下标表示,需要用括号括起来,前面加上_,如\ce{H2_{(aq)}.
自 2016 年 2 月起,mhchem 包也适用于像维基百科这样的 MediaWiki 网站上的 TeX,使用标签 <ce>...</ce>
。
chemformula 是一个来自更大化学套件的包,用于排版化学式、化学方程式和基本的二维化学结构。该包使用与 mhchem
略微不同的语法。chemmacros
包将对从事化学相关工作的人员大有帮助。
要使用此包,请将以下内容添加到你的序言中
\usepackage{chemformula}
化学物种使用以下命令包含\ch命令。例如
\ch{3 H2O} \\
\ch{1/2 H2O} \\
\ch{AgCl2-} \\
\ch{H2_{(aq)}} \\
呈现
如你所见,语法几乎相同。
以下代码生成 皮质酮 的图像,如下所示。
\documentclass{letter}
\usepackage{epic,carom}
\pagestyle{empty}
\begin{document}
\begin{picture}(1000,500)
\put(0,0){\steroid[d]{3D==O;{{10}}==\lmoiety{H$_{3}$C};{{13}}==\lmoiety{H$_{3}$C};{{11}}==HO}}
\put(684,606){\sixunitv{}{2D==O;1==OH}{cdef}}
\end{picture}
\end{document}