6

I'm trying to get this kind of appearance for chemical structure (see highlighted regions):

enter image description here

By so far I could manage to do like this:

enter image description here

This is my code:

\documentclass[12pt]{standalone}
\usepackage{tikz}
\usepackage{fontspec}
\setmainfont{Times New Roman} 

\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\usetikzlibrary{arrows,shadows,calc,shapes,backgrounds,intersections,positioning} 
\makeatletter
\def\CF@node@content{%
\expandafter\expandafter\expandafter
\printatom\expandafter\expandafter\expandafter
{\csname atom@\number\CF@cnt@atomnumber\endcsname}%
\ensuremath{\CF@node@strut}%
}
\makeatother
\setdoublesep{0.35700 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}
\renewcommand*{\printatom}[1]{{\sffamily\cf{#1}}}
\begin{document}
\begin{tikzpicture}[font=\small ,line width=1pt,node distance=1cm, inner sep=-0.05cm]
\node[anchor=north] at(0,0){ 
\chemname{
\chemfig{[:135]Ru?[o](-[,2.2]N*6([:80]=-=-*6(=<=>(-*6([:-120]-=(-*6(-=-(-*6(=*6(-=-=-)-=-*6(-=-=-)=-))=-=-))-=([:-80]-*6(=-=-*6(-=-[,,,,line width=2pt]=N?[o,{-}]-)=-))-N?[o,{-}]=))=)--))([:45]-[,2.2]N*6([:100]-*6(-(-*6([:-60]-N?[o,{-}]=([:-100]-*6(=*6(-N?[o,{-}]=-=-)-=<=>-))-=(-*6(=-=(-*6(-*6(-=-=-)=-=*6(-=-=-)-=))-=-))-=))=-@{tr}=-=)--=-[,,,,line width=2pt]=))}}{\textbf{\large 2}}
\chemmove{\draw[very thick,inner sep=0pt](tr)++(1cm,-.1cm)--++(0,2em)node[anchor=north west,yshift=-4mm]{$\sf \left(PF_{6}\right)_2$}--++(-2em,0);}
};
\path (0,.5)--++(2,0);
\path (0,-6.5)--++(1,0);
\end{tikzpicture}
\end{document}

How I could achieve the appearance I want using chemfig?

  • Probably one possibility is a similar strategy like the one for delocalized double-bonds (the chemfig manual has an example) – clemens Oct 19 '14 at 13:02
5

I'd draw the bold single bonds with the line-width command -[,,,,line width=2pt]. A bold double bond can be achieved by drawing a bold single bond backwards (angle = 180°) over the double bond: -[::180,,,,line width=2pt].

Here is an example:

\documentclass[a4paper]{scrreprt}
\usepackage[utf8]{inputenc}

\usepackage{chemfig}
\renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}}
\setatomsep{16.5pt}
\setbondstyle{line width=0.6pt}
\setcrambond{3pt}{0.6pt}{1.5pt}
\setdoublesep{2.6pt}
\setbondoffset{1.6pt}
\setarrowdefault{,1.0,}

\begin{document}

\chemfig{*6(=(-[::180,,,,line width=2pt])-(*6(=-=(-NH_2)-(-*6(=(-NHTs)(-[::180,,,,line width=2pt])-[,,,,line width=2pt]=(-[::180,,,,line width=2pt])-(*6(=-=-=-))--))=-))--=(-[::180,,,,line width=2pt])-[,,,,line width=2pt])}

\end{document}

Example for structures with axial chirality

  • It is great, but still question is open. It is not exactly what should be achieved. – saldenisov Oct 20 '14 at 8:34
2

I am not really an expert on pgf and tikz so probably this can be done even better. But here is my solution, where I define a new style of the bond.

Inspired by Creating delocalized double bonds in chemfig without tikzset? and Passing parameters to \pgfdeclaredecoration

\documentclass[a4paper]{article}

\usepackage{chemfig}
\usetikzlibrary{decorations}

\makeatletter
\pgfdeclaredecoration{halfbold}{initial}{%
\state{initial}[width=0.5*\pgfdecoratedpathlength,next state=final]{%
\pgfsetlinewidth{5\pgflinewidth}
\pgfpathmoveto{\pgfpoint{0}{0}}
\pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0}}
\pgfusepathqstroke
\pgfsetlinewidth{\tikzscope@linewidth}
\pgfpathmoveto{\pgfpoint{2pt}{4pt}}
\pgfpathlineto{\pgfpoint{0.9*\pgfdecoratedpathlength}{4pt}}
\pgfusepathqstroke
}
\state{final}{%
\pgfpathmoveto{\pgfpoint{0pt}{0pt}}
\pgfpathlineto{\pgfpoint{0.5*\pgfdecoratedpathlength}{0}}}}
\makeatother

