简单的化学反应

简单的化学反应

我正在尝试将一些讲座幻灯片转换为 LaTeX。将一些幻灯片(类似于下面的幻灯片)转换为漂亮的笔记的最佳方法是什么?我知道 mhchem 和 chemstyle,但我认为它们都不能满足我的要求。

我也有 ChemDraw,但创建这些中的每一个似乎是一个非常缓慢的过程,除非我只是缺少一些功能。ChemFig 是一个好的替代品吗?

氧汞化/脱汞化幻灯片

答案1

是的,chemfig这是一个很棒的工具。但是,与几乎所有的代码到图片系统一样,语法并不简单。请考虑以下示例。您可以轻松看到,chemfig 语法遵循逻辑和人类可读的语法,但对于较大的结构将变得极其复杂。据我所知,chemfig 是 TeX 上最简单的化学结构构建系统(不知何故)。我记得我早期 xymtex 让我哭过好几次。

\documentclass{beamer}
\usepackage{chemfig}
\usepackage{amsmath}
\begin{document}
\frame{\begin{minipage}{\textwidth}
\tiny
\chemname{\chemfig{C((-[:210]H_3C)-[:-210]H_3C)=C(-[:30]H)-[:-30]CH_3}
\chemrel[\chemfig{H_2O}][\chemfig{Hg{(OAc)}_2}]{->}\chemfig{C(-[2]CH_3)(-[4]H_3C)(-[6]OH)-C(-[2]HgOAc)(-[6]CH_3)-H}}{$\underbrace{\hspace{.6\textwidth}}_{\text{oxymercuration}}$}%
\chemrel[\chemfig{NaBH_4}][]{->}\chemname{\chemfig{C(-[2]CH_3)(-[4]H_3C)(-[6]OH)-C(-[2]H)(-[6]CH_3)-H}}{MORE substituted alcohol} \hspace*{.5\textwidth}$\underbrace{\hspace{.4\textwidth}}_{\text{demercuration}}$
\end{minipage}}
\end{document}

结果

请原谅我临时拼凑了括号。我认为一定有更好的方法。

正如人们所说,ChemDraw 是整个化学界的标准。对于每个文档都要绘制几个结构的我来说,chemfig 是完美的选择。所以如果我必须绘制很多这种结构的话(如果我是一个真正的化学家),它就不适合我了

答案2

ChemFig 是一个很棒的软件包,但我认为,如果你用它来创建方案而不是用 ChemDraw,你不会节省太多时间。

一旦您知道如何使用 ChemFig,您使用它的速度和使用 ChemDraw 的速度是一样的(假设您也知道如何使用 ChemDraw),至少这是我的经验。

您还应该考虑其他几点:

  • 为了使用 ChemFig 制作出真正漂亮的方案,必须掌握几个步骤:
    • 创建公式的语法;这非常直观且易于学习,但对于较大的化合物来说难以阅读
    • 方案创建部分;这基本上是\arrow命令的知识,它具有相当复杂的语法,但因此是一个非常灵活的命令
    • 它有助于很多如果你有 TikZ 的基本技能
  • 只要你的公式保持二维和有机,ChemFig 就很棒。尝试设置类似二茂铁是可能的,但很繁琐,更不用说更大的三维物质了,比如六价铁(钴)12

如果你对你的方案有很多描述,ChemFig 的一个属性可能会派上用场:在它的方案中,每个化合物都是一个蒂克兹具有可引用名称的节点,它允许您轻松地在方案中的化合物和一些描述性文本之间添加箭头,例如:

\documentclass{scrartcl}
\usepackage{chemfig}
\usepackage{chemstyle} % provides the `scheme` environment
\usepackage{chemmacros} % for the small formulae

