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?

  • 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


No need the extra package since chembove can stack stuff.

\chemfig{A-\chemabove[0pt]{\Lewis{4.,\vphantom o}}{\scriptstyle+}O-B}

enter image description here

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

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

enter image description here

  • 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

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.

\newcommand\cation{\stackon[.3pt]{$\cdot$}{\scriptsize +}}
\renewcommand\cation{\raisebox{-.3pt}{\stackon[-.2pt]{$\cdot$}{\scriptsize +}}}
  \cation O)}

\cation O)-[::-60]\chemabove{C}{H}(-[::-60]R\rlap{'})-[::60]C(<[::-90]H)(<:[::-50]H)-[::60]C(<[::30]H)(<:[::70]H)-[::-60]R}


enter image description here

You must log in to answer this question.

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