How to draw ligands with different hapticities

I'm not aware of a truly general approach. I solve these kinds of bonds by using invisible bonds -[,,,,draw=none] for placing atoms or determining access points for other bonds.

Ferrocene and similar compounds are not quite easy with chemfig and my approach is even less general. So far the only way I know is to draw them from scratch (but then I do not need to draw metallocenes very often (or ever)). Here's a try I recently used as an answer on chemieonline.de:

\documentclass{article}
\usepackage{chemfig}
\setcrambond{3pt}{}{}
\begin{document}

\chemfig{
  ?[a]>[:18,.8]-[:108,.8]-[4]
    (
      -[:-40,.65,,,draw=none]@{r1}-[2,,,,dotted]
      Fe
      -[2,,,,dotted]@{r2}-[:-130,.7,,,draw=none]
      ?[b]-[,,,,line width=3.5pt]>[:72,.8]-[:162,.8]-[:-162,.8]?[b,4]
    )
  -[:-108,.8]?[a,4]}
\chemmove{
  \draw (r1) ellipse (15pt and 8pt);
  \draw (r2) ellipse (15pt and 8pt);
}
\end{document}

enter image description here

The values need adjusting of course (I was being lazy) but the principle should be clear. What I've done here is the following: I drew the cp rings using chemfig's ? hook and marked the center (or actually only somewhere near) by using the @{<nodename>} syntax. These nodes then are accessed via \chemmove (which basically is a wrapper for \tikz[remember picture,overlay]) to draw the ellipses. This needs a least two compilations.

The second one's easier. I just use an invisible bond like I said above. This should also work for other similar compounds:

\documentclass{article}
\usepackage{chemfig}
\usepackage{chemmacros}% for formal charges
\definesubmol{inv}{-[,,,,draw=none]}
\begin{document}

\chemfig{
  H>[:-10]C(<:[:60]H)
   (-[:-14.5,2,,,draw=none]Pt(-[4,1.8])(<[:-120]Cl)(<:[:60]Cl|^{\fminus})-Cl)
   =[6]
  C(<[:-110]H)<:[:-20]H
}

\end{document}

enter image description here


Ferroceno Metanol

Hi, if you don´t wont to make double compilation, I draw a Ferrocene Methanol molecule with \chemfig and \tikz that requieres only one compilation. Here is the code.

Regards.

\documentclass{article}
\usepackage{chemfig,xstring}

\usepackage{tikz}
\usetikzlibrary{shapes,shadows,arrows,positioning,graphs}

\begin{document}

\begin{tikzpicture}

%Lineas de ayuda, cuadricula
%\draw [help lines] (0,0) grid (6,4);

%Anillo Superior
\node at (0.78,2.95) {\chemfig{
        <[:-25,1.176]
        (   
            -[0,0.01,,,line width=6.1pt,shorten <=-1.5pt,shorten >=-1.5pt]           
            >[:25,1.176] 
            -[:135,0.8] (
                    %Metanol
                    -[:30,1]-[:-35,1]OH
                    )
            -[180,1]
            -[:-135,0.8]
        )}};

%Anillo Inferior
\node at (0,0.3){\chemfig{
            -[:25,1.176]
        (            
            -[:-25,1.176]
            <[:-135,0.8]
            -[180,,,,line width=4.8pt,shorten <=-2.2pt,shorten >=-2.2pt]
            >[:135,0.8]            
        )}};

\draw [dashed]  (0,1.75) -- (0,2.9);
\draw [dashed]  (0,0.3) -- (0,1.3);
\draw (0,0.3) ellipse (0.75cm and 0.35cm);
\draw (0,2.85) ellipse (0.75cm and 0.35cm);
\node at (0,1.5) {\Large Fe};

\end{tikzpicture}

\end{document}

I use