\newcommand*\referto[2][ref]{%
  \tikz[
    inner sep=0,
    baseline=(#1.base),
    remember picture]{\node (#1) at (0,0) {#2};}}

\begin{document}
\schemedebug{false}% set this to `true' to get information about node names ...
\begin{scheme}
\schemestart
 \ch{H2O} \arrow{<<->} \ch{H+} \+ \subscheme{\ch{OH-}}
\schemestop
% the \subscheme creates an extra node
\end{scheme}
Look, I refer to the \referto{hydroxide}!
\chemmove{
  \draw[red,thick,->,shorten >= 3pt]
    (ref.90) .. controls +(0,1) and +(0,-1) .. (c3.-90);
}

\end{document}

在此处输入图片描述

最后,我想举一个例子来说明如何使用 ChemFig 及其方案命令来设置示例的方案。这些命令(\schemestart\schemestop\arrow\chemrel )在化合物的相对定位、箭头的长度等方面比命令更强大。

我还使用\chemup.\chemdown\}作为括号。(还有\chemleft\chemright。)这些命令的作用与\left\right对于数学的作用相同。

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{chemfig,chemmacros}

\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}} % the style of the atom groups
\setcompoundsep{7em} % (not quite) the length of the arrows
\setatomsep{2em} % (not quite) the bond length

\chemsetup[chemformula]{subscript-vshift=.4ex}
\begin{document}
\schemedebug{false}
\frame{\tiny
\schemestart
 \chemup.
 \subscheme{
  \chemfig{H_3C-[:60]C(-[:120]H_3C)=C(-[:60]H)-[:-60]CH_3}
  \arrow(--snd){->[\ch{H2O}][\ch{Hg(OAc)2}]}
  \chemfig{CH_3-C(-[6]OH)(-[2]CH_3)-C(-[6]CH_3)(-[2]Hg|OAc)-H}
 }
 \chemdown\}
 % that was the first reaction step, we now can refer to the
 % second compound named `snd`
 \arrow(--[blue]){0}[-90,0] % invisible arrow of length 0 to the text below
 Oxymercuration
 % skip back to the second compound and add next reaction step:
 \arrow(@snd--thrd){->[\ch{NaBH4}]}
 \chemfig{CH_3-C(-[6]OH)(-[2]CH_3)-C(-[6]CH_3)(-[2]H)-H}
 \arrow(--[blue]){0}[-90,.1] MORE substituted alcohol
 \arrow(@snd.180--){0}[,0]
 \chemup.
 % empty compounds to get the right spacing for the second brace:
 \subscheme{\arrow(@[email protected]){0}\arrow{0}[-90,1.5]}
 \chemdown\}
 \arrow(--[blue]){0}[-90,0]
 demercuration
 \arrow(--[blue]){0}[-60,.2]
 \large Markovnikov addition
\schemestop

\begin{center}
\schemestart
  \chemfig{-[:60](-[:120])=-[:-60]}
  \arrow{->[1) \ch{H2O}, \ch{Hg(OAc)2}][2) \ch{NaBH4}]}[,2]
  \chemfig{HO-(-[:120])(-[:-120])--[:-60]}
\schemestop
\end{center}
}

\end{document}

在此处输入图片描述

答案3

我不需要排版很多化学品,但下面的内容也许会很有用。我使用 TikZ 排版了幻灯片中的第一个公式,让您了解它的工作原理。

\documentclass{standalone}
\usepackage{amsmath,tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[thick]
% First chemical.
\node (CarbonL) {C};
\node[right of=CarbonL] (CarbonR) {C};
\node[above left of=CarbonL] (TopL) {CH$_3$};
\node[below left of=CarbonL] (BotL) {CH$_3$};
\node[above right of=CarbonR] (TopR) {H};
\node[below right of=CarbonR] (BotR) {CH$_3$};
\draw[double] (CarbonL) -- (CarbonR);
\draw (CarbonL) -- (TopL);
\draw (CarbonL) -- (BotL);
\draw (CarbonR) -- (TopR);
\draw (CarbonR) -- (BotR);
\end{tikzpicture}

\end{document}

在此处输入图片描述

我在这个例子中使用了相对定位,但绝对定位、矩阵定位和链定位也是可能的。对于像你例子中的那些简单公式来说,这是一种简单的方法,但对于任何更复杂的公式,我不推荐它。

相关内容