\tikzset{myrbond/.style={decorate, decoration=halfbold}}
\tikzset{mylbond/.style={decorate, decoration={halfbold, mirror}}}

\setatomsep{4em}

\begin{document}

\chemfig{[:-30]R-C-[::60]C(-[::60,,,,,mylbond]O)-[,,,,myrbond]N(-[::-60]H)-[::60]C-R}

\end{document}

You can adjust the thickness in the line \pgfsetlinewidth{5\pgflinewidth} and the distance between the double bonds on lines

\pgfpathmoveto{\pgfpoint{2pt}{4pt}}
\pgfpathlineto{\pgfpoint{0.9*\pgfdecoratedpathlength}{4pt}}

But I am really not sure, if this is a better (or nicer) solution that the one proposed by @dieg0

2

I achieved a nice result. This is my commented code:

\documentclass[10pt]{article}
\pagestyle{empty} % required
\usepackage{chemfig}

\renewcommand{\familydefault}{\sfdefault}
\usepackage[scaled=1]{helvet}
\usepackage[helvet]{sfmath}
\everymath={\sf}

\begin{document}
    \setchemfig{
        atom sep=15pt,
        double bond sep=2.6pt,
        bond join=true,
        cram width=3.0pt,
        cram dash width=0.75pt,
        cram dash sep=2.0pt
    }

    \chemfig{
        Ru?[Ru] % central atom (with hook)
        % 1st moiety (left)
        (-[:180,3.25,,,dash pattern=on 2pt off 2pt] % long dashed bond to pyridyl  left ring
        N*6(=( % pyridyl ring
        -[::-45] % to avoid stay too close to Ru atom
        *6(=( % 1st 8-quinolyl ring (upper left benzene ring)
        *6(-N?[Ru,,{dash pattern=on 2pt off 2pt}]=-=-) % 8-quinolyl (pyridine ring, with hook to Ru bond)
        )-=<=( % 1st 8-quinolyl ring (continuation)
        -[::0,0.1,,,draw=none]-[::180,1.2,,,line width=2pt] % bold bond as a branch
        )>)) % 1st 8-quinolyl (end)
        -=(-R_{1})-= % pyridyl (continuation)
        (-[::-75] % to avoid stay too close to Ru atom
        *6(=-=-( % 2nd 8-quinolyl ring (lower left)
        *6(- % benzene ring
        (-[::60,1.01,,,line width=2pt]-[::60,1.01,,,line width=2pt]) % bold bond as a branch
        =-=N?[Ru,,{dash pattern=on 2pt off 2pt}] % 8-quinolyl (pyridine ring, with hook to Ru bond)
        (-[::180,1.05,,,line width=2pt])-))=-)) % bold N= bond as a branch
        -)) % Ending the 1st moiety
        %
        % 2nd moiety (right, same as above)
        (-[:0.0,3.25,,,dash pattern=on 2pt off 2pt]
        N*6(=(
        -[::-45]
        *6(=(
        *6(-N?[Ru,,{dash pattern=on 2pt off 2pt}]=-=-)
        )-=<=(
        -[::0,0.1,,,draw=none]-[::180,1.2,,,line width=2pt]
        )>))
        -=(-R_{2})-=
        (-[::-75]
        *6(=-=-(
        *6(-
        (-[::60,1.01,,,line width=2pt]-[::60,1.01,,,line width=2pt])
        =-=N?[Ru,,{dash pattern=on 2pt off 2pt}]
        (-[::180,1.05,,,line width=2pt])-))=-))
        -))
    }       
\end{document}

The final result:

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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