Ich möchte mit TikZ so etwas, wie auf dem folgenden Bild erzeugen: alt text (Bildquelle: http://dx.doi.org/10.1016/j.comptc.2014.04.026)

Die beiden Bilder, mit denen ich dies erzeugen will habe ich schon. Das im Kasten habe ich mit dem Chemfig-Paket erzeugt und brauche da quasi nur noch den Kasten mit den beiden Linien unten dran. Verschieben kann ich das dann passend zum unteren Bild, jedoch fehlt mir irgendwie der Ansatz, wie ich so etwas überhaupt schön machen kann.

gefragt 09 Jun '14, 18:59

quizzmaster's gravatar image

quizzmaster
51138
Akzeptiert-Rate: 0%

bearbeitet 09 Jun '14, 19:02

Hallo, ohne Code wahrscheinlich schwer zu bearbeiten. Hast Du Dir schonmal die spy-Bibliothek angeschaut?

(09 Jun '14, 19:08) cis

Die spy-Bibliothek lässt mich ja nur einen vorhandenen Ausschnitt vergrößern. Mein Problem ist, dass ich als Vergrößerung ein eigenständiges Bild haben möchte.

(09 Jun '14, 19:19) quizzmaster

Mmhh, also ich denk Dein Problem wird sicher klarer / lösbarer, wenn Du mal Deinen Code angibst, dabei etwa "Bild1 hätte ich gerne an dieser Stelle in Bild2" o.ä.

(09 Jun '14, 19:45) cis

Mit etwas Mühe ist das durchaus machbar. Wie @Qrrbrbirlbel in Wie kann ich mit TikZ auf Bildern zeichnen? gezeigt hat, ist es nicht wirklich schwer, auf Bildern zu malen. Im folgenden habe ich viel manuell und durch Ausprobieren gemacht, d.h., es gibt mit Sicherheit viel Raum für Verbesserungen.

Zuerst habe ich Dein Bild genommen, die Formel wegretuschiert und anschließend das Bild beschnitten:

alt text

Das habe ich dann genommen, um folgendes zu erhalten:

alt text

Hier ist der Code:

Open in writeLaTeX
\documentclass{article}
\usepackage{graphicx}% wird zwar von tikz geladen, aber...
\usepackage{tikz}    % wird zwar von chemfig geladen, aber...
\usepackage{chemfig}

% das folgende definiert eine Dekoration `complete sines', die später für die
% gewellten Linien verwendet wird (siehe
% http://tex.stackexchange.com/a/25689/5049 ):
\usetikzlibrary{decorations.pathmorphing}
\pgfdeclaredecoration{complete sines}{initial}{
  \state{initial}[
    width=+0pt,
    next state=sine,
    persistent precomputation={
      \pgfmathsetmacro\matchinglength{
        \pgfdecoratedinputsegmentlength /
        int(\pgfdecoratedinputsegmentlength/\pgfdecorationsegmentlength)
      }
      \setlength{\pgfdecorationsegmentlength}{\matchinglength pt}
    }
  ] {}
  \state{sine}[width=\pgfdecorationsegmentlength]{
    \pgfpathsine{
      \pgfpoint
        {0.25\pgfdecorationsegmentlength}
        {0.5\pgfdecorationsegmentamplitude}
    }
    \pgfpathcosine{
      \pgfpoint
        {0.25\pgfdecorationsegmentlength}
        {-0.5\pgfdecorationsegmentamplitude}
    }
    \pgfpathsine{
      \pgfpoint
        {0.25\pgfdecorationsegmentlength}
        {-0.5\pgfdecorationsegmentamplitude}
    }
    \pgfpathcosine{
      \pgfpoint
        {0.25\pgfdecorationsegmentlength}
        {0.5\pgfdecorationsegmentamplitude}
    }
  }
  \state{final}{}
}

% jetzt verwenden wir die eben definierte Deko für einen Stil `wavy bond':
\tikzset{
  wavy bond/.style =
    {
      decorate,
      decoration =
        {
          complete sines,
          amplitude   = 0.23em,
          post length = 0 pt,
          pre length  = 0 pt,
          segment length = 1em
        }
    }
}

% ein Submolekül, das eine nach oben und nach unten abstehende gewellte Linie
% zeichnet:
\definesubmol{grenze}{(-[2,,,,wavy bond])(-[6,,,,wavy bond])}

\begin{document}

\begin{tikzpicture}
  \node[anchor=south west,inner sep=0] (Bild) at (0,0)
    {\includegraphics[width=\linewidth]{thioph-ausschn.png}} ;
  \node[draw,above] (Formel) at (Bild.60)
    {%
      \setatomsep{2em}%
      \chemfig{
        -[:-18,.5]
        !{grenze}
        -[:-18,.5]
        *5(
          =-=@{mA}(
            -[@{mB}]*5(-S-(-[,.5]!{grenze}-[::0,.5])=-=)
          )
          -S-
        )
      }%
    } ;
  \begin{scope}[x=(Bild.south east),y=(Bild.north west)]
    \draw
      (0.385,.55) -- (Formel.south west)
      (0.665,.5) -- (Formel.south east) ;
  \end{scope}
\end{tikzpicture}
\chemmove{
  \draw (mB) ++(0,.5) node {$\theta$};
  \draw[<-] (mB) ++(.2,.15) arc[start angle=90,end angle=180,radius=1em] ;
  \draw[<->] (mA) ++(-72:1em) --  ++(18:2em) ;
  \draw (mA) ++(-90:1em) node[anchor=north west] {\chemfig{C-[,.5]C} stretch};
}

\end{document}
Permanenter link

beantwortet 03 Jul '14, 19:10

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 03 Jul '14, 20:02

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×45
×41

gestellte Frage: 09 Jun '14, 18:59

Frage wurde gesehen: 8,759 Mal

zuletzt geändert: 03 Jul '14, 20:02