chemfig 및 tikzpicture가 있는 갈래 화살표

chemfig 및 tikzpicture가 있는 갈래 화살표

이 질문은 다음 링크에서 요청되었습니다.Chemfig가 있는 갈래 화살 그것은 나에게 매우 도움이 됩니다. 해결책을 제시해준 Gonzalo Medina에게 감사를 전하고 싶습니다. 그러나 어디에서도 해결책을 찾을 수 없는 두 가지 질문이 있습니다.

1) tikzpicture 내에서 \chemfig가 올바르게 작동하도록 하는 방법은 무엇입니까? 화살표 위와 아래에 화학 구조(chemfig로 그린)를 갖고 싶습니다. 그러나 \chemfig{...}모든 채권을 사용하면 화살표로 변합니다. 이 명령이 명령 안에 있기 때문인 것 같아요 \draw.

2) 화살표 위/아래 노드의 내용에 맞게 화살표 부분(여전히 동일한 선)의 길이만 변경하려면 어떻게 해야 합니까?

내가 만들고 싶은 계획은 다음과 같습니다.여기에 이미지 설명을 입력하세요

엄청 고마워!

내 tex 파일은 다음과 같습니다.

\documentclass[class=minimal,border=0pt,10pt]{standalone}%[a4paper]
\usepackage{chemfig,chemmacros}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,calc}
\begin{document}
\begin{tikzpicture}[node distance=0cm and 2cm]
    %\tikzset{myarrow/.style={->, >=latex', shorten >=1pt, thick},mylabel/.style={text width=7em, text centered} }  
\setcrambond{4pt}{}{}
%\setarrowoffset{10pt}
\node (A)
{\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]HO)-[:15,,,,line width = 4pt](-[:-60,0.6]OH)>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off  2pt])-[:120]O-[:-165]?[A]}};
%===================================
\node [above right= of A](B)
{\hspace{2cm}\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-90,0.5]-[:-130,0.5](-[:-80,0.6]\chemabove{O}{\hspace{4mm}\scriptstyle\ominus})=[:160,0.6]O))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}};
%===================================
\node[below=of B, align=left](B1){R=H or \ch{CH2COONa} \\depending on DS}; %align=left to use \\ inside node
%===================================
\node[below=0.5 of B1](C)
{\hspace{2cm}\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-120,0.5]-[:-60,0.5](-[,0.4]OR)-[:-120,0.5]-[:-60,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{4mm}\scriptstyle\ominus}))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}}; %{(} or {)} for sth like N(CH3)3Cl inside chemfig 
%===================================
\node[below=of C, align=left](C1)
{\hspace{1cm} R=H, \chemfig{-[:30,0.5](-[:90,0.4]OR)-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}\\ \hspace{1.1cm}depending on MS};
%===================================
\node[below=0.5 of C1](D)
{\hspace{2cm}\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-30,0.6]SO_3Na))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off    2pt])-[:120]O-[:-165]?[A]}};
%===================================
\node[below=of D](D1)
{R=H, \ch{SO3Na}};
%===================================
\node[below=0.5 of D1](E)
{\hspace{3cm}\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.5]-[:-30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}};
%===================================
\node[below=of E](E1)
{R=H, \chemfig{(=[:90,0.4]O)-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}};
%\draw[myarrow] (A.east) -- ++(0.5,0) -- ++(0,1) |-(B.west);    
%===================================
\draw[-stealth](A) --($(A.0)!0.5!(B.west|-A.0)$) |- (B.west) node[above]{\ch{ClCH2COONa}}node[below,align=left]{aq. \ch{NaOH}\\slurry medium};
%===================================
\draw[-stealth](A) -- ($(A.0)!0.5!(C.west|-A.0)$) |- (C.west) node[above]{\chemfig{?-[:90,0.5]O-[:-30,0.5]?-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}} node[below,align=left]{aq. \ch{NaOH}\\slurry medium};
%===================================
\draw[-stealth](A) -- ($(A.0)!0.5!(D.west|-A.0)$) |- (D.west) node[above,align=left]{(i) \ch{SO3}.DMF or \ch{SO3}.pyridine\\(DMF/LiCl) 50 \si{\degreeCelsius})}node[below,align=left]{(ii) \ch{NaOH}};
%===================================
\draw[-stealth](A) -- ($(A.0)!0.5!(E.west|-A.0)$) |- (E.west) node[above,align=left]{\chemfig{HO-[:30,0.5](=[:90,0.4]O)-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}}node[below,align=left]{DMSO, CDI \\ 20 h, 70 \si{\degreeCelsius}}; 

