有没有办法像使用 chemfig 那样绘制自由基阳离子?
编辑#2
\chemfig{C(-[:-150]Y)(=[:90,,,2]\radcationleft O)-[:-30]\chemabove{C}{H}(-[:-90]R\rlap{'})-[:30]C(<[:-60]H)(<:[:-15]H)-[:90]C(<[:120]H)(<:[:165]H)-[:30]R}
定义为\radcationleft
(改编自 unbonpetit 的代码)
\newcommand*\radcationleft{\chemabove[0pt]{\lewis{4.,\rule[0pt]{0pt}{4.4pt}}}{\vspace{-.8pt} \scriptsize+ \hspace{5pt}}}
画一个漂亮的
请注意,这仅适用于 Helvetica ( tgheros
),因为对齐是通过眼睛进行的。
编辑#1
我尝试过 unbonpetit 和 Steven 的方法。Steven 的代码更容易适应我试图绘制的分子:chemfig 将点和 + 符号视为原子,我只需要纠正到达原子,这样双键将碳与氧连接起来,而不是符号:
\chemfig{Y-[::30]C(=[::60,,,2]\stackon[0pt]{$\cdot$}{\scriptsize +}O)-[::-60]\chemabove{C}{H}(-[::-60]R\rlap{'})-[::60]C(<[::-90]H)(<:[::-50]H)-[::60]C(<[::30]H)(<:[::70]H)-[::-60]R}
屈服于
虽然
\chemfig{Y-[::30]C(=[::60]\chemabove[0pt]{\lewis{4.,\vphantom o}}{\scriptsize +}O)-[::-60]\chemabove{C}{H}(-[::-60]R\rlap{'})-[::60]C(<[::-90]H)(<:[::-50]H)-[::60]C(<[::30]H)(<:[::70]H)-[::-60]R}
我明白了
我不知道该如何改正。
最后一件事,我怎样才能稍微降低符号以使它们相对于 O 垂直居中?
答案1
chembove
由于可以堆叠东西,因此不需要额外的包装。
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\chemfig{A-\chemabove[0pt]{\Lewis{4.,\vphantom o}}{\scriptstyle+}O-B}
\end{document}
编辑:仍然不需要像“stackengine”这样的额外包或额外复杂的宏。Lewis
并且chemabove
可以完成工作:
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\chemfig{Y-[::30]C(=[::60,,,2]\chemabove[0pt]{\Lewis{4.,\vphantom{\scriptstyle +}}}{\scriptstyle +}|O)-[::-60]\chemabove{C}{H}(-[::-60]R\rlap{'})-[::60]C(<[::-90]H)(<:[::-50]H)-[::60]C(<[::30]H)(<:[::70]H)-[::-60]R}
\end{document}
答案2
忽略我的第一个例子中化学上不正确的结构,仍然可以使用堆栈来完成你要求的操作。
这个问题似乎也相关:像书一样绘制路易斯结构
编辑以实现更符合 OP 愿望的垂直间距,并将代码放置在宏中\cation
。
\documentclass{article}
\usepackage{chemfig,stackengine}
% ORIGINAL DEFINITION
\newcommand\cation{\stackon[.3pt]{$\cdot$}{\scriptsize +}}
% REVISED DEFINITION
\renewcommand\cation{\raisebox{-.3pt}{\stackon[-.2pt]{$\cdot$}{\scriptsize +}}}
\begin{document}
\chemfig{!{ring}-[:30]-[:-30](-[:-90]NH_2)-[:30](=[:90]O)(-[:-30]
\cation O)}
\vspace{2em}
\chemfig{Y-[::30]C(=[::60,,,2]%
\cation O)-[::-60]\chemabove{C}{H}(-[::-60]R\rlap{'})-[::60]C(<[::-90]H)(<:[::-50]H)-[::60]C(<[::30]H)(<:[::70]H)-[::-60]R}
\end{document}