358 lines
12 KiB
TeX
358 lines
12 KiB
TeX
\definesubmol\nobond{-[,0.2,,,draw=none]}
|
||
\def\hammond{\text{\textit{\ddag}}}
|
||
\def\rotate{0}
|
||
\newcommand{\setpolymerdelim}[2]
|
||
{%
|
||
\def\delimleft{#1}%
|
||
\def\delimright{#2}%
|
||
}
|
||
\setpolymerdelim[]
|
||
\newcommand{\reaction}[2]{\arrow{->[\tiny\begin{tabular}{@{}l@{\,}l@{}}#1\end{tabular}][\tiny\begin{tabular}{@{}l@{\,}l@{}}#2\end{tabular}]}}
|
||
|
||
\let\@chemfig=\chemfig
|
||
\let\@chemmove=\chemmove
|
||
\renewcommand{\chemfig}[1]{{\@ResetSymbols\@chemfig{#1}}}
|
||
\renewcommand{\chemmove}[1]{{\@ResetSymbols\@chemmove{#1}}}
|
||
|
||
\def\@WrapChemSide{o}
|
||
\def\@WrappedOrScheme{wrapped}
|
||
\def\enableWrapped{\def\@WrappedOrScheme{wrapped}}
|
||
\def\disableWrapped{\def\@WrappedOrScheme{scheme}}
|
||
\newcommand{\initAngle}[2]{[:#2]}
|
||
\def\MayHorizontalChem{\quad}
|
||
\def\@WrappendEnvironment{\renewcommand{\initAngle}[2]{[:##1]}\def\MayHorizontalChem{\arrow{0}[-90,0.1]}}
|
||
\def\@Cheme@DefaultScale{1.5}
|
||
\newcommand{\chemeDefaultScale}[1][1.5]{\def\@Cheme@DefaultScale{#1}}
|
||
|
||
\definesubmol\nobond{[,0.2,,,draw=none]}
|
||
%\definesubmol\numAtom{-[,0.4,,,draw=none]\scriptstyle}
|
||
\newcommand{\NumAtom}[2]{}
|
||
\newcommand{\numAtom}[1]{\NumAtom{,0.4}{#1}}
|
||
\newcommand{\numAtomWith}[2]{\NumAtom{::#1,0.4}{#2}}
|
||
\def\numAtoms{\renewcommand{\NumAtom}[2]{-[##1,,,draw=none]{##2}}}
|
||
|
||
\setchemfig
|
||
{
|
||
atom sep = 14.4pt,
|
||
double bond sep = 2.6pt,
|
||
bond style = {line width=0.6pt},
|
||
cram rectangle = false,
|
||
cram width = 2.0pt,
|
||
cram dash width = 0.6pt,
|
||
cram dash sep = 1.0pt,
|
||
bond offset = 1.6pt,
|
||
bond join = true,
|
||
lewis length = 1.0ex,
|
||
compound sep = 5.0em,
|
||
arrow offset = 5.0pt,
|
||
scheme debug = false,
|
||
}
|
||
\renewcommand*\printatom[1]{{\scriptsize\ensuremath{\mathsf{#1}}}}
|
||
|
||
%\AtBeginDocument
|
||
%{
|
||
% \RenewDocumentCommand\ch{O{}m}{\directlua
|
||
% {
|
||
% if chLevel == 0
|
||
% then
|
||
% tex.print
|
||
% (
|
||
% bs.."csname chemformula_ch:nn"..bs.."endcsname {#1}"
|
||
% )
|
||
% end
|
||
% chLevel = chLevel + 1
|
||
% }{#2}\directlua
|
||
% {
|
||
% chLevel = chLevel - 1
|
||
% }}
|
||
%}
|
||
|
||
\tikzset
|
||
{
|
||
onehalf/.style args={#1}
|
||
{
|
||
draw=none,
|
||
decoration=
|
||
{
|
||
markings,
|
||
mark=at position 0 with
|
||
{
|
||
\coordinate (CF@startdeloc) at (0,\dimexpr#1\CF@double@sep/2) coordinate (CF@startaxis) at (0,\dimexpr-#1\CF@double@sep/2);
|
||
},
|
||
mark=at position 1 with
|
||
{
|
||
\coordinate (CF@enddeloc) at (0,\dimexpr#1\CF@double@sep/2) coordinate (CF@endaxis) at (0,\dimexpr-#1\CF@double@sep/2);
|
||
\draw[dash pattern=on 2pt off 1.5pt] (CF@startdeloc)--(CF@enddeloc);
|
||
\draw (CF@startaxis)--(CF@endaxis);
|
||
}
|
||
},
|
||
postaction={decorate}
|
||
}
|
||
}
|
||
|
||
\newcommand{\arrowText}[1]{\begin{tabular}{@{}c@{\,}l@{}}#1\end{tabular}}
|
||
\newcommand{\cheme}[3][\@Cheme@DefaultScale]
|
||
{%sorry for this pun :D
|
||
\scalebox{#1}%
|
||
{%
|
||
%\setchemfig{scheme debug=true}%
|
||
\schemestart#2\schemestop%
|
||
\chemmove{#3}%
|
||
}%
|
||
\chemnameinit{}%
|
||
}
|
||
%\newcommand{\chem}[3][\@Cheme@DefaultScale]
|
||
%{
|
||
% \begin{subfigure}[b]{\linewidth}
|
||
% \centering
|
||
% \cheme[#1]{#2}{#3}
|
||
% \end{subfigure}
|
||
%}
|
||
\newcommand{\thecchem}[5]
|
||
{
|
||
%1 – float
|
||
%2 – short caption
|
||
%3 – content
|
||
%4 – long caption
|
||
%5 – label
|
||
\begin{scheme}[#1]
|
||
\centering
|
||
#3
|
||
\ifthenelse{\isempty{#4}}
|
||
{}
|
||
{
|
||
\ifthenelse{\isempty{#2}}
|
||
{\caption[\nolink{#4}]{\adjustCaption{#4}}}
|
||
{\caption[\nolink{#2}]{\adjustCaption{#4}}}
|
||
}
|
||
\labelScheme{#5}
|
||
\end{scheme}
|
||
}
|
||
\newcommand{\thelchem}[5]
|
||
{
|
||
%1 – float
|
||
%2 – short caption
|
||
%3 – content
|
||
%4 – long caption
|
||
%5 – label
|
||
\begin{scheme}[#1]
|
||
#3
|
||
\ifthenelse{\isempty{#4}}
|
||
{}
|
||
{
|
||
\ifthenelse{\isempty{#2}}
|
||
{\caption[\nolink{#4}]{\adjustCaption{#4}}}
|
||
{\caption[\nolink{#2}]{\adjustCaption{#4}}}
|
||
}
|
||
\labelScheme{#5}
|
||
\end{scheme}
|
||
}
|
||
\newcommand{\cchem}[1][]{\thecchem{!htbp}{#1}}
|
||
\newcommand{\hchem}[1][]{\thecchem{H}{#1}}
|
||
\newcommand{\lchem}[1][]{\thelchem{H}{#1}}
|
||
|
||
\newcommand{\thesubchem}[5]
|
||
{
|
||
%1 – float
|
||
%2 – relative width
|
||
%3 – content
|
||
%4 – long caption
|
||
%5 – beamer settings
|
||
\begin{subfigure}[#1]{#2}%
|
||
\centering%
|
||
\ifthenelse{\isempty{#5}}%
|
||
{%
|
||
\cheme#3%
|
||
\ifthenelse{\isempty{#4}}{}{\caption[\nolink{#4}]{\adjustCaption{#4}}}%
|
||
}%
|
||
{%
|
||
\uncover#5%
|
||
{%
|
||
\cheme#3%
|
||
\ifthenelse{\isempty{#4}}{}{\caption[\nolink{#4}]{\adjustCaption{#4}}}%
|
||
}%
|
||
}%
|
||
\end{subfigure}%
|
||
}
|
||
\newcommand{\subchem}[4][b]{\thesubchem{#1}{#2}{#3}{#4}{}}
|
||
|
||
\newcommand{\Wrapchem}[3][]
|
||
{{
|
||
\@WrappendEnvironment%
|
||
%\begin{samepage}
|
||
\ifthenelse{\equal{#1}{}}
|
||
{\begin{wrapfigure}{\@WrapChemSide}{\widthof{\cheme{#2}{}}}\cheme{#2}{}\end{wrapfigure}}
|
||
{\begin{wrapfigure}{\@WrapChemSide}{#1\linewidth}\centering\cheme{#2}{}\end{wrapfigure}}%
|
||
#3\par
|
||
%\end{samepage}
|
||
}}
|
||
\newcommand{\wrapchem}[3][]{\Wrapchem[#1]{\chemfig{#2}}{#3}}
|
||
|
||
\newcommand{\MayWrapchem}[5][]
|
||
{%
|
||
\ifthenelse{\equal{\@WrappedOrScheme}{wrapped}}%
|
||
{\Wrapchem[#1]{#2}{#5}}%
|
||
{\hchem{\cheme{#2}{}}{#3}{#4}#5\par}%
|
||
}
|
||
\newcommand{\MayRefchem}[1]
|
||
{%
|
||
\ifthenelse{\equal{\@WrappedOrScheme}{wrapped}}%
|
||
{}%
|
||
{ (\refScheme{#1})}%
|
||
}
|
||
|
||
\def\makebraces(#1,#2)#3#4#5%
|
||
{%
|
||
% 1 – Offset 1
|
||
% 2 – Offset 2
|
||
% 3 – Index
|
||
% 4 – Left Node
|
||
% 5 – Right Node
|
||
%\edef\delimhalfdim{\the\dimexpr(#1+#2)/2}%
|
||
%\edef\delimvshift{\the\dimexpr(#1-#2)/2}%
|
||
%\node[at=(#4),yshift=(\delimvshift)]
|
||
%{$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim width0pt\right.$};%
|
||
%\node[at=(#5),yshift=(\delimvshift)]%
|
||
%{$\left.\vrule height\delimhalfdim depth\delimhalfdim width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};%
|
||
\polymerdelim[delimiters ={[]}, height = 5pt, depth = 10pt, indice = #3]{#4}{#5}%
|
||
}
|
||
\def\Makebraces(#1,#2)#3#4#5%
|
||
{%
|
||
% 1 – Offset 1
|
||
% 2 – Offset 2
|
||
% 3 – Index
|
||
% 4 – Left Node
|
||
% 5 – Right Node
|
||
\edef\delimhalfdim{\the\dimexpr(#1+#2)/2}%
|
||
\edef\delimvshift{\the\dimexpr(#1-#2)/2}%
|
||
\node[at=(#4),yshift=(\delimvshift)]
|
||
{$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim width0pt\right.$};%
|
||
\node[at=(#5),yshift=(\delimvshift)]%
|
||
{$\left.\vrule height\delimhalfdim depth\delimhalfdim width0pt\right\delimright^{\rlap{$\scriptstyle#3$}}$};%
|
||
}
|
||
|
||
\catcode`\_11
|
||
\definearrow3{s>}{%
|
||
\ifx\empty#1\empty
|
||
\expandafter\draw\expandafter[\CF_arrowcurrentstyle,-CF](\CF_arrowstartnode)--(\CF_arrowendnode);%
|
||
\else
|
||
\def\curvedarrow_style{shorten <=\CF_arrowoffset,shorten >=\CF_arrowoffset,}%
|
||
\CF_eaddtomacro\curvedarrow_style\CF_arrowcurrentstyle
|
||
\expandafter\draw\expandafter[\curvedarrow_style,-CF](\CF_arrowstartname)..controls#1..(\CF_arrowendname);
|
||
\ifx\empty#2\empty\else
|
||
abc
|
||
\fi
|
||
\fi
|
||
}
|
||
\definearrow7{-u>}{%
|
||
\CF_arrowshiftnodes{#3}%
|
||
\CF_expafter{\draw[}\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)node[midway](Uarrow@arctangent){};%
|
||
\CF_ifempty{#4}
|
||
{\def\CF_Uarrowradius{0.333}}
|
||
{\def\CF_Uarrowradius{#4}}%
|
||
\CF_ifempty{#5}%
|
||
{\def\CF_Uarrowabsangle{60}}
|
||
{\pgfmathsetmacro\CF_Uarrowabsangle{abs(#5)}}
|
||
\expandafter\draw\expanded{[\CF_ifempty{#1}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}(Uarrow@arctangent)%
|
||
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle+90,delta angle=\CF_Uarrowabsangle]node(Uarrow@start){};
|
||
\expandafter\draw\expanded{[\CF_ifempty{#2}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}}]}(Uarrow@arctangent)%
|
||
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle+90,delta angle=-\CF_Uarrowabsangle]node(Uarrow@end){};
|
||
\pgfmathsetmacro\CF_temp{\CF_Uarrowradius*cos(\CF_arrowcurrentangle)<0?"+":"-"}%
|
||
\ifdim\CF_Uarrowradius pt>0pt
|
||
\CF_arrowdisplaylabel{#1}{0}\CF_temp{Uarrow@start}{#2}{1}\CF_temp{Uarrow@end}%
|
||
\else
|
||
\CF_arrowdisplaylabel{#2}{0}\CF_temp{Uarrow@start}{#1}{1}\CF_temp{Uarrow@end}%
|
||
\fi%
|
||
\CF_arrowdisplaylabel{#6}{0.5}+\CF_arrowstartnode{#7}{0.5}-\CF_arrowendnode
|
||
}
|
||
\definearrow7{-U>}{%
|
||
\CF_arrowshiftnodes{#3}%
|
||
\CF_expafter{\draw[}\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)node[midway](Uarrow@arctangent){};%
|
||
\CF_ifempty{#4}
|
||
{\def\CF_Uarrowradius{0.333}}
|
||
{\def\CF_Uarrowradius{#4}}%
|
||
\CF_ifempty{#5}%
|
||
{\def\CF_Uarrowabsangle{60}}
|
||
{\pgfmathsetmacro\CF_Uarrowabsangle{abs(#5)}}% ne prendre en compte que la valeur absolue de l'angle
|
||
\expandafter\draw\expanded{[\CF_ifempty{#1}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}(Uarrow@arctangent)%
|
||
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=-\CF_Uarrowabsangle]node(Uarrow@start){};
|
||
\expandafter\draw\expanded{[\CF_ifempty{#2}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}}]}(Uarrow@arctangent)%
|
||
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=\CF_Uarrowabsangle]node(Uarrow@end){};
|
||
\pgfmathsetmacro\CF_temp{\CF_Uarrowradius*cos(\CF_arrowcurrentangle)<0?"-":"+"}%
|
||
\ifdim\CF_Uarrowradius pt>0pt
|
||
\CF_arrowdisplaylabel{#1}{0}\CF_temp{Uarrow@start}{#2}{1}\CF_temp{Uarrow@end}%
|
||
\else
|
||
\CF_arrowdisplaylabel{#2}{0}\CF_temp{Uarrow@start}{#1}{1}\CF_temp{Uarrow@end}%
|
||
\fi%
|
||
\CF_arrowdisplaylabel{#6}{0.5}+\CF_arrowstartnode{#7}{0.5}-\CF_arrowendnode
|
||
}
|
||
\catcode`\_8
|
||
|
||
% From https://tex.stackexchange.com/questions/260884/chemfig-how-to-do-these-wavy-markings
|
||
\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.125\pgfdecorationsegmentlength}
|
||
{0.25\pgfdecorationsegmentamplitude}
|
||
}
|
||
\pgfpathcosine{
|
||
\pgfpoint
|
||
{0.125\pgfdecorationsegmentlength}
|
||
{-0.25\pgfdecorationsegmentamplitude}
|
||
}
|
||
\pgfpathsine{
|
||
\pgfpoint
|
||
{0.125\pgfdecorationsegmentlength}
|
||
{-0.25\pgfdecorationsegmentamplitude}
|
||
}
|
||
\pgfpathcosine{
|
||
\pgfpoint
|
||
{0.125\pgfdecorationsegmentlength}
|
||
{0.25\pgfdecorationsegmentamplitude}
|
||
}
|
||
}
|
||
\state{final}{}
|
||
}
|
||
\tikzset{wv/.style={decorate,decoration=complete sines}}
|
||
\definesubmol{chainRest}2{#1[#2,.5]((-[::90,1,,,wv])-[::-90,1,,,wv])}
|
||
\definesubmol{chainStart}2{[#2](-[::90,1,,,wv])(-[::-90,1,,,wv])#1[,.5]}
|
||
\definesubmol{weakBond}2{-[#1,#2,,,dash pattern=on 2pt off 2pt]}
|
||
|
||
|
||
%ferrocene
|
||
%\wrapchem
|
||
%{
|
||
% -[:\rotate-303.51,0.4476]%(-[::96.755]4')%
|
||
% -[::303.51,,,,]%(-[::26.755]5')%
|
||
% -[::303.51,0.4476]%(-[::35.835]1')%
|
||
% <[::251.67,0.7741]@{r5}{}%(-[::74.820]2')%
|
||
% >[::329.64,0.7741]%(-[::35.835]3')%
|
||
% -[::205.18,0.7472,,,draw=none]@{r1}{}-[::80,0.70]%
|
||
% Fe
|
||
% -[:: 0,0.85]\ -[::0,0]@{r2}{}-[::85,0.7472,,,draw=none]
|
||
% <[::128.51,0.4476]@{r3}{}%(-[::263.245]3)%
|
||
% -[:: 56.49,,,,line width=2pt]@{r4}{}%(-[::333.245]2)%
|
||
% >[:: 56.49,0.4476]%(-[::324.165]1)%
|
||
% -[::108.33,0.7741]%(-[::285.180]5)%
|
||
% -[::30.36,0.7741]%(-[::334.255]4)
|
||
%}
|
||
%{
|
||
% \draw[rotate=\rotate] (r1) ellipse (6pt and 2pt);
|
||
% \draw[rotate=\rotate] (r2) ellipse (6pt and 2pt);
|
||
% \draw[-,rotate=\rotate,line width=0.6pt] (r2) -- ++(270:2pt);
|
||
% \fill[rotate=\rotate] (r3) ellipse (1.3pt and 1pt);
|
||
% \fill[rotate=\rotate] (r4) ellipse (1.3pt and 1pt);
|
||
% \fill[rotate=\rotate] (r5) ellipse (1pt and 1.3pt);
|
||
%}
|