\end{tikzpicture}
\end{document}

답변1

1) 여기서는 "선 그리기" 명령에서 화살표 머리를 "제거"하기 위해 명령 [-]에 선택적 인수를 추가하기만 하면 됩니다 .\chemfig

2) 여기서는 "수동으로" 수행하는 것이 좋습니다. 먼저 기능을 사용하여 최상위 노드를 배치한 =<number>cm and <number>cm of <node>다음 생성된 \split변수를 사용하여 이 노드에 대한 경로를 "분할"해야 하는지 결정하고 생성된 \xshift변수를 사용하여 화살표 위와 아래에 배치되는 노드의 오프셋을 결정합니다. 반응 구성표를 그리는 동안 오른쪽의 노드 위치를 조정하거나 \split필요에 맞게 비율을 조정하여 간단히 조정할 수 있습니다.

위에서 말한 내용을 입증하기 위한 단순화된 반응 방식은 다음과 같습니다.

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usepackage{chemfig}
\usepackage{chemformula}
    \usetikzlibrary{arrows,positioning,calc}
\usepackage{siunitx}
\begin{document}
    \begin{tikzpicture}
            \setcrambond{4pt}{}{}
            \pgfmathsetlengthmacro{\xshift}{1cm}
            \pgfmathsetmacro{\split}{0.1}

        \node (A) {A};
        \node [above right=2cm and 5cm of A](B) {B};

        \draw[-stealth](A) --($(A.0)!\split!(B.west|-A.0)$) |- (B.west)
                % just to show the alignment point for the following nodes
                coordinate [pos=0.5,xshift=\xshift] (test)
            node [pos=0.5,xshift=\xshift,above,anchor=south west]
                {\ch{ClCH2COONa}}
            node [pos=0.5,xshift=\xshift,below,anchor=north west]
                {\chemfig[-]{?-[:90,0.5]O-[:-30,0.5]?-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}};
                % show the alignment points
                \fill [red] (test) circle (2pt) -- +(-1cm,0) circle (2pt);
    \end{tikzpicture}
\end{document}

단순화된 반응 계획 코드의 결과를 보여주는 이미지


여기서는 필요하지 않은 일부 를 정리 \hspace하고 노드의 적절한 정렬을 설정한 전체 반응 구성표를 찾을 수 있습니다.

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usepackage{chemfig}
\usepackage{chemformula}
    \usetikzlibrary{arrows,positioning,calc}
