如何使用 chemfig 包注释该化学方案?

如何使用 chemfig 包注释该化学方案?

为了描述具有多种反应物和多种产物的化学方案,我使用了方便的包chemfig。虽然以更好的方式注释了下面的化学反应,但我发现了一些问题。

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}

\usepackage{chemfig}
\setbondstyle{line width=0.5pt}
\setatomsep{1.6em}
\newcommand*\circleatom[1]{\tikz\node[circle,fill=gray!50]{\printatom{#1}};}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
%\schemedebug{true} % uncomment to see names of compounds    

\schemestart
\subscheme{
\chemfig{\circleatom{Mol.}-[,1.5]NH_3}
}
\+
\subscheme{
\chemfig{(-[::-150]R)(=[::90]O)(-[::-30]O-[::60]*5(N-(=O)---(=O)-))}
}
\arrow(.mid east--.mid west){->[\chemfig{ pH \rangle 7}]}
\subscheme{
\chemfig{(-[::-150]R)(=[::90]O)(-[::-30]\chembelow{N}{H}-[::60,1.5]\circleatom{Mol.})}
}
\+
\subscheme{
\chemfig{HO-[::30]*5(N-(=O)---(=O)-)}
}
\arrow(@c1.west--){0}[-50,0.5] \parbox[s]{60pt}{\textit{N}-Hydroxy-succinimide-esters}
\arrow(@c3.west--){0}[-50,0.8] \parbox[s]{60pt}{Reactant name2}
\arrow(@c4.west--){0}[-45,1] \parbox[s]{60pt}{Some text}
\arrow(@c6.west--){0}[-35,1.2] \parbox[s]{60pt}{Text}
\schemestop
\end{document}  

MWE 结果:

在此处输入图片描述

需要修复的问题

  1. 在箭头处,pH 值应大于 7,询问后解毒,我找不到更好的方法来\textgreater在数学模式下完成等效操作。最接近的方法是使用,\rangle但我认为这不是一个优雅的选择。有人知道更好的方法吗?

  2. 如你所见,两个氮原子变得杂乱无章,但值得庆幸的是,这个问题已在chemfig手册中使用#( , )语法进行了解决,并且应该始终如此债券。不幸的是,这个方法在这个例子中不起作用,返回了错误。还有其他解决方案吗?

  3. 有没有办法将化合物名称居中对齐、居中和/或两端对齐?我使用了语法,\par因为它允许文本中断,但是有没有更好的方法来解决 LaTeX 中的这个问题?最好还能想出一个解决方案,让所有化合物的名称水平对齐。

答案1

我的建议有三点:

  1. 只需使用数学模式而不是 \chemfig命令。
  2. N 你开始响铃:N*5(-----)
  3. 我会将合适的 TikZ 样式传递给包含文本的节点。这可以通过以下\arrow命令实现:\arrow(<start node>[<options>]--<end node>[<options>])

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}

\usepackage{chemfig}
\setbondstyle{line width=0.5pt}
\setatomsep{1.6em}
\newcommand*\circleatom[1]{\tikz\node[circle,fill=gray!50]{\printatom{#1}};}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
% \schemedebug{true} % uncomment to see names of compounds    

\newcommand*\pH{\ensuremath{\text{pH}}}
\tikzset{
  mytext/.style={text width=60pt,align=center}
}

\begin{document}

\schemestart
  \chemfig{\circleatom{Mol.}-[,1.5]NH_3}
  \arrow{0}[,0]\+\arrow{0}[,0]
  \chemfig{R-[::30](=[::60]O)-[::-60]O-[::60]N*5(-(=O)---(=O)-)}
  \arrow{->[$\pH > 7$]}[,1.5]
  \chemfig{(-[::-150]R)(=[::90]O)(-[::-30]\chembelow{N}{H}-[::60,1.5]\circleatom{Mol.})}
  \arrow{0}[,0]\+\arrow{0}[,0]
  \chemfig{HO-[::30]N*5(-(=O)---(=O)-)}
  \arrow(@c1--[mytext]){0}[-90,.6]
  \textit{N}-Hydroxy-succinimide-esters
  \arrow(@c3--[mytext]){0}[-90,.25]
  Reactant name2
  \arrow(@c4--[mytext]){0}[-90,.5]
  Some text
  \arrow(@c6--[mytext]){0}[-90,.25]
  Text
\schemestop
\end{document}

相关内容