%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Molecular Coding Format manual by Akira Yamaji 2023.01.29 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ** mcf2graph.mf must be version 4.92 % ** use mcf_library.mcf % ** typeset by LuaLaTeX(luamplib) %---------------------------------------------------------------------------- \documentclass[a4paper]{article} \usepackage{textcomp,verbatim}% \usepackage[luatex]{graphicx} \usepackage[luatex]{hyperref} \usepackage{makeidx} \usepackage{luamplib} \mplibnumbersystem{double} \makeindex \hypersetup{colorlinks=true,linkcolor=blue} %---------------------------------------------------------------------------- \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mpliblegacybehavior{disabled}% \begin{mplibcode} input mcf2graph; \end{mplibcode} \everymplib{% sw_output:=Fig+Calc; tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW"; fsize:=(60mm,35mm); blength:=0mm; max_blength:=10mm; ratio_thickness_bond:=0.015; ratio_atom_bond:=0.36; sw_frame:=Outside; fmargin:=(2mm,1mm); }% %---------------------------------------------------------------------------- \edef\fext{mps}% \topmargin=-18mm \textheight=254mm \textwidth=168mm \oddsidemargin=0mm %%%%\oddsidemargin=7mm %%%%\evensidemargin=-7mm \unitlength=1mm% %---------------------------------------------------------------------------- \begin{document} \title{\Huge\sf Molecular Coding Format manual} \author{Akira Yamaji} \date{\today} \maketitle \begin{center} Located at http://www.ctan.org/pkg/mcf2graph \end{center} \begin{center} Suggestion or request mail to: mcf2graph@gmail.com \end{center} %----------------------------------------------------------------------------- \thispagestyle{empty} \vspace{5mm}% \quad \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:Glycine",":<30,NH2,!2,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Alanine",":<30,NH2,!~wb,/_,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Valine",":<30,NH2,!~wb,/?!,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Leucine",":<30,NH2,!~wb,/'(!,?!),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:L-Isoleucine",":<30,NH2,!~wb,/'(/*_,!2),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Serine",":<30,NH2,!~wb,/!OH,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Threonine",":<30,NH2,!~wb,/'(/_,!~wf,OH),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Cysteine",":<30,NH2,!~wb,/!SH,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:L-Methionine",":<30,NH2,!~wb,/'(!2,S,!),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Phenylalanine",":<30,NH2,!~wb,/!Ph,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Tyrosine",":<30,NH2,!~wb,/'(!Ph,-3:/OH),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Triptophan", ":<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:L-Prorine",":<18,?5,3:NH,4:*/COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Glutamine", ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!,//O,!,NH2") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Asparagine",":<30,NH2,!~wb,/'(!,//O,!,NH2),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Aspartic acid",":<30,NH2,!~wb,/!COOH,!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:L-Glutamic acid",":<30,NH2,!~wb,/'(!2,COOH),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Lysine",":<30,NH2,!~wb,/'(!4,NH2),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Arginine", ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!2,NH,!,//NH,!,NH2") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Hystidine", ":<30,NH2,!~wb,!,COOH,@2,\,!,|,?5,{1,3}=dl,3:N,5:NH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:L-DOPA",":<30,NH2,!~wb,!,COOH,@2,\,!,Ph,{-3,-4}:/OH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:Ornithine",":<30,NH2,!~wb,/'(!3,NH2),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:Citrulline",":<30,NH2,!~wb,/'(!3,NH,!,//O,!,NH2),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:GABA",":<30,NH2,!4,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} \\ \begin{mplibcode} fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0; beginfigm("EN:amino Levulinic acid",":<30,NH2,!2,//O,!3,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:4-amino benzoic acid",":<30,Ph,1:/NH2,4:/COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Carboxyl glutamic acid", ":<30,NH2,!~wb,/'(!,/COOH,!,COOH),!,COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:L-Hydroxy Prorine",":<18,?5,1:/OH,3:NH,4:*/COOH") if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} %----------------------------------------------------------------------------- \twocolumn \thispagestyle{empty} \tableofcontents %----------------------------------------------------------------------------- \linethickness{0.08mm}% %---------------------------------------------------------------------------- \newpage \twocolumn \section{Introduction} Molecular Coding Format(MCF) is new linear notation represent chemical structure diagrams. This Coding is named from programing technique such as operator, array, scope, macro, adressing, etc. mcf2graph convert from MCF to PNG, SVG, EPS, MOL file. It is also able to calculate molecular weight, exact mass, molecular formula. %----------------------------------------------------------------------------- \section{MCF syntax} \subsection{Make bond} \subsubsection{Chain} \begin{verbatim} real number plus (+): counterclockwize real number minus(-): clockwize $n (0<=n<360): absolute angle <10,-30,45,-45,60,$300,$0 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Chain 1") fsize:=(60mm,17mm); sw_numbering:=Bond; numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- MC(<15,-30,45,-45,60,$300,$0, {1^$15,2^$345,3^$30,4^$345}:/_~dt,{5,6}=vf, ) add( defaultscale:=0.5; labeloffset:=2bp; drawarrow B7/*.7{B7right}..{B1right}B1/*.7; label.ulft("-30",B7/*.7); drawarrow B8/*.7{B8left}..{B2left}B2/*.7; label.llft("45",B8/*.7); drawarrow B9/*.7{B9right}..{B3right}B3/*.7; label.ulft("-45",B9/*.7); drawarrow B10/*.7{B10left}..{B4left}B4/*.7; label.llft("60",B10/*.7); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Chain with !,!n} \index{"!}% \begin{verbatim} ! : take value 60 or -60 depend on current angle and environment !6 : !,!,!,!,!,! <-30,!6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Chain 2") fsize:=(60mm,17mm); sw_numbering:=Bond; numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- MC(<-30,!6, {1^-120,2^60,3^-60,4^60,5^-60,6^60}:/_~dt ) add( defaultscale:=0.5; labeloffset:=2bp; drawarrow B7/*.7{B7right}..{B1right}B1/*.7; label.ulft("-60",B7/*.7); drawarrow B8/*.7{B8left}..{B2left}B2/*.7; label.llft("60",B8/*.7); drawarrow B9/*.7{B7right}..{B3right}B3/*.7; label.ulft("-60",B9/*.7); drawarrow B10/*.7{B10left}..{B4left}B4/*.7; label.llft("60",B10/*.7); drawarrow B11/*.7{B11right}..{B5right}B5/*.7; label.ulft("-60",B11/*.7); drawarrow B12/*.7{B12left}..{B6left}B6/*.7; label.llft("60",B12/*.7); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Jump to atom} \index{"@}% \begin{verbatim} @n : Jump to An ** An: atom number(-999<=n<=4095) <-30,!6,@3,0,!,@5,-30 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Jump and Branch") fsize:=(60mm,16mm); fmargin:=(2mm,2mm); sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; MC(<-30,!6,@3,0,!,@5,-30) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch bond} \index{\textbackslash}% \begin{verbatim} \ : 0 <-30,!6,@3,\,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Jump and Branch") fsize:=(60mm,16mm); fmargin:=(2mm,2mm); sw_numbering:=Atom; sw_trimming:=1; ratio_chain_ring:=1; MC(<-30,!6,@3,\,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch modified bond} \index{*\textbackslash}% \index{\textbackslash*}% \index{\textbackslash\textbackslash}% \index{*\textbackslash*}% \begin{verbatim} \ : 0 *\ : 0~wf \* : 0~zf \\ : 0~dm *\* : 0~wv <30,!8, @2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:branch1") fsize:=(60mm,16mm); fmargin:=(2mm,2mm); sw_numbering:=Atom; sw_trimming:=1; numbering_end:=10; ratio_chain_ring:=1; MC(<30,!10,@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{\textasciicircum}% ^ \index{\textasciitilde}% ~ \index{`}% \begin{verbatim} <30,!6, \~dr,!, : 0~dr,! \`1.5,-90 : 0`1.5,-90 \^15,-60 : 0^15,-60 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:branch2") fsize:=(60mm,20mm); fmargin:=(2mm,2mm); sw_trimming:=1; sw_numbering:=Atom; numbering_end:=7; ratio_chain_ring:=1; %------------------------- MC(<30,!6,@2,\~dr,!,@4,\`1.5,-90,@6,15,-60) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Connect atom} \index{\&}% \begin{verbatim} &n : Connect to An <-30,!6,@3,\,!3,&6~bd,@9,&4~bz \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Connect atom") fsize:=(60mm,20mm); fmargin:=(2mm,2mm); sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; %---------------------------------- MC(<-30,!6,@3,\,!3,&6~bd,@9,&4~bz) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Ring} \index{?}% \begin{verbatim} ?n : n membered ring(3<=n<=20) ?6 : <-120,60,60,60,60,60,&1 ?6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:ring") fsize:=(60mm,20mm); sw_trimming:=1; fmargin:=(2mm,3mm); sw_numbering:=Bond; %--------------------------- MC(?6) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate current angle} \index{\textgreater}% \begin{verbatim} : change environment <-30,``1,!, /_`2^30,!2,/!2>lr,!2,/!2>rl,!) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:group 3") fsize:=(60mm,16mm); sw_trimming:=1; MC(<-30,#1,!2,/_`2^30,!2,/!2>lr,!2,/!2>rl,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add group} \begin{verbatim} <30,!17,2:/_,3:/!,4:/!2,7:/iPr, 8:/tBu,10:/'(Ph`0.6)^-15, {11,12,13'}:*/_,{15,16,17'}:/*_ \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:group 3") fsize:=(75mm,25mm); fmargin:=(2mm,2mm); sw_numbering:=Atom; numbering_end:=17; MC(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10:/'(Ph`0.6)^-15, {11,12,13'}:*/_,{15,16,17'}:/*_) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add modified group} \begin{verbatim} ~,^,` : change type,angle,length <30,!6,{2~wf,4~zf,6^-30,8^$120}:/_ \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:group 4") fsize:=(60mm,18mm); sw_trimming:=1; fmargin:=(2mm,2mm); sw_numbering:=Atom; numbering_end:=9; MC(<30,!8`1,{2~wf,4~zf,6^-30,8^$120}:/_) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \begin{verbatim} ^,`,> : change angle,length,environment <-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:group 5") fsize:=(60mm,16mm); sw_trimming:=1; sw_numbering:=Atom; numbering_end:=8; MC(<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage %----------------------------------------------------------------------------- \subsection{Chain environment} \subsubsection{Horizontal,vertical} \index{hz}% \index{vt}% \index{"'}% \begin{verbatim} >hz : horizontal environment (default) >vt : vertical environment ?4, {3^-90,3^-30,3^90}:/!3>hz, {1^-60,1,1^60}:/!3>vt \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:chain strech direction mode 1") fsize:=(50mm,25mm); sw_trimming:=1; ratio_chain_ring:=1; MC(?4,{3^-90,3^-30,3^90}:/!3>hz, {1^-60,1,1^60}:/!3>vt ) add(defaultscale:=0.5; labeloffset:=2bp; label.rt(">hz",A8); label.top(">hz",A12); label.top(">hz",A16); label.rt(">vt",A20); label.top(">vt",A24); label.rt(">vt",A28); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Left-right,right-left} \index{lr}% \index{rl}% \begin{verbatim} >lr : left-right environment >rl : right-left environment <-30,!6, {3^-30,3,3^30}:/!3>lr, {5^-30,5,5^30}:/!3>rl \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Left-right_right-left") fsize:=(40mm,20mm); sw_trimming:=1; MC(<30,!4,2:/!6>30,4:/!4>-45) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Fixed rotate angle} \index{\textgreater}% \begin{verbatim} >n : rotate n <30,!4, 2:/!6>30, % 2:\,30,30,30,30,30,30 4:/!4>-45 % 4:\,-45,-45,-45,-45 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Fixed rotate angle") fsize:=(40mm,20mm); sw_trimming:=1; MC(<30,!4,2:/!6>30,4:/!4>-45) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Multiple rotate angle} \begin{verbatim} >'(90,-90,...) : rotate 90,-90,... <30,!6,6>'(90,-90,90,-90,90):/!5 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Multiple rotate angle") fsize:=(60mm,20mm); sw_trimming:=1; MC(<30,!6,6>'(90,-90,90,-90,90):/!5) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsection{Miscellaneous} %----------------------------------------------------------------------------- \subsubsection{Abbreviated parts} \index{NH}% \index{N"!}% \index{N"!2}% \index{SO}% \index{SOO}% \begin{verbatim} NH : N,/H~nl N! : N,/_ N!2 : N,/! SO : S,//O SOO : S,//O^35,//^-35 <-30,!2,NH,!2,N!,!2,N!2,SO,!2,SOO,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:change atom and group") fsize:=(60mm,12mm); sw_trimming:=1; MC(<-30,!2,NH,!2,N!,!2,N!2,!2,SO,!2,SOO,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{?"!}% \index{??}% \index{??"!}% \index{N?"!}% \begin{verbatim} ?! : /_,! ?? : /_^35,/_-35 /?! : isopropyl /??! : tert-butyl /N?! : dimethylamino <30,!9`1,?!,!,??,!,2:??,4:/??,6:/??!,8:/N?! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:methyl*2,isopropyl,tert-butyl") fsize:=(60mm,12mm); sw_trimming:=1; MC(<30,!9`1,?!,!,??,!,2:??,4:/?!,6:/??!,8:/N?!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Parts definition} \begin{verbatim} '(..) : user defined parts iBuOH:='(!,/_,!,OH); MC(<30,?6,{4,6}:/iBuOH) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:User definition") fsize:=(60mm,13mm); sw_trimming:=1; iBuOH:='(!,/_,!,OH); MC(<30,?6,{4,6}:/iBuOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Parts inline definition} \begin{verbatim} <30,!8,{2,6}:/'(!,/_,!,OH) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Inline definition") fsize:=(60mm,13mm); fmargin:=(2mm,1mm); sw_trimming:=1; MC(<30,!8,{2,6}:/'(!,/_,!,OH)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Move position} \index{"@()}% \begin{verbatim} @(x,y) : Move l*(x,y) from current position @$(x,y): Move l*(x,y) from origin(@1) ** l=bond length of ring <30,?6,@3,!4,//O,!,O,n_^60,@$(6,1),H,p_^15 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Move position") fsize:=(70mm,16mm); fmargin:=(2mm,1mm); sw_trimming:=1; MC(<30,?6,@3,\,!3,//O,!,O,n_^60,@$(6,1),H,p_^15) add(drawdot A1 withpen pencircle scaled 2bp; pickup pencircle scaled 0.1bp; for i=0 upto 6: draw (A1+(l*i,l-3bp))--(l*i,l+3bp); endfor draw A1--(A1+(0,1l))--A1+(6l,1l); draw (A1+(0,1l))--(A1+(-3bp,1l)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Serial number} \index{\-\-}% \begin{verbatim} 6:10 : 6,7,8,9,10 <30,!14,{2,6:10,14}:/_~bd_r`0.5 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Serial number") fsize:=(75mm,14mm); max_blength:=8mm; sw_numbering:=Atom; numbering_end:=15; MC(<30,!14,{2,6:10,14}:/_~bd_r`0.5) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsubsection{Change color} \index{red}% \index{blue}% \index{green}% \begin{verbatim} beginfigm() MC( <30,Ph,{2,5}:N,3:/NH2,4:/COOH, %--------------------- 2:red, % red A2 5:blue, % blue A5 3=green % green B3 %--------------------- ) endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Change color") fsize:=(50mm,20mm); max_blength:=8mm; MC( <30,Ph,{2,5}:N,3:/NH2,4:/COOH, 2:red,5:blue,3=green ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Change font} \index{atomfont}% \begin{verbatim} beginfigm() %---------------- atomfont:="cmr8"; %---------------- MC(<30,Ph,{2,5}:N,3:/NH2,4:/COOH) endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:Change font") fsize:=(50mm,20mm); max_blength:=8mm; atomfont:="cmr8"; MC(<30,Ph,{2,5}:N,3:/NH2,4:/COOH) endfigm \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Option parameter} %------------------------------------------------------------------------------ \subsection{Angle parameter} \index{mangle}% \begin{verbatim} mangle=0 ** default MCat(0.2,0.5)(Ph) mangle:=30; MCat(0.8,0.5)(Ph) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:mangle") fsize:=(50mm,15mm); blength:=6mm; mangle:=0; MCat(0.2,0.5)(Ph) add(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) mangle:=30; MCat(0.8,0.5)(Ph) add(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsection{Size/Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Bond length} \index{blength}% \begin{verbatim} (fit to figure size) blength=0 ** default \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm("EN:blength=0") sw_frame:=Bothside; fsize:=(40mm,15mm); MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------- \begin{verbatim} (ratio bond/figure width) blength=0.1 ** (01) ignore msize(w,h) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:blength>1") sw_frame:=Bothside; fsize:=(40mm,15mm); blength:=8mm; MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsubsection{Molecular size} \index{msize}% \begin{verbatim} msize=(1,1) ** default \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:msize=(1)") sw_frame:=Bothside+Mol; fsize:=(40mm,15mm); msize:=(1,1); MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------- \begin{verbatim} msize=(0.25,1) msize=40mm-4mm*0.25=9mm \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:msize=(0.25,1)") sw_frame:=Bothside+Mol; fsize:=(40mm,15mm); msize:=(0.25,1); MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------- \begin{verbatim} msize=(11mm,11mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:msize=(11mm,11mm)") sw_frame:=Bothside+Mol; fsize:=(40mm,15mm); msize:=(11mm,11mm); MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsubsection{Molecular position} \index{mposition}% \begin{verbatim} mposition=(0.5,0.5) ** default \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:mposition") sw_frame:=Bothside+Mol; fsize:=(40mm,15mm); msize:=(1,0.8); mposition:=(0.5,0.5); MC(<30,Ph) endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} mposition=(1,0) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:mposition") sw_frame:=Bothside+Mol; fsize:=(40mm,15mm); msize:=(1,0.8); mposition:=(1,0); MC(<30,Ph) endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} mposition=(10mm,4mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:mposition") sw_frame:=sw_frame+Mol; fsize:=(40mm,15mm); msize:=(1,0.8); mposition:=(10mm,4mm); MC(<30,Ph) ext(drawdot p1 withpen pencircle scaled 3pt; pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsection{Size parameter} %----------------------------------------------------------------------------- \subsubsection{Figure size} \index{fsize}% \begin{verbatim} fsize=(figure width,figure height) ** default: (30mm,20mm) fsize=(40mm,15mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:Figure size") fsize:=(40mm,12mm); sw_frame:=Outside; MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Figure margin} \index{fmargin}% \begin{verbatim} fmargin=(margin left rigth,top bottom) ** default: (0.4mm,0.4mm) fmargin=(10mm,2mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:fmargin") fsize:=(40mm,12mm); sw_frame:=Bothside+Mol; fmargin:=(10mm,1mm); MC(<30,Ph) ext(pickup pencircle scaled 0.2pt; for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor drawdot p0 withpen pencircle scaled 3pt; ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset thickness of bond} \index{offset\_thickness}% \begin{verbatim} default: offset_thickness=0.2pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:offset_thickness",":<30,Ph") fsize:=(60mm,12mm); offset_thickness:=0.0pt; MCat(0.1,0.5)(scantokens(mc)) offset_thickness:=0.2pt; MCat(0.55,0.5)(scantokens(mc)) offset_thickness:=0.5pt; MCat(1,0.5)(scantokens(mc)) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.2pt",(0.36w,1bp)); label.urt("0.5pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of double bond gap} \index{offset\_bond\_gap}% \begin{verbatim} default: offset_bond_gap=0.3pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:offset_bond_gap",":<30,Ph") fsize:=(60mm,12mm); offset_bond_gap:=0.0pt; MCat(0.1, 0.5)(scantokens(mc)) offset_bond_gap:=0.3pt; MCat(0.55,0.5)(scantokens(mc)) %<<== default offset_bond_gap:=1.0pt; MCat(1, 0.5)(scantokens(mc)) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.3pt",(0.36w,1bp)); label.urt("1.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of atom width} \index{offset\_atom}% \begin{verbatim} default: offset_atom=0.8pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:offset_atom") fsize:=(60mm,12mm); offset_atom:=0.0pt; MCat(0.1, .5)(<30,?6,3:O) offset_atom:=0.8pt; MCat(.55, .5)(<30,?6,3:O) %<<== default offset_atom:=2.0pt; MCat(1, .5)(<30,?6,3:O) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.8pt",(0.36w,1bp)); label.urt("2.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Offset of wedge width} \index{offset\_wedge}% \begin{verbatim} default: offset_wedge=0.4pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:offset_wedge") fsize:=(60mm,12mm); offset_wedge:=0.0pt; MCat(0.1,0.5)(<30,?6,5:*/_) offset_wedge:=0.4pt; MCat(0.55,0.5)(<30,?6,5:*/_) %<<== default offset_wedge:=1.0pt; MCat(1, 0.5)(<30,?6,5:*/_) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.4pt",(0.36w,1bp)); label.urt("1.0pt",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Max bond length} \index{max\_blength}% \begin{verbatim} default: max_blength=10mm \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:max_blength") fsize:=(60mm,20mm); sw_frame:=sw_frame+Mol; max_blength:=5mm; MCat(0, .5)(<30,Ph) max_blength:=8mm; MCat(.4,.5)(<30,Ph) max_blength:=10mm; MCat(1, .5)(<30,Ph) %<<== default ext(defaultscale:=0.6; labeloffset:=1bp; label("5mm", (0.1w,0.5h)); label("8mm", (0.42w,0.5h)); label("10mm",(0.82w,0.5h)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Thickness/bond length} \index{ratio\_thickness\_bond}% \begin{verbatim} default: ratio_thickness_bond=0.015 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:ratio_thickness_bond") fsize:=(60mm,12mm); ratio_thickness_bond:=0.005; MCat(0.1,0.5)(<30,Ph) ratio_thickness_bond:=0.015; MCat(.55,0.5)(<30,Ph) %<<== default ratio_thickness_bond:=0.03; MCat(1, 0.5)(<30,Ph) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.005",(0,1bp)); label.urt("0.015",(0.36w,1bp)); label.urt("0.030",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Char/bond thickness} \index{ratio\_char\_bond}% \begin{verbatim} default: ratio_char_bond=1.5 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:ratio_char_bond") fsize:=(60mm,12mm); ratio_char_bond:=1.0; MCat(0, .5)(<30,?6,6:O,3:NH) ratio_char_bond:=1.5; MCat(.5, .5)(<30,?6,6:O,3:NH) %<<== default ratio_char_bond:=2.0; MCat( 1, .5)(<30,?6,6:O,3:NH) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("1.0",(0,1bp)); label.urt("1.5",(0.36w,1bp)); label.urt("2.0",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Bond gap/bond length} \index{ratio\_bondgap\_bond}% \begin{verbatim} default: ratio_bondgap_bond= 0.15 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:ratio_bondgap_bond") fsize:=(60mm,12mm); ratio_bondgap_bond:=0.10; MCat(0.1, .5)(<30,Ph) ratio_bondgap_bond:=0.15; MCat(.55, .5)(<30,Ph) %<<== default ratio_bondgap_bond:=0.20; MCat(1 , .5)(<30,Ph) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.10",(0,1bp)); label.urt("0.15",(0.36w,1bp)); label.urt("0.20",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom/bond length} \index{ratio\_atom\_bond}% \begin{verbatim} default: ratio_atom_bond= 0.36 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:ratio_atom_bond") fsize:=(60mm,12mm); ratio_atom_bond:=0.25; MCat(0.1, .5)(<30,?6,3:O) ratio_atom_bond:=0.33; MCat(.55, .5)(<30,?6,3:O) %<<== default ratio_atom_bond:=0.45; MCat(1, .5)(<30,?6,3:O) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.25",(0,1bp)); label.urt("0.33",(0.36w,1bp)); label.urt("0.45",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Wedge/bond length} \index{ratio\_wedge\_bond}% \begin{verbatim} default: ratio_wedge_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:ratio_wedge_bond") fsize:=(70mm,12mm); ratio_wedge_bond:=0.1; MCat(0.05,.5)(?6,4:*/_) ratio_wedge_bond:=0.12; MCat(.55, .5)(?6,4:*/_) %<<== default ratio_wedge_bond:=0.2; MCat(1 , .5)(?6,4:*/_) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.10",(0,1bp)); label.urt("0.12",(0.36w,1bp)); label.urt("0.20",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Figure atom gap/atom length} \index{ratio\_atomgap\_atom}% \begin{verbatim} default: ratio_atomgap_atom= 0.050 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:ratio_atomgap_atom",":<30,!2`0.5,2:O") fsize:=(70mm,12mm); sw_frame:=sw_frame+Atom; ratio_atomgap_atom:=0.00; MCat(0, .5)(scantokens(mc)) ratio_atomgap_atom:=0.050; MCat(.5,.5)(scantokens(mc)) %<<== default ratio_atomgap_atom:=0.12; MCat(1, .5)(scantokens(mc)) ext(defaultscale:=0.75; labeloffset:=1bp; label.urt("0.00",(0.05w,1bp)); label.urt("0.05",(0.45w,1bp)); label.urt("0.12",(0.85w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Chain/ring length} \index{ratio\_chain\_ring}% \begin{verbatim} default: ratio_chain_ring= 0.66 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:ratio_chain_ring") fsize:=(70mm,12mm); ratio_chain_ring:= 0.4; MCat(0.05,.5)(<30,?6,4:/!) ratio_chain_ring:= 0.66; MCat(.45, .5)(<30,?6,4:/!) %<<== default ratio_chain_ring:= 1; MCat(1, .5)(<30,?6,4:/!) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.40",(0,1bp)); label.urt("0.66",(0.3w,1bp)); label.urt("1.0" ,(0.62w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Hash gap/bond length} \index{ratio\_hashgap\_bond}% \begin{verbatim} default: ratio_hashgap_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:ratio_hashgap_bond",":<30,!2,2:/*_`1.5") fsize:=(70mm,15mm); ratio_hashgap_bond:=0.06; MCat(0.08,.5)(scantokens(mc)) ratio_hashgap_bond:=0.12; MCat( .55,.5)(scantokens(mc)) %<<== default ratio_hashgap_bond:=0.20; MCat(1, .5)(scantokens(mc)) ext(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.06",(0,1bp)); label.urt("0.12",(0.4w,1bp)); label.urt("0.20",(0.77w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- %%%%\newpage %----------------------------------------------------------------------------- \subsection{Drawing mode} %----------------------------------------------------------------------------- \subsubsection{Numbering atom} \index{sw\_numbering}% \index{Atom}% \index{numbering\_start}% \index{numbering\_end}% \begin{verbatim} sw_numbering=Atom numbering_start:=3; numbering_end:=8; default: sw_numbering=0 sw_numbering:=Atom; MC(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch numbering atom") fsize:=(60mm,10mm); ratio_chain_ring:=1; numbering_start:=3; numbering_end:=8; sw_numbering:=Atom; MC(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Numbering bond} \index{numbering\_start}% \index{numbering\_end}% \index{Bond}% \begin{verbatim} sw_numbering=Bond numbering_start:=3; numbering_end:=8; default: sw_numbering=0 sw_numbering:=Bond; MC(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch numbering bond") fsize:=(60mm,10mm); ratio_chain_ring:=1; numbering_start:=3; numbering_end:=8; sw_numbering:=Bond; MC(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Trimming mode} \index{sw\_trimming}% \begin{verbatim} sw_trimming:=0; ** default msize:=(1,0.7); MCat(0.2,0.3)(Ph) MCat(0.8,0.7)(Ph) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch trimming") fsize:=(60mm,20mm); sw_frame:=Bothside+Mol; msize:=(1,.7); MCat(.2,.3)(Ph) MCat(.8,.7)(Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_trimming:=1; MCat(0.2,0.3)(Ph) MCat(0.8,0.7)(Ph) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch trimming") fsize:=(60mm,20mm); sw_frame:=Bothside+Mol; sw_trimming:=1; msize:=(1,.7); MCat(.2,.3)(Ph) MCat(.8,.7)(Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Expand mode} \index{sw\_expand}% \begin{verbatim} MCat(0, .5)(<30,Ph,4:/COOH,3:/NH2) sw_expand:=1; MCat(1, .5)(<30,Ph,4:/COOH,3:/NH2) ** default: sw_expand=0 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch Expand",":<30,Ph,4:/COOH,3:/NH2") fsize:=(60mm,20mm); MCat(0, .5)(scantokens(mc)) sw_expand:=1; MCat(1, .5)(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Abbreviate group} \index{Group}% \index{sw\_abbreviate}% \begin{verbatim} ** default: sw_abbreviate=Group \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch abbreviate group",":<30,Ph,4:/Cl,3:/F") fsize:=(60mm,12mm); MCat(.15, .5)(scantokens(mc)) sw_abbreviate:=Group; MCat(.85, .5)(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Abbreviate bond type} \index{Bond}% \index{sw\_abbreviate}% \begin{verbatim} ** default: sw_abbreviate=Bond \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch abbreviate bondtype",":<30,Ph,4:/Cl,3:/F") fsize:=(60mm,12mm); MCat(.15, .5)(scantokens(mc)) sw_abbreviate:=Bond; MCat(.85, .5)(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Frame} %----------------------------------------------------------------------------- \subsubsection{Figure frame} \index{sw\_frame}% \index{Bothside}% \index{Inside}% \index{Outside}% \begin{verbatim} ** default:sw_frame=0 (Draw figure frame) fmargin:=(5mm,2mm); sw_frame=Outside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch font frame 1") fsize:=(30mm,10mm); fmargin:=(5mm,1.5mm); sw_frame:=Outside; MC(<30,Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Frame inside margin) sw_frame=Inside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch font frame 2") fsize:=(30mm,10mm); fmargin:=(5mm,1.5mm); sw_frame:=Inside; MC(<30,Ph) endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Draw both frame) sw_frame=Bothside=Inside+Outside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch font frame 3") fsize:=(30mm,10mm); fmargin:=(5mm,1.5mm); sw_frame:=Bothside; MC(<30,Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Molecular frame} \index{Mol}% \begin{verbatim} sw_frame=Mol ** default:sw_frame=0 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm("EN:Switwch molecular frame") sw_frame:=Outside; fsize:=(40mm,11mm); msize:=(1,1); sw_frame:=sw_frame+Mol; MC(<30,Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom frame} \index{Atom}% \begin{verbatim} sw_frame=Atom ** default: sw_frame=0 MC(<30,COOH,!,COOH) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:Switwch atom frame") fsize:=(60mm,10mm); sw_frame:=sw_frame+Atom; MC(<30,COOH,!,COOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Parameter setting} \subsubsection{Local parameter setting} \index{beginfigm()}% \index{endfigm}% \begin{verbatim} beginfigm() MC(Ph) endfigm beginfigm() %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- MC(Ph) endfigm beginfigm() MC(Ph) endfigm \end{verbatim} %------------------------------------------------------ \quad \begin{mplibcode} fsize:=(15mm,12mm); beginfigm("EN:Local setting 1") MC(Ph) endfigm beginfigm("EN:Local setting 2") ratio_thickness_bond:=0.05; MC(Ph) endfigm beginfigm("EN:Local setting 3") MC(Ph) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Global parameter setting} \begin{verbatim} beginfigm() MC(Ph) endfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- beginfigm() MC(Ph) endfigm beginfigm() MC(Ph) endfigm \end{verbatim} %---------------------------------------------------- \quad \begin{mplibcode} save_ratio:=ratio_thickness_bond; fsize:=(15mm,12mm); beginfigm("EN:Global setting 1") MC(Ph) endfigm ratio_thickness_bond:=0.05; beginfigm("EN:Global setting 2") MC(Ph) endfigm beginfigm("EN:Global setting 3") MC(Ph) endfigm ratio_thickness_bond:=save_ratio; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Function} %----------------------------------------------------------------------------- \subsection{Function MC()} \index{MC()}% \begin{verbatim} (Draw molecule) msize=(a,b) **default (1,1) mposition=(c,d) **default (0.5,0.5) a: ratio molecular width/figure width b: ratio molecular hight/figure hight c: x axis position d: y axis position beginfigm() MC(<30,Ph,3:/F,4:/Cl) endfigm \end{verbatim} %------------------------------------------------ \begin{mplibcode} beginfigm("EN:MC() ") fmargin:=(0.5mm,0.5mm); fsize:=(40mm,15mm); sw_frame:=Outside+Mol; MC(<30,Ph,4:/Cl,3:/F) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Function MCat()} \index{MCat()}% \begin{verbatim} (Draw molecule at mposition) MCat(c,d)(....) : mposition:=(c,d); MC(....) c: x axis position d: y axis position defaultsize:=5bp; fsize:=(60mm,40mm); fmargin:=(3mm,3mm); blength:=0.07; sw_frame:=Outside; mangle:=0; for i=1 step -0.5 until 0: for j=0 step 0.33 until 1: MCat(j,i)(Ph,4:N) add(drawarrow((A1+A1up**aw)..A1); label(decimal(mangle), p0+(0.5w,0.5h)); ) mangle:=mangle+30; endfor endfor \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm("EN:MCat()") defaultscale:=0.6; fsize:=(60mm,40mm); fmargin:=(3mm,3mm); blength:=0.07; sw_frame:=Outside; mangle:=0; for i=1 step -0.5 until 0: for j=0 step 0.33 until 1: MCat(j,i)(Ph,4:N) add( drawarrow((A1+A1up**aw)..A1); label(decimal(mangle),p0+(0.5w,0.5h)); ) mangle:=mangle+30; endfor endfor endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Function mc\_check()} \index{mc\_check()}% \begin{verbatim} (immediately compile) beginfigm("EN:Pyridine") MC(<30,Ph,2:N) endfigm (check mcf and compile) ** mc_check(mc) : error count beginfigm("EN:Pyridine", ":<30,Ph,}2:N") % ** extra '}' if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} %----------------------------------------------------- \quad \begin{mplibcode} beginfigm("EN:Pyridine",":<30,Ph,2:N") sw_trimming:=0; fsize:=(12mm,12mm); if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm beginfigm("EN:Pyridine",":<30,Ph,2):N") sw_trimming:=0; fsize:=(12mm,12mm); if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} %----------------------------------------------------- \begin{verbatim} mc_check(mc)=0 mc_check(mc)>=1 \end{verbatim} %=============================================================================== \newpage \subsection{Function add()} \index{add()}% \index{plus}% \index{minus}% \index{lonepair}% \index{lonepairdiam}% \index{lonepairspace}% \index{circlediam}% \index{circlepen}% \index{w}% \index{h}% \index{aw}% \index{em}% \index{p0}% \index{l}% \index{/*}% \index{**}% \index{\textgreater\textgreater}% \index{An}% \index{A[]}% \index{A[]ang}% \index{A[]up}% \index{A[]left}% \index{A[]right}% \index{A[]down}% \index{Bn}% \index{B[]}% \index{B[]s}% \index{B[]m}% \index{B[]e}% \index{B[]ang}% \index{B[]up}% \index{B[]left}% \index{B[]right}% \index{B[]down}% \index{defaultscale}% \index{labeloffset}% \begin{verbatim} (Add label to molecule) w: molecular width h: molecular height aw: atom font size em: label font size p0: origin of molecular structure l: bond length An: atom number A[m]: atom position A[m]ang: branch angle of A[m] A[m]up: dir A[m]ang A[m]left: dir A[m]ang+90 A[m]right: dir A[m]ang-90 A[m]down: dir A[m]ang+180 Bn: bond number B[m]: bond(path) B[m]s: bond start position B[m]m: bond middle position B[m]e: bond end position B[m]ang: bond angle B[m]up: dir B[m]ang B[m]left: dir B[m]ang+90 B[m]right: dir B[m]ang-90 B[m]down: dir B[m]ang+180 plus : '+' circled minus : '-' circled circlediam = 0.6aw (default) circlepen = 0.2bp (default) lonepair r: ':' rotated r lonepairdiam = 0.3aw (default) lonepairspace = 0.7aw (default) ** : scaled << : rotated a /* b : point b of a beginfigm("EN:add() 1") fsize:=(70mm,40mm); sw_frame:=sw_frame+Atom+Mol; max_blength:=10mm; msize:=(.91,.9); MCat(.5,.85)(<30,?6,{2,5}:O) add( defaultscale:=.8; labeloffset:=.3aw; dotlabel.lft("p0",p0); dotlabel.rt( "p0+(w,h)",p0+(w,h)); dotlabel.ulft("A1",A1); drawarrow A1..A1+__*l< bottom arc_br : arc bottom right beginfigm("EN:Maltose","MW:342.3", %------------------------------------------------------- ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH, ", ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------- fsize:=(50mm,20mm); if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} %------------------------------------------------- \begin{mplibcode} beginfigm("EN:Maltose","MW:342.3", %------------------------------------------------------- ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH, ", ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------- fsize:=(50mm,20mm); if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode} %----------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \subsection{Erythromycin} \noindent% %---------------------------------------------------------------------------- \begin{verbatim} beginfigm("EN:Erythromycin","MW:733.93") fsize:=(120mm,30mm); MC(<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, 14:O,13:/*Et,{1,9}://O, {2',4,6^-35,8,10',12^35}:/*_, {6^35,11,12^-35}:*/OH, @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##, @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ) ext(defaultscale:=0.8; label.lrt("fm: "&cal_FM,(0,h-5mm)); label.lrt("mw: "&cal_MW,(0,h-9mm)); label.lrt("MW: "&inf_MW,(0,h-13mm)); ) endfigm; \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm("EN:Erythromycin","MW:733.93") fsize:=(120mm,30mm); MC(<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, 14:O,13:/*Et,{1,9}://O, {2',4,6^-35,8,10',12^35}:/*_, {6^35,11,12^-35}:*/OH, @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##, @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?!) ext(defaultscale:=0.8; label.lrt("fm: "&cal_FM,(0,h-5mm)); label.lrt("mw: "&cal_MW,(0,h-9mm)); label.lrt("MW: "&inf_MW,(0,h-13mm));) endfigm; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Paclitaxel} \noindent% \begin{verbatim} beginfigm("EN:Paclitaxel","MW:853.918", %--------------------------------------------------------------------- ": ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", ": 4:??,6:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", ": @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr ") %--------------------------------------------------------------------- fsize:=(140mm,30mm); if mc_check(mc)=0: MCat(0,0.5)(scantokens(mc)) sw_numbering:=Atom; MCat(0.6,0.5)(scantokens(mc)) sw_numbering:=Bond; MCat(1,0.5)(scantokens(mc)) fi endfigm \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm("EN:Paclitaxel","MW:853.918", %--------------------------------------------------------------------- ": ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", ": 4:??,6:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", ": @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr ") %--------------------------------------------------------------------- fsize:=(160mm,40mm); if mc_check(mc)=0: MCat(0,0.5)(scantokens(mc)) sw_numbering:=Atom; MCat(0.5,0.5)(scantokens(mc)) sw_numbering:=Bond; MCat(1,0.5)(scantokens(mc)) fi endfigm \end{mplibcode} %---------------------------------------------------------------------------- \newpage \subsection{Chlorophyll a} \noindent% \begin{verbatim} beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-", "= sw_output:=Fig+Calc+Mcode;", "= fsize:=(100mm,30mm);") if op_row>=1: scantokens(op) fi if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% \end{verbatim} %------------------------------------------------------------------------------------ \begin{mplibcode} beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-", "= sw_output:=Fig+Calc+Mcode;", "= fsize:=(100mm,30mm);") if op_row>=1: scantokens(op) fi if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Dinophysistoxin-1} \noindent% \begin{verbatim} beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(120mm,20mm); if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm; \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(120mm,20mm); if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm; \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage %---------------------------------------------------------------------------- \subsection{Maitotoxin} \noindent% %-------------------------------------------------------------------------------- \begin{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} beginfigm("t:EN","v:Maitotoxin") sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(150mm,80mm); fmargin:=(3mm,3mm); sw_frame:=Outside; if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %-------------------------------------------------------------------------------- \end{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} beginfigm("t:EN","v:Maitotoxin") sw_output:=Fig+Calc+Mcode; fsize:=(150mm,80mm); fmargin:=(3mm,3mm); sw_frame:=Outside; %% mc_length:=40; if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %-------------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \subsection{TCA cycle} \noindent% \begin{mplibcode} beginfigm("EN:TCA cycle") fsize:=(160mm,75mm); max_blength:=5mm; %-------------------------------------------------------------------------------- COOH:='(//O,!,OH); HOCO:='(OH,!,//O,); MCat(0.33, 1)(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate MCat(0.66, 1)(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate MCat(1, 1)(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate MCat(1, 0.58)(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate MCat(1, 0.05)(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate MCat(0.66,0.05)(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate MCat(0.33,0.05)(<30,HOCO,!3,//O,!,"{S-CoA}") % Succinyl-CoA MCat(0, 0.05)(<30,HOCO,!3,COOH) % Succinate MCat(0, 0.55)(<30,HOCO,!,!~dr,!,COOH) % Fumarate MCat(0, 1)(<30,HOCO,!3,COOH,3:/OH) % L-Malate %-------------------------------------------------------------------------------- ext( defaultfont:="uhvr8r"; defaultscale:=0.75; ext_setup; def sel_dir(expr rot)= save tx; nA:=rot; if nA>=360: nA:=nA-360; fi if (nA<30)or(nA>330): def tx=top enddef; elseif (nA>=30)and(nA<=150): def tx=lft enddef; elseif (nA>150)and(nA<210): def tx=bot enddef; elseif (nA>=210)and(nA<=330): def tx=rt enddef; fi enddef; def reaction_arrow(expr a)(expr r)(expr p)(expr sa,la)(expr sb,lb)(expr sc,lc)(expr sd,ld)= drawarrow ((0,0)..(a,0)) rotated r shifted p; if sa<>"": draw ((0.5a,0){dir 180}..{dir 90}(0,.5a*la)) rotated r shifted p; sel_dir(r); label.tx(sa,p+((0,0.5a*la) rotated r)); fi if sb<>"": draw ((0.5a,0){dir 0}..{dir 90}(a,.5a*lb)) rotated r shifted p; sel_dir(r); label.tx(sb,p+((a,0.5a*lb) rotated r)); fi if sc<>"": draw ((0.5a,0){dir 180}..{dir -90}(0,-.5a*lc)) rotated r shifted p; sel_dir(r+180); label.tx(sc,p+((0,-0.5a*lc) rotated r)); fi if sd<>"": draw ((0.5a,0){dir 0}..{dir -90}(a,-.5a*ld)) rotated r shifted p; sel_dir(r+180); label.tx(sd,p+((a,-0.5a*ld) rotated r)); fi enddef; def r_arrow(expr a)(expr r)(expr p)(expr sc,lc)(expr sd,ld)= reaction_arrow(a)(r)(p)("",0)("",0)(sc,lc)(sd,ld) enddef; %------------------------------------------------------------------------ save dx; pair dx; dx:=(12mm,0); label.bot("Oxaloacetate",p1+dx); label.bot("Citrate",p2+dx); label.bot("cis-Aconitate",p3+dx); label.bot("Isocitrate",p4+dx); label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx); label.bot("Succinyl-CoA",p7+dx); label.bot("Succinate",p8+dx); label.bot("Fumarate",p9+dx); label.bot("L-Malate",p10+dx); sw_label_emu:=1; ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO2",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1); r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1); r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0); r_arrow(10mm)( 0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5); defaultscale:=1.5; label("TCA-cycle",(0.5w,0.5h)); ) endfigm \end{mplibcode} %------------------------------------------------------------------------ \begin{verbatim} beginfigmy"EN:TCA cycle") fsize:=(160mm,75mm); max_blength:=5mm; COOH:='(//O,!,OH); HOCO:='(OH,!,//O,); MCat(0.33, 1)(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate MCat(0.66, 1)(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate MCat(1, 1)(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate MCat(1, 0.58)(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate MCat(1, 0.05)(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate MCat(0.66,0.05)(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate MCat(0.33,0.05)(<30,HOCO,!3,//O,!,"{S-CoA}") % Succinyl-CoA MCat(0, 0.05)(<30,HOCO,!3,COOH) % Succinate MCat(0, 0.55)(<30,HOCO,!,!~dr,!,COOH) % Fumarate MCat(0, 1)(<30,HOCO,!3,COOH,3:/OH) % L-Malate ext( defaultfont:="uhvr8r"; defaultscale:=0.75; ext_setup; save dx; pair dx; dx:=(12mm,0); label.bot("Oxaloacetate",p1+dx); label.bot("Citrate",p2+dx); label.bot("cis-Aconitate",p3+dx); label.bot("Isocitrate",p4+dx); label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx); label.bot("Succinyl-CoA",p7+dx); label.bot("Succinate",p8+dx); label.bot("Fumarate",p9+dx); label.bot("L-Malate",p10+dx); sw_label_emu:=1; ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO_2_",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1); r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1); r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0); r_arrow(10mm)( 0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5); defaultscale:=1.5; label("TCA-cycle",(0.5w,0.5h)); ) endfigm \end{verbatim} %------------------------------------------------------------------------ \section{Example to use mcf2graph} \subsection{MetaPost souce file} \index{mcf2graph.mp}% \index{sw\_output}% \index{tag}% \index{var}% \begin{verbatim} %------------------------------------------------------------------------- input mcf2graph; > input main macro %------------------------------------------------------------------------- sw_output:=Info; % aux(information) file output on > global setting %%%% sw_output:=Report; > report output %%%% sw_output:=MOL2k; > MOL file output fsize:=(60mm,40mm); % (figure width,figure height) > tag1:="J"; > jobname tag2:="C"; > char No tag3:="mw"; % calculated molecular weight > tag4:="fm"; % calculated molecular formula > outputformat:="png"; hppp:=vppp:=0.1; > PNG output outputtemplate:="c%3c-%{EN_}.png"; > %------------------------------------------------------------------------- beginfigm("EN:Ampicillin","MW:349.405") > information MC(<45,?4,-3=?5,2:N,7:S, > immediately compile 3^45:/*H,1://O^15,5:/*COOH^-18,6:??, > @4,*\^15,NH,!,//O,!,/*NH2,!,Ph) > endfigm > %------------------------------------------------------------------------ beginfigm("EN:Cholesterol","MW:386.65", >information %---------------------------------------- > ": <30,?6,{-4,-2}=?6,-4=?5,7=dl, ", > mc1 ": 10:/*H^180,11:/*H^-60,17:/*H^-54, ", > mc2 ": {4,12}:*/_^60, ", > mc3 ": @-1,18,/*_,-60,!3,?! ") > mc4 %---------------------------------------- > if mc_check(mc)=0: MC(scantokens(mc)) fi > mc=mc1 - mc4 endfigm > %------------------------------------------------------------------------------ beginfigm("f:mcf_library.mcf","t:EN","v:Adenine") > from mcf_library.mcf if mc_check(mc)=0: MC(scantokens(mc)) fi > select EN="Adenine" endfigm > %------------------------------------------------------------------------------ beginfigm("t:EN","v:Guanine") > select EN="Guanine" if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %------------------------------------------------------------------------------ beginfigm("t:EN","v:Cytosine") > select EN="Cytosine" if mc_check(mc)=0: MC(scantokens(mc)) fi > endfigm > %------------------------------------------------------------------------------ beginfigm("t:n","v+:4") > v+:4 = select No.4 if mc_check(mc)=0: MC(scantokens(mc)) fi > keep file open endfigm > %------------------------------------------------------------------------------ forever: %%%%%%%%%% beginfigm("f:mcf_library","v+:*") > select all beginfigm("f:mcf_library","t:EXA","v+:1") > 'v+:1'= select EXA=1 if f_EOF=0: if mc_check(mc)=0: MC(scantokens(mc)) fi fi > keep file open endfigm > exitif f_EOF=1; > exit if file end endfor %------------------------------------------------------------------------------ bye \end{verbatim} %------------------------------------------------------------------------ \noindent% \newpage \subsection{Molecular library file} \begin{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % molecular library file mcf_library.mcf by Akira Yamaji 2022.10.10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tag1:var1;tag2:var2;tag3:var3 ..... % first character of line "%" comment out % first character of line ":" start MCF % first character of line ";" stop MCF % first character of line "=" start parameter setting % first character of line "*" start ext(...) % first character of line "+" start add(...) % Cat = Category,EN = Name,MW = Molecular weight %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cat:Category;EN:Example;MW:100.00;EXA:% = sw_frame:=Atom; : <30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH * defaultscale:=.5; label.bot(decimal(fig_num)&":"&inf_EN,(.5w,0)); + defaultscale:=.3; label.bot("A2",A2) withcolor red; label.top("A6",A6) withcolor red; label.top("A9",A9) withcolor red; ; %============================================================================== Cat:biological;EN:Adenine;MW:135.13;EXA:1 : <30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH ; %------------------------------------------------------------------------------ Cat:biological;EN:Guanine;MW:151.13;EXA:1 : <30,?6,3=?5,{1,3,9}=dl,{2,9}:N,{6,7}:NH,5://O,1:/NH2 ; %------------------------------------------------------------------------------ Cat:biological;EN:Cytosine;MW:111.10;EXA:1 : <30,?6,{4,6}=dl,4:N,3://O,2:NH,5:/NH2 ; %------------------------------------------------------------------------------ Cat:biological;EN:Thymine;MW:126.11;EXA:1 : <30,?6,3=dl,{2,6}:NH,{1,5}://O,4:/_ ; %------------------------------------------------------------------------------ Cat:biological;EN:Uracil;MW:112.09;EXA:1 : <30,?6,6=dl,{3,5}://O,{2,4}:NH ; %== Amino acid ================================================================ Cat:biological;EN:Glycine;MW:75.07;EXA:- : <30,NH2,!2,COOH ; %------------------------------------------------------------------------------ \end{verbatim} %------------------------------------------------------------------------------ \noindent% \newpage \subsection{Function mc\_query()} \index{mc\_query()}% \paragraph{(Example)} \begin{verbatim} %-------------------------------------------------------------- % mc_query() % % "f:filename" : input file name (default "mcf_library.mcf") % "o:filename" : output file name (default "temp.mcf") % % "a:sort-key" : sort by sort-key ascending % "d:sort-key" : sort by sort-key descending % % operator : = , <> , <= , >= , < , > % % filter 1 : Cat=biological % filter 2 : MW>=285 % filter 3 : MW<=295 % %-------------------------------------------------------------- mc_query("Cat=biological","MW>=285","MW<=290","a:EN"); %-------------------------------------------------------------- \end{verbatim} %--------------------------------------------------------------- \paragraph{(output)} \begin{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Input : mcf_library.mcf [506] % Output : temp.mcf [5] % Filter(1): Cat =biological % Filter(2): MW >= 285 % Filter(3): MW <= 290 % Sort key : EN (ascending) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cat:biological;EN:Atoropin;MW:289.375;EXA:1 : <30,O,!,//O,!2,Ph,@$1,\~zb^-60,|,?7`1.1,@6,*\^190`1.25,N!,&3~wb,$3:/!OH~wv ; Cat:biological;EN:Luteolin;MW:286.24;EXA:- : <30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,{2,6,14,15}:/OH ; Cat:biological;EN:Lycorine;MW:287.315;EXA:1 : <30,Ph,{-4,-2}=?6,{6,(9,12)}=?5,13=dl,8:N,{15,17}:O, {9'^180,10^60}:*/H,{13,14'}:*/OH ; Cat:biological;EN:Morphine;MW:285.343;EXA:1 : <30,Ph,{2,-4}=?6,(1,12)=?5[2],-1:O,-1=zb, @7,60~wf`0.75,70~si_`1.3,45,N!,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH ; Cat:biological;EN:Piperine;MW:285.343;EXA:1 : <30,Ph,-1=?5,{-1,-3}:O,@4,\,!!,!,!!,!,//O,!,?6,-6:N ; \end{verbatim} %------------------------------------------------------------------------------ \noindent% \newpage \subsection{Information aux file output} \paragraph{(Option parameter setting)} \index{J}% \index{C}% \index{NO}% \index{MW}% \index{MI}% \index{EN}% \index{JN}% \index{FM}% \index{USE}% \index{mw}% \index{fm}% \index{mi}% \index{w}% \index{h}% \index{Info}% \index{Table}% \index{Temp}% \begin{verbatim} sw_output:=Info; %% tag1:var1;tag2:var2 sw_output:=Info+Table; %% tag1;tag2 var1;var2 \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=1 FILENAME (sw_output=Info) >mpost -s ahlength=2 FILENAME (sw_output=Info+Table) \end{verbatim} \paragraph{(Sourse)} \begin{verbatim} beginfigm("EN:Ampicillin") .... endfigm beginfigm("EN:Cholesterol") .... endfigm beginfigm("EN:Limonin") .... endfigm beginfigm("EN:beta-Carotene") .... endfigm \end{verbatim} \paragraph{(Setting)} \begin{verbatim} tag1:="J"; tag2:="C"; tag3:="mw"; tag4:="fm"; tag5:="EN"; \end{verbatim} \paragraph{(Output)} \index{aux\_delimiter}% \begin{verbatim} (sw_output=Info) F:mcf_man_soc;C:1;mw:349.40462;fm:C16H19N3O4S;EN:Ampicillin F:mcf_man_soc;C:2;mw:386.6532;fm:C27H46O;EN:Cholesterol F:mcf_exa_soc;C:3;mw:470.5113;fm:C26H30O8;EN:Limonin F:mcf_exa_soc;C:4;mw:536.8722;fm:C40H56;EN:beta-Carotene (sw_output=Info+Table) F;C;mw;fm mcf_man_soc;1;349.40462;C16H19N3O4S;Ampicillin mcf_man_soc;2;386.6532;C27H46O;Cholesterol mcf_exa_soc;3;470.5113;C26H30O8;Limonin mcf_exa_soc;4;536.8722;C40H56;beta-Carotene (aux_delimiter="/") F:mcf_man_soc/C:1/mw:349.40462/fm:C16H19N3O4S/EN:Ampicillin F:mcf_man_soc/C:2/mw:386.6532/fm:C27H46O/EN:Cholesterol F:mcf_exa_soc/C:3/mw:470.5113/fm:C26H30O8/EN:Limonin F:mcf_exa_soc/C:4/mw:536.8722/fm:C40H56/EN:beta-Carotene \end{verbatim} \paragraph{(Tag)} \begin{verbatim} J : jobname C : char number NO : serial number EN : english name JN : japanese name FM : formula from literature data MW : molecular weight from literature data MI : monoisotopic mass from literature data USE : the use mw : molecular weight calculated mi : monoisotopic mass calculated fm : molecular formula calculated w : figure width h : figure height \end{verbatim} %------------------------------------------------------------------------ \noindent% \newpage \subsection{MCF aux file output} \paragraph{(Option parameter setting)} \index{Mcode}% \index{Temp}% \begin{verbatim} sw_output:=Mcode; %% output 'temp-mc.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=3 FILENAME (sw_output=Info+Mcode) \end{verbatim} \paragraph{(Output mcf file)} \begin{verbatim} sw_output=Mcode %% file name = 'temp-mc.aux' (result) <30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH \end{verbatim} \paragraph{(Output library file)} \begin{verbatim} sw_output=Info+Mcode %% file name = 'jobname-lib.aux' (result) Cat:biological;EN:Adenine;MW:135.13;EXA:1 + <30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH +-------------------------------------------------- \end{verbatim} %------------------------------------------------------------------------ \paragraph{(LuaLaTeX example)} %----------------------------------------------------------------------- \begin{verbatim} %----------------------------------------------------------------------- \begin{mplibcode} beginfigm("t:EN","v:Vancomycin") sw_output:=Mcode; %%%% output temp-mc.aux %%%% endfigm; \end{mplibcode} %----------------------------------------------------------------------- \verbatiminput{temp-mc.aux} %----------------------------------------------------------------------- \end{verbatim} %----------------------------------------------------------------------- \begin{verbatim} (result) file name = 'temp-mc.aux' <30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, ?6,@-4,?6,@6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH, 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,{5,7,16,24,25,33,42}:O, 32:*/H^60,10:/Me,{12,31}:*/_,27://_,37:/*_,28:/OH,{3,29}:/*OH \end{verbatim} %------------------------------------------------------------------------ \newpage \noindent% \subsection{Report output} \paragraph{(Option parameter setting)} \index{sw\_output}% \index{Report}% \begin{verbatim} sw_output:=Report; %% file name = 'jobname-report.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=7 FILENAME \end{verbatim} \paragraph{(Output)} \begin{verbatim} =========================================================================== No[3],Name,Category,File --------------------------------------------------------------------------- <30,?6,{4,6}=dl,4:N,3://O,2:NH,5:/NH2 --------------------------------------------------------------------------- Row[1],Length[37],Commands[7],&Code[59],Warning[0] --------------------------------------------------------------------------- =[1]({}=[1]), :[4]({}:[0]), '()[0] @[0],&[0],<[1],~[0],^[0],`[0],>[0],|[0],||[0],#[0],##[0] --------------------------------------------------------------------------- Width[30.92432],Height[42.36536], Shift x[0],Shift y[-12.99213] Bond length[11.33856],Atom size[4.8819] --------------------------------------------------------------------------- Atom[9],Bond[9],Ring[1],Hide H[2] < NO. >( x axis , y axis ) A1 C ( 0 , 0 ) 3 1 A2 N ( 1 , 0 ) 3 A3 C ( 2 , 0 ) 4 A4 N ( 2 , 1 ) 3 A5 C ( 1 , 2 ) 4 A6 C ( 0 , 1 ) 3 1 A7 O ( 3 , 0 ) 2 A8 H ( 1 , -1 ) 1 A9 NH2 ( 1 , 2 ) 1 --------------------------------------------------------------------------- < NO. >< bond (sdt)> B1 1 -> 2 ( 1) 330 ( -30) 1 ( 11) B2 2 -> 3 ( 1) 30 ( 30) 1 ( 11) B3 3 -> 4 ( 1) 90 ( 90) 1 ( 11) B4 4 -> 5 ( 2) 150 ( 150) 1 ( 11) B5 5 -> 6 ( 1) 210 ( -150) 1 ( 11) B6 6 -> 1 ( 2) 270 ( -90) 1 ( 11) B7 3 -> 7 ( 2) 330 ( -30) 0.66 ( 7) B8 2 -> 8 ( 1) 270 ( -90) 0.36 ( 4) B9 5 -> 9 ( 1) 90 ( 90) 0.66 ( 7) --------------------------------------------------------------------------- ( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ] C ( 12.0107)[ 12] * 4 48.04279[ 48] H ( 1.00793)[ 1.00783] * 5 5.03967[ 5.03914] N ( 14.0067)[ 14.00307] * 3 42.0201[ 42.0092] O ( 15.9994)[ 15.99492] * 1 15.9994[ 15.99492] Molecular Weight [Mono Isotopic] = 111.1019[ 111.04326] --------------------------------------------------------------------------- Weight Calc: 111.1019 / Input: 111.10 / weight gap= 0.00195 Fomula Calc: C4H5N3O / Input: =========================================================================== \end{verbatim} \newpage %------------------------------------------------------------------------ \noindent% \subsection{MOL file output} \paragraph{(Option parameter setting)} \index{sw\_output}% \index{MOL2k}% \index{MOL3k}% \begin{verbatim} sw_output:=MOL2k; % MOL(V2000) sw_output:=MOL3k; % MOL(V3000) \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=5 FILENAME % MOL(V2000) >mpost -s ahlength=6 FILENAME % MOL(V3000) \end{verbatim} \paragraph{(Output)} \begin{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -MCFtoMOL- EN:Caffeine 14 15 0 0 0 0 0 0 0 0999 V2000 0 0 0 C 0 0 0 0 0.86603 -0.5 0 N 0 0 0 0 1.73206 0 0 C 0 0 0 0 1.73206 1 0 C 0 0 0 0 0.86603 1.5 0 C 0 0 0 0 0 1 0 N 0 0 0 0 2.6831 -0.30902 0 N 0 0 0 0 3.27089 0.5 0 C 0 0 0 0 2.6831 1.30902 0 N 0 0 0 0 0.86603 -1.36383 0 C 0 0 0 0 -0.76894 1.44394 0 C 0 0 0 0 -0.76894 -0.44394 0 O 0 0 0 0 0.86603 2.36383 0 O 0 0 0 0 2.95299 2.1396 0 C 0 0 0 0 1 2 1 0 0 0 2 3 1 0 0 0 3 4 2 0 0 0 4 5 1 0 0 0 5 6 1 0 0 0 6 1 1 0 0 0 3 7 1 0 0 0 7 8 2 0 0 0 8 9 1 0 0 0 9 4 1 0 0 0 2 10 1 0 0 0 6 11 1 0 0 0 1 12 2 0 0 0 5 13 2 0 0 0 9 14 1 0 0 0 M END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{verbatim} %---------------------------------------------------------------------------- \newpage \subsection{LuaTeX file example} \index{Fig}% %############################################################################ \begin{verbatim} \documentclass{article} \usepackage{luamplib}% \usepackage[T1]{fontenc}% \usepackage{textcomp}% \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mplibnumbersystem{double}% \begin{mplibcode} input mcf2graph; sw_output:=Fig; max_blength:=4.5mm; defaultfont:="uhvr8r"; defaultsize:=8bp; defaultscale:=1; \end{mplibcode} \begin{document} \noindent% %-------------------------------------------------------------------- \begin{mplibcode} fsize:=(50mm,50mm); beginfigm("NO:1","EN:Limonin","MW:470.51", %---------------------------------------- ": <30,?6,{-3,-4}=?6, ", ": -5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, ", ": {13,15,17,20}:O,{3,12,21}://O, ", ": {4~wf^60,8~zf^60,18^35,18^-35}:/_, ", ": {1^60,5^180,16^60}:/*H, ", ": @14,\*,|,?5,{1,4}=dl,3:O ") %---------------------------------------- if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \begin{mplibcode} fsize:=(80mm,50mm); beginfigm("NO:2","EN:beta-carotene","MW:536.87", %------------------------------------------ ": <30,?6,3=dl,{3,5^35,5^-35}:/_, ", ": @4,\,|,!18,{1,3,5,7,9,11,13,15,17}=dr, ", ": {3,7,12,16}:/_, ", ": |,?6,6=dl,{6,2^35,2^-35}:/_ ") %------------------------------------------ if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \begin{mplibcode} fsize:=(50mm,50mm); beginfigm("NO:3","EN:Gibberellin A3","MW:346.37", %------------------------------------ ": <18,?5,3=?7,5=?6[12], ", ": @8,160`1.3,&3,13=dl,6=wf,8=wb, ", ": @5,40~zf`1,O,60,//O^180,&14~zb, ", ": 2:/COOH,7://_,13:*/OH,8:/*OH, ", ": 14:*/_,{1^60,4^60}:*/H ") %------------------------------------ if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm; %-------------------------------------------------------------------- \end{mplibcode}\\ \end{document} \end{verbatim} %############################################################################ %------------------------------------------------------------------------ \texttt{\printindex} %------------------------------------------------------------------------ \end{document}