\usepackage{siunitx}
\begin{document}
    \begin{tikzpicture}[
        >=stealth,
        shorten >=1mm,
        component node/.style={
            % keys for `\chemfig'
            -,
            shorten >=0pt,
%            % fill the nodes (useful for debugging)
%            fill=red!50,
        },
        arrow node/.style={
            pos=0.5,
            xshift=\xshift,
            align=left,
            % keys for `\chemfig'
            -,
            shorten >=0pt,
        },
    ]
            \setcrambond{4pt}{}{}
            \pgfmathsetlengthmacro{\xshift}{1mm}
            \pgfmathsetmacro{\split}{0.1}

    % left side of reaction scheme
        \node [component node] (A)
            {\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]HO)-[:15,,,,line width = 4pt](-[:-60,0.6]OH)>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off  2pt])-[:120]O-[:-165]?[A]}};

    % right side of reaction scheme
        \node [component node,above right=2cm and 6cm of A] (B)
            {\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-90,0.5]-[:-130,0.5](-[:-80,0.6]\chemabove{O}{\hspace{4mm}\scriptstyle\ominus})=[:160,0.6]O))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}};
        \node [component node,below=0 of B.south west,anchor=north west,align=left] (B1)
            {R=H or \ch{CH2COONa} \\ depending on DS}; %align=left to use \\ inside node

        \node [component node,below=0.5 of B1.south west,anchor=north west] (C)
            {\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-120,0.5]-[:-60,0.5](-[,0.4]OR)-[:-120,0.5]-[:-60,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{4mm}\scriptstyle\ominus}))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}}; %{(} or {)} for sth like N(CH3)3Cl inside chemfig
        \node [component node,below=0 of C.south west,anchor=north west, align=left](C1)
            {R=H, \chemfig{-[:30,0.5](-[:90,0.4]OR)-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}\\ \hspace{1.1cm}depending on MS};

        \node [component node,below=0.5 of C1.south west,anchor=north west](D)
            {\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-30,0.6]SO_3Na))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off    2pt])-[:120]O-[:-165]?[A]}};
        \node [component node,below=0 of D.south west,anchor=north west] (D1)
            {R=H, \ch{SO3Na}};

        \node [component node,below=0.5 of D1.south west,anchor=north west] (E)
            {\chemfig{-[:-15,0.5,,,dash pattern = on 2pt off 2pt]O-[:15,0.5]?[A]<[:-60](-[:165,0.6]RO)-[:15,,,,line width = 4pt](-[:-60,0.6]O(-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.5]-[:-30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}))>[:-15](-[:15,0.5]O-[:-15,0.5,,,dash pattern=on 2pt off 2pt])-[:120]O-[:-165]?[A]}};
        \node [component node,below=0 of E.south west,anchor=north west](E1)
            {R=H, \chemfig{(=[:90,0.4]O)-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}};

    % draw reaction arrows + nodes
        %\draw[myarrow] (A.east) -- ++(0.5,0) -- ++(0,1) |-(B.west);
        \draw [->] (A) -- ($(A.east)!\split!(B.west|-A.east)$) |- (B.west)
            node [arrow node,above right]
                {\ch{ClCH2COONa}}
            node [arrow node,below right]
                {aq. \ch{NaOH}\\slurry medium};
        \draw [->] (A) -- ($(A.east)!\split!(C.west|-A.east)$) |- (C.west)
            node [arrow node,above right]
                {\chemfig[-]{?-[:90,0.5]O-[:-30,0.5]?-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}}
            node [arrow node,below right]
                {aq. \ch{NaOH} \\ slurry medium};
        \draw [->] (A) -- ($(A.east)!\split!(D.west|-A.east)$) |- (D.west)
            node [arrow node,above right]
                {(i) \ch{SO3}.DMF or \ch{SO3}.pyridine\\(DMF/LiCl) \SI{50}{\degreeCelsius})}
            node [arrow node,below right]
                {(ii) \ch{NaOH}};
        \draw [->] (A) -- ($(A.east)!\split!(E.west|-A.east)$) |- (E.west)
            node [arrow node,above right]
                {\chemfig[-]{HO-[:30,0.5](=[:90,0.4]O)-[:-30,0.5]-[:30,0.5]-[:-30,0.5]-[:30,0.6]\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}{(}CH_3{)}_3\chemabove{Cl}{\hspace{5mm}\scriptstyle\ominus}}}
            node [arrow node,below right]
                {DMSO, CDI \\ \SI{20}{\hour}, \SI{70}{\degreeCelsius}};
    \end{tikzpicture}
\end{document}

전체 반응 방식의 결과를 보여주는 이미지

관련 정보