为了描述具有多种反应物和多种产物的化学方案,我使用了方便的包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 结果:
需要修复的问题
在箭头处,pH 值应大于 7,询问后解毒,我找不到更好的方法来
\textgreater
在数学模式下完成等效操作。最接近的方法是使用,\rangle
但我认为这不是一个优雅的选择。有人知道更好的方法吗?如你所见,两个氮原子变得杂乱无章,但值得庆幸的是,这个问题已在
chemfig
手册中使用#( , )
语法进行了解决,并且应该始终如此后债券。不幸的是,这个方法在这个例子中不起作用,返回了错误。还有其他解决方案吗?有没有办法将化合物名称居中对齐、居中和/或两端对齐?我使用了语法,
\par
因为它允许文本中断,但是有没有更好的方法来解决 LaTeX 中的这个问题?最好还能想出一个解决方案,让所有化合物的名称水平对齐。
答案1
我的建议有三点:
- 只需使用数学模式而不是
\chemfig
命令。 - 写
N
前你开始响铃:N*5(-----)
- 我会将合适的 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}