Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Is there a way to draw an atomic orbital in a chemfig structure? I think you can better understand if you see want I want to get:resonance between different diradical structure: it's worth to note that one radicalic center is sigma, the other pi

Here is what I've already done. Any improvement would be appreciated.

\documentclass[a4paper,12pt,twoside,openright,titlepage]{book}
\usepackage{chemfig,chemmacros,chemnum,modiagram}
    \usepackage[version=3]{mhchem}
        \makeatletter
        \def\CF@node@content{%
            \expandafter\expandafter\expandafter
                \printatom\expandafter\expandafter\expandafter
                {\csname atom@\number\CF@cnt@atomnumber\endcsname}%
                \ensuremath{\CF@node@strut}%
            }
        \makeatother
        \chemsetup[chemformula]{format=\sffamily}
        %\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
        \renewcommand*{\printatom}[1]{{\sffamily\cf{#1}}}
        \setdoublesep{0.32500 em}  % 'Bond Spacing'
        \setatomsep{1.78500 em}    % 'Fixed Length'
        \setbondoffset{0.18265 em} % 'Margin Width'
        \newcommand{\bondwidth}{0.06642 em} % 'Line Width'
        \setbondstyle{line width = \bondwidth}

\begin{document}
\schemestart
\setbondoffset{0pt}
 \chemsetup[orbital]{
   overlay ,
   opacity = 0.5 ,
   p/scale = 1.25 ,
   s/color = gray!50 ,
   s/scale = 1.25
 }
 \chemfig{*6(-=(-(-[,.2,,,draw=none]\Lewis{0.,}\orbital{s}))-=(-[,.4,,,draw=none]\Lewis{0.,}{\orbital[half,angle=90]{p}})-=-)}
\arrow
\setbondoffset{0pt}
 \chemsetup[orbital]{
   overlay ,
   opacity = 0.5 ,
   p/scale = 1.25 ,
   s/color = gray!50 ,
   s/scale = 1.25
 }
\chemfig{[:-60]*6(-=-(=)-(-[,.0,,,draw=none]\Lewis{0.,}\orbital{s})-(-[,.4,,,draw=none]\Lewis{0.,}{\orbital[half,angle=90]{p}})=)}
\arrow
\setbondoffset{0pt}
 \chemsetup[orbital]{
   overlay ,
   opacity = 0.5 ,
   p/scale = 1.25 ,
   s/color = gray!50 ,
   s/scale = 1.25
 }
\chemfig{*6(-=(-\orbital{s})-=-=)}
\schemestop

\end{document}
share|improve this question
3  
    
Yes, sure. I already knew chemmacros. But what you get using chemmacrosis a 3d image of the orbital, I wanted to draw a scheme similar to that of the image. Moreover, I didn't find anywhere how insert the electron (the dots) in the orbital. –  markellos Dec 9 '13 at 11:19
    
chemmacros' orbitals are tikzpictures internally. You can use the same procedure: define macros that draw the orbitals in the way you want them and then place those macros in place of the atoms like in the post I linked –  cgnieder Dec 9 '13 at 11:26
add comment

1 Answer

Final result, quite satisfactory:

\documentclass{article}
\usepackage[T1]{fontenc}
    \usepackage[english,italian]{babel}
    \usepackage{graphicx}
    \usepackage{chemfig,chemmacros,modiagram}
    \usepackage[version=3]{mhchem}
        \makeatletter
        \def\CF@node@content{%
            \expandafter\expandafter\expandafter
                \printatom\expandafter\expandafter\expandafter
                {\csname atom@\number\CF@cnt@atomnumber\endcsname}%
                \ensuremath{\CF@node@strut}%
            }
        \makeatother
        \chemsetup[chemformula]{format=\sffamily}
        \renewcommand*{\printatom}[1]{{\sffamily\cf{#1}}}
        \setdoublesep{0.32500 em} 
        \setatomsep{1.78500 em}    
        \setbondoffset{0.18265 em} 
        \newcommand{\bondwidth}{0.06642 em} 
        \setbondstyle{line width = \bondwidth}

\begin{document}
\begin{figure}\centerline{
\schemestart
\chemsetup[orbital]{
  overlay,
  opacity=.4,
  p/scale=1.5,
  p/half,
  s/scale=1.3
}
\chemname{\chemfig[][scale=0.75]{*6(-=(-(-[,.2,,,draw=none]\Lewis{0.,}\orbital{s}))-=(-[-2,0.001,,,draw=none]{{\orbital{p}}})(-[2,.4,,,draw=none]\lewis{2.,})-=)}}{{\footnotesize A'': \textsigma\ap{1},\textpi\ap{1}}}
\arrow{<->}
\chemsetup[orbital]{
  overlay,
  opacity=.4,
  p/scale=1.5,
  p/half,
  s/scale=1.3
}
\chemname{\chemfig[][scale=0.75]{[:-60]*6(-=-(=)-(-[-2,0.001,,,draw=none]{{\orbital{s}}})(-[0,.1,,,draw=none]\lewis{2.,})-(-[-2,0.001,,,draw=none]{{\orbital{p}}})(-[2,.4,,,draw=none]\lewis{2.,})=)}}{{\footnotesize A'': \textsigma\ap{1},\textpi\ap{1}}}
\arrow{<->}
\chemsetup[orbital]{
  overlay,
  opacity=.4,
  p/scale=1.5,
  p/half,
  s/scale=1.3
}
\chemname{\chemfig[][scale=0.75]{*6(-=(-\orbital{s})-=(-[-2,0.001,,,draw=none]{{\orbital{p}}})(-[2,.6,,,draw=none]\lewis{2.,})(-[2,.4,,,draw=none]\lewis{2.,})-=)}}{{\footnotesize A': \textsigma\ap{2},\textpi\ap{0}}}
\schemestop
}
\end{figure}\end{document}

enter image description here

share|improve this answer
    
Nice :) If you move \chemsetup outside of the scheme you won't have to repeat it. BTW \centerline{} is a plain TeX command and shouldn't be used in LaTeX. Since you're in a figure a simple \centering would suffice. Another BTW: \chemsetup[chemformula]{format=\sffamily} seems useless since you're using mhchem's \cf anyway. –  cgnieder Dec 9 '13 at 16:53
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.