이 질문은 다음 링크에서 요청되었습니다.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}