\usepackage{chemfig}
  \setatomsep{14.4pt}
  \setdoublesep{2.6pt}
  \setbondstyle{line width=0.6pt}
  \setcrambond{2.0pt}{0.6pt}{2.5pt}
  \setbondoffset{1.6pt}
  \setarrowdefault{,1.0,}
  \renewcommand*\printatom[1]{{\fontfamily{arial}\fontsize{10}{12}\selectfont\ensuremath{\mathsf{#1}}}}

\chemfig
{
  <[:303.51,0.4476]@{r5}{}%
  -[:0,,,,line width=2pt]@{r6}{}%
  >[:56.49,0.4476]%
  -[:164.82,0.7741]%
  -[:195.18,0.7741]%
  -[:355,0.7472,,,draw=none]@{r1}{}-[2,0.70]%
  Fe
  -[2,0.85]@{r2}{\,}-[:175,0.7472,,,draw=none]
  <[:303.51,0.4476]@{r3}{}%
  -[:0,,,,line width=2pt]@{r4}{}%
  >[:56.49,0.4476](-X)%
  -[:164.82,0.7741]%
  -[:195.18,0.7741]
}
\chemmove
{
  \draw (r1) ellipse (6pt and 2pt);
  \draw (r2) ellipse (6pt and 2pt);
  \fill (r3) ellipse (1pt and 1.1pt);
  \fill (r4) ellipse (1pt and 1.1pt);
  \fill (r5) ellipse (1pt and 1.1pt);
  \fill (r6) ellipse (1pt and 1.1pt);
}
\chemfig
{
  -[:-303.51,0.4476]%
  -[:0,,,,]%
  -[:-56.49,0.4476](-[:-10]Z)%
  <[:-164.82,0.7741]@{r5}{}%
  >[:-195.18,0.7741]%
  -[:10,0.7472,,,draw=none]@{r1}{}-[2,0.70]%
  Fe
  -[2,0.85]@{r2}{\,}-[:175,0.7472,,,draw=none]
  <[:303.51,0.4476]@{r3}{}%
  -[:0,,,,line width=2pt]@{r4}{}%
  >[:56.49,0.4476](-Y)%
  -[:164.82,0.7741]%
  -[:195.18,0.7741]
}
\chemmove
{
  \draw (r1) ellipse (6pt and 2pt);
  \draw (r2) ellipse (6pt and 2pt);
  \fill (r3) ellipse (1pt and 1.1pt);
  \fill (r4) ellipse (1pt and 1.1pt);
  \fill (r5) ellipse (1pt and 1.3pt);
}
\chemfig
{
  -[:-303.51,0.4476]%
  -[:0,,,,]%
  -[:-56.49,0.4476](-[:-10]X)%
  <[:-164.82,0.7741]@{r5}{}%
  >[:-195.18,0.7741]%
  -[:10,0.7472,,,draw=none]@{r1}{}-[2,0.70]%
  Fe
  -[2,0.85]@{r2}{\,}-[:175,0.7472,,,draw=none]
  <[:303.51,0.4476]@{r3}{}%
  -[:0,,,,line width=2pt]@{r4}{}%
  >[:56.49,0.4476](
    -[:0]
    -[:-303.51,0.4476]%
    -[:0,,,,]%
    -[:-56.49,0.4476](-[:-10]Y)%
    <[:-164.82,0.7741]@{r10}{}%
    >[:-195.18,0.7741]%
    -[:10,0.7472,,,draw=none]@{r6}{}-[2,0.70]%
    Fe
    -[2,0.85]@{r7}{\,}-[:175,0.7472,,,draw=none]
    <[:303.51,0.4476]@{r8}{}%
    -[:0,,,,line width=2pt]@{r9}{}%
    >[:56.49,0.4476]
    -[:164.82,0.7741]%
    -[:195.18,0.7741]
  )%
  -[:164.82,0.7741]%
  -[:195.18,0.7741]
}
\chemmove
{
  \draw (r1)  ellipse (6pt and 2pt);
  \draw (r2)  ellipse (6pt and 2pt);
  \fill (r3)  ellipse (1pt and 1.1pt);
  \fill (r4)  ellipse (1pt and 1.1pt);
  \fill (r5)  ellipse (1pt and 1.3pt);
  \draw (r6)  ellipse (6pt and 2pt);
  \draw (r7)  ellipse (6pt and 2pt);
  \fill (r8)  ellipse (1pt and 1.1pt);
  \fill (r9)  ellipse (1pt and 1.1pt);
  \fill (r10) ellipse (1pt and 1.3pt);
}

which looks like this:

FcX and 1,1'-FcYZ

It is inspired by the way ChemDraw draws metallocenes and it is more or less ACS-Style.

You may have to compile the document twice.