4

Is there a way to draw a radical cation like enter image description here using chemfig?


Edit #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}

with \radcationleft defined as (an adaptation of unbonpetit's code)

\newcommand*\radcationleft{\chemabove[0pt]{\lewis{4.,\rule[0pt]{0pt}{4.4pt}}}{\vspace{-.8pt} \scriptsize+ \hspace{5pt}}}

draws a pretty

enter image description here

Note that this only works with Helvetica (tgheros), as the alignment is made by eye.


Edit #1

I've tried both unbonpetit's and Steven's methods. Steven's code was easier to adapt to the molecule I'm trying to draw: chemfig treats the dot and + signs as an atom and I just needed to correct the arrival atom, so that the double bond links the carbon with the oxygen instead of the signs:

\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}

yields to

enter image description here

While with

\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}

I'm getting this

enter image description here

and I don't know how to correct it.

One last thing, how can I lower the symbols a bit to make them vertically centered with respect to the O?

5
  • See chemfig's \lewis macro
    – cgnieder
    Commented Jun 2, 2015 at 10:35
  • @clemens I can draw a neutral radical using it, but I can't show the charge of a radical ion. Commented Jun 2, 2015 at 10:53
  • Please see my revision. I have tried to vertically center the result and now use the macro \cation. Commented Jun 2, 2015 at 12:21
  • Both of the methods described below work. I prefer to use unbonpetit's one because it uses the radical's dot so it blends better with other structures with neutral radicals. Thanks to both anyway :-) Commented Jun 2, 2015 at 22:06
  • 1
    Your \radcationleft macro can also be written like this: \newcommand\radcationleft{\raisebox{1ex}{\Lewis{6.,\scriptscriptstyle+}}}
    – unbonpetit
    Commented Jun 3, 2015 at 5:13

2 Answers 2

5

No need the extra package since chembove can stack stuff.

\documentclass{article}
\usepackage{chemfig}
\begin{document}
\chemfig{A-\chemabove[0pt]{\Lewis{4.,\vphantom o}}{\scriptstyle+}O-B}
\end{document}

enter image description here

EDIT: Still no need of extra package like "stackengine" or extra complicated macro. Lewis and chemabove can do the job:

\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}

enter image description here

2
  • Thank you for your answer, I can't make it work for my molecule, though. See the edit in the question. Commented Jun 2, 2015 at 12:11
  • Can I suggest it as a feature to add? ;) It's useful for mass spectrometry. Commented Jun 2, 2015 at 22:45
4

Ignoring the chemically incorrect structure of my 1st example, one can nonetheless use a stack to do what you ask.

This question also seems related: Draw Lewis structures like a book

EDITED to achieve vertical spacing more in line with OP's desire, and to place code in the macro \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}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .