%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Molecular Coding Format manual by Akira Yamaji 2025.09.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ** typeset by LuaLaTeX(luamplib) % ** mcf2graph must be version 5.28 % ** mcf2graph.mp and main_lib.mcf must be in the same directory to typeset %---------------------------------------------------------------------------- \documentclass[a4paper]{article} \usepackage{verbatim} \usepackage{luamplib} \usepackage{makeidx} \usepackage{hyperref} \makeindex \hypersetup{colorlinks=true,linkcolor=blue} %---------------------------------------------------------------------------- \mplibnumbersystem{double} \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mpliblegacybehavior{disabled}% \begin{mplibcode} input mcf2graph; \end{mplibcode} %---------------------------------------------------------------------------- \makeatletter% \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} mcf2graph version 5.28 \end{center} \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} max_blength:=10mm; ratio_thickness_bond:=0.015; ratio_atom_bond:=0.36; fmargin:=(2mm,1mm); fsize:=(40mm,24mm); blength:=5mm; sw_frame:=0; % Glycine beginfigm drawm("<30,NH2,!2,COOH") endfigm % L-Alanine beginfigm drawm("<30,NH2,!~wb,?,!,COOH") endfigm % L-Valine beginfigm drawm("<30,NH2,!~wb,/?!,!,COOH") endfigm % L-Leucine beginfigm drawm("<30,NH2,!~wb,/!'?!,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Isoleucine beginfigm drawm("<30,NH2,!~wb,/?z'!2,!,COOH") endfigm % L-Serine beginfigm drawm("<30,NH2,!~wb,/!OH,!,COOH") endfigm % L-Threonine beginfigm drawm("<30,NH2,!~wb,/?'!w'OH,!,COOH") endfigm % L-Cysteine beginfigm drawm("<30,NH2,!~wb,/!SH,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Methionine beginfigm drawm("<30,NH2,!~wb,/!2'S!,!,COOH") endfigm % L-Phenylalanine beginfigm drawm("<30,NH2,!~wb,/!Ph,!,COOH") endfigm % L-Tyrosine beginfigm drawm("<30,NH2,!~wb,/!Ph'(-3:/OH),!,COOH") endfigm % L-Triptophan beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Prorine beginfigm drawm("<18,?5,3:NH,4:*/COOH") endfigm % L-Glutamine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!`1,!2,?O,!,NH2") endfigm % L-Asparagine beginfigm drawm("<30,NH2,!~wb,/!'?O'!NH2,!,COOH") endfigm % L-Aspartic acid beginfigm drawm("<30,NH2,!~wb,/!COOH,!,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Glutamic acid beginfigm drawm("<30,NH2,!~wb,/!2'COOH,!,COOH") endfigm % L-Lysine beginfigm drawm("<30,NH2,!~wb,/!4'NH2,!,COOH") endfigm % L-Arginine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2`1,!2,NH,!,//NH,!,NH2") endfigm % L-Hystidine beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,|,?5,1'3=dl,3:N,5:NH") endfigm \end{mplibcode} \\ \begin{mplibcode} % L-DOPA beginfigm drawm("<30,NH2,!~wb,!,COOH,@2,!2,Ph,-3'-4:/OH") endfigm % Ornithine beginfigm drawm("<30,NH2,!~wb,/!3'NH2,!,COOH") endfigm % Citrulline beginfigm drawm("<30,NH2,!~wb,/!3'NH!'?O'!NH2,!,COOH") endfigm % GABA beginfigm drawm("<30,NH2,!4,COOH") endfigm \end{mplibcode} \\ \begin{mplibcode} % amino Levulinic acid beginfigm drawm("<30,NH2,!2,?O,!3,COOH") endfigm % 4-amino benzoic acid beginfigm drawm("<30,Ph,1:/NH2,4:/COOH") endfigm % L-Carboxyl glutamic acid beginfigm drawm("<30,NH2,!~wb,/!'?COOH'!COOH,!,COOH") endfigm % L-Hydroxy Prorine beginfigm drawm("<18,?5,1:/OH,3:NH,4:*/COOH") 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, 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} sw_frame:=Outside; blength:=0; beginfigm #(60mm,18mm); sw_numbering:=Bond; ratio_chain_ring:=1; %---------------------------------------------------------------------- drawm("<15,-30,45,-45,60,$300,$0,1^$15'2^$345'3^$30'4^$345:?~dt,5'6=vf") ++( 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 !6 : !,!,!,!,!,! <-30,!6 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,20mm); sw_numbering:=Bond; ratio_chain_ring:=1; %---------------------------------------------------------------------- drawm("<-30,!6,1^-120'2^60'3^-60'4^60'5^-60'6^60:?~dt") ++( 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} %----------------------------------------------------------------------------- \begin{verbatim} take value 0 just after jump to atom @n,! : !=0 <-30,!5,@3,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; drawm("<-30,!6,@3,!") 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 #(60mm,16mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; drawm("<-30,!6,@3,0,@5,-30") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Branch bond} \index{\textasciicircum}% ^ \index{\textasciitilde}% ~ \index{`}% \index{"!w}% \index{"!z}% \index{"!d}% \begin{verbatim} @n,! : @n,! @n,!w : @n,!~wf @n,!z : @n,!~zf @n,!d : @n,!~db @n,!dr : @n,!~dr @n,!t : @n,!~tm <30,!12, @2,!,@4,!w,@6,!z,@8,!d,@10,!dr,@12,!t \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(80mm,20mm) #@(2mm,2mm) sw_numbering:=Atom; ratio_chain_ring:=1; drawm("<30,!12,@2,!,@4,!w,@6,!z,@8,!d,@10,!dr,@12,!t") 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 #(60mm,16mm); sw_trimming:=1; drawm("<-30,#1,!2,?`2^30,!2,/!2>lr,!2,/!2>rl,!") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add group} \index{?w}% \index{?z}% \index{?d}% \begin{verbatim} ?w : ?~wf ?z : ?~zf ?d : ?~dm <30,!17,2:?,3:/!,4:/!2,7:/?!, 8:/??!,10^-15:/#.6'Ph, 11'12':?w,13'14:?z,15'16:?d \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,25mm) #@(2mm,2mm) sw_numbering:=Atom; drawm("<30,!17,2:?,3:/!,4:/!2,7:/?!,8:/??!,10^-15:/#.6'Ph,"& "11'12:?w,13'14:?z,15'16:?d") 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 #(60mm,18mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Atom; drawm("<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 #(60mm,16mm); sw_trimming:=1; sw_numbering:=Atom; drawm("<-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 #(60mm,35mm); sw_trimming:=1; ratio_chain_ring:=1; drawm("?4,3^-90'3^-30'3^90:/!3>hz,1^-60'1'1^60:/!3>vt") ++(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, \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm %%%%% EN:Left-right_right-left #(50mm,24mm); % sw_trimming:=1; drawm("<-30,!6,3^-30'3'3^30:/!3>lr,5^-30'5'5^30:/!3>rl") ++(defaultscale:=0.5; labeloffset:=2bp; label.lft(">lr",A11); label.lft(">lr",A15); label.lft(">lr",A19); label.rt(">rl",A23); label.rt(">rl",A27); label.rt(">rl",A31); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate fixed 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 #(45mm,24mm); sw_trimming:=1; drawm("<30,!4,2:/!6>30,4:/!4>-45") ++(defaultscale:=0.5; labeloffset:=2bp; label.bot(">30",A12); label.bot(">45",A17); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Rotate multiple angle} \begin{verbatim} >90'-90,... : rotate 90,-90,... <30,!6,6:/!5>90'-90'90'-90'90 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(62mm,24mm); drawm("<30,!6,6:/!5>90'-90'90'-90'90") ++(defaultscale:=0.5; labeloffset:=2bp; label.lft(">90'-90'90'-90'90",A13); label.rt(">90",A12); label.lft(">-90",A11); label.rt(">90",A10); label.lft(">-90",A9); label.rt(">90",A8); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsection{Miscellaneous} %----------------------------------------------------------------------------- \subsubsection{Abbreviated parts} \index{NH}% \index{N"!}% \index{N"!2}% \index{S?O}% \index{S?O?O}% \begin{verbatim} NH : N,/H~nl N? : N,? N?2 : N,/! S?O : S,?O S?O?O : S,?O^35,//^-35 <-30,!2,NH,!2,N?,!2,N?2,S?O,!2,S?O?O,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_trimming:=1; drawm("<-30,!2`1.2,NH,!2`1.2,N?,!2`1.2,"& "N?2,!2`1.2,S?O,!2`1.2,S?O?O,!`1.2") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{?"!}% \index{??}% \index{??"!}% \index{N?"!}% \index{dimethylamino}% \begin{verbatim} ?? : ?^35,?-35 /?! : isopropyl /??! : tert-butyl /N?! : dimethylamino <30,!11`1,2:??,4:/!,6:/?!,8:/??!,10:/N?! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); sw_trimming:=1; drawm("<30,!11`1.2,2:??,4:/!,6:/?!,8:/??!,10:/N?!") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Define group,parts} \index{define group}% \index{define group with atoms}% \index{define parts}% \index{`}% \index{``}% \begin{verbatim} `(..) : define group ``(..)(..) : define group with atoms ''(..) : define parts CF3:=`("{CF3}"); % ** group weight =0 CF3:=``("{CF3}")(C,F,F,F); ** group weight =12(C)+19(F)*3=69 iBuOH:=''(!?!,OH); drawm("<30,?6,4'6:/iBuOH,3:/CF3") \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,14mm); sw_trimming:=1; iBuOH:=''(!?!,OH); CF3:=``("{CF3}")(C,F,F,F); drawm("<30,?6,4'6:/iBuOH,3:/CF3") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Concatenate group,parts} \index{'}% \begin{verbatim} a'b : ''(a,b) <30,!8,2'6:/!?!'OH \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,14mm) #@(2mm,1mm) sw_trimming:=1; drawm("<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 #(70mm,15mm) #@(2mm,1mm) sw_trimming:=1; drawm("<30,?6,@3,!,!3,?O,!,O,n_^60,@$(6'1),H,p_^15") ++(drawdot A1 withpen pencircle scaled 3bp; drawdot A12 withpen pencircle scaled 3bp; pickup pencircle scaled 0.1bp; for i=0 upto 6: draw (A1+(l*i,l-4bp))--(l*i,l+4bp); endfor draw A1--(A1+(0,1l))--A1+(6l,1l); draw (A1+(-4bp,1l))--(A1+(4bp,1l)); draw (A1+(-4bp,0))--(A1+(4bp,0)); ) 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 #(75mm,12mm) |<(8mm) sw_numbering:=Atom; drawm("<30,!14,2'6_10'14:?~bd_r`0.5") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Change color} \index{red}% \index{blue}% \index{green}% \begin{verbatim} beginfigm drawm("<30,Ph,2'5:N,3:/NH2,4:/COOH,"& "2:red,5:blue,3=green") endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) drawm("<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:="phvro8g"; %---------------- drawm("<30,Ph,2'5:N,3:/NH2,4:/COOH") endfigm \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) atomfont:="phvro8g"; drawm("<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 @(0.2,0.5) drawm("Ph") mangle:=30; @(0.8,0.5) drawm("Ph") \end{verbatim} %----------------------------------------- %% mangle \begin{mplibcode} beginfigm #(50mm,15mm) |=(6mm) mangle:=0; @(0.2,0.5) drawm("Ph") ++(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) mangle:=30; @(0.8,0.5) drawm("Ph") ++(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);) endfigm \end{mplibcode} %------------------------------------------------------------------------------ \subsection{Size/Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Bond length [ \textbar={ }]} \index{blength}% \index{\textbar=()}% \begin{verbatim} |=(n) : abbreviated form of blength:=n; (fit to figure size) blength=0 ** default \end{verbatim} %----------------------------------------- \begin{mplibcode} %%% blength=0 beginfigm sw_frame:=Bothside; #(40mm,15mm); drawm("<30,Ph") **(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} %%%% blength>1 beginfigm sw_frame:=Bothside; #(40mm,15mm) |=(8mm) drawm("<30,Ph") **(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}% \index{\#\#}% \begin{verbatim} ##(1,1) : msize=(1,1) ** default ## p : abbreviated form of msize:=p; \end{verbatim} %--------------------------------------------- %% msize=(1) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,1) drawm("<30,Ph") **(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} ##(0.25,1) : msize=(0.25,1) ** msize=(40mm-4mm)*0.25=9mm \end{verbatim} %--------------------------------------------- %% msize=(0.25,1) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(0.25,1) drawm("<30,Ph") **(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} ##(11mm,11mm) : msize=(11mm,11mm) \end{verbatim} %--------------------------------------------- %% msize=(11mm,11mm) \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(11mm,11mm) drawm("<30,Ph") **(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} @(0.5,0.5) : mposition=(0.5,0.5) **default \end{verbatim} %--------------------------------------------- %% mposition \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,0.8) @(0.5,0.5) drawm("<30,Ph") endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} @(1,0) : mposition=(1,0) \end{verbatim} %--------------------------------------------- %% mposition \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,15mm) ##(1,0.8) @(1,0) drawm("<30,Ph") endfigm \end{mplibcode} %-------------------------------------------------------------- \begin{verbatim} @(10mm,4mm) : mposition=(10mm,4mm) \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm sw_frame:=sw_frame+Mol; #(40mm,15mm) ##(1,0.8) @(10mm,4mm) drawm("<30,Ph") **(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}% \index{\#()}% \begin{verbatim} fsize=(figure width,figure height) ** default: (30mm,20mm) # p : abbreviated form of fsize:=p; #(40mm,15mm) : fsize=(40mm,15mm) \end{verbatim} %--------------------------------------------- %% Figure size \begin{mplibcode} beginfigm sw_frame:=Outside; #(40mm,12mm) drawm("<30,Ph") **(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}% \index{\#"@()}% \begin{verbatim} fmargin=(margin left rigth,top bottom) ** default: (0.4mm,0.4mm) #@ p : abbreviated form of fmargin:=p; #@(10mm,2mm) : fmargin=(10mm,2mm) \end{verbatim} %--------------------------------------------- %% fmargin \begin{mplibcode} beginfigm sw_frame:=Bothside+Mol; #(40mm,12mm) #@(10mm,2mm) drawm("<30,Ph") **(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.25pt \end{verbatim} %--------------------------------------------- %%offset_thickness \begin{mplibcode} beginfigm #(60mm,12mm); offset_thickness:=0.0pt; @(0.1,0.5) drawm("<30,Ph") offset_thickness:=0.25pt; @(0.55,0.5) drawm("<30,Ph") offset_thickness:=0.5pt; @(1,0.5) drawm("<30,Ph") **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.25pt",(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 #(60mm,12mm); offset_bond_gap:=0.0pt; @(0.1, 0.5) drawm("<30,Ph") offset_bond_gap:=0.3pt; @(0.55,0.5) drawm("<30,Ph") %<<== default offset_bond_gap:=1.0pt; @(1, 0.5) drawm("<30,Ph") **(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 #(60mm,12mm); offset_atom:=0.0pt; @(0.1, .5) drawm("<30,?6,3:O") offset_atom:=0.8pt; @(.55, .5) drawm("<30,?6,3:O") %<<== default offset_atom:=2.0pt; @(1, .5) drawm("<30,?6,3:O") **(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.2pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); offset_wedge:=0.0pt; @(0.1,0.5) drawm("<30,?6,5:?w") offset_wedge:=0.2pt; @(0.55,0.5) drawm("<30,?6,5:?w") %<<== default offset_wedge:=0.5pt; @(1, 0.5) drawm("<30,?6,5:?w") **(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{Max bond length [ \textbar\textless{ }]} \index{max\_blength}% \index{\textbar\textless()}% \begin{verbatim} |<(n): abbreviated form of max_blength:=n; default: max_blength=10mm \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) sw_frame:=sw_frame+Mol; |<(5mm) @(0, .5) drawm("<45,?4") |<(8mm) @(.4,.5) drawm("<45,?4") |<(10mm) @(1, .5) drawm("<45,?4") %<<== default **(defaultscale:=0.6; labeloffset:=1bp; label("5mm", (0.075w,0.5h)); label("8mm", (0.42w,0.5h)); label("10mm",(0.88w,0.5h)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Ratio parameter} %----------------------------------------------------------------------------- \subsubsection{Thickness/bond length} \index{ratio\_thickness\_bond}% \begin{verbatim} default: ratio_thickness_bond=0.012 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_thickness_bond:=0.005; @(0.1,0.5) drawm("<30,Ph") ratio_thickness_bond:=0.012; @(.55,0.5) drawm("<30,Ph") %<<== default ratio_thickness_bond:=0.03; @(1, 0.5) drawm("<30,Ph") **(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{Atom/bond length} \index{ratio\_atom\_bond}% \begin{verbatim} default: ratio_atom_bond= 0.36 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_atom_bond:=0.25; @(0.1,0.5) drawm("<30,?6,3:O") ratio_atom_bond:=0.33; @(.55,0.5) drawm("<30,?6,3:O") %<<== default ratio_atom_bond:=0.45; @(1, 0.5) drawm("<30,?6,3:O") **(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{Char thickness/Atom width} \index{ratio\_char\_atom}% \begin{verbatim} default: ratio_char_atom=0.12 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm) ratio_char_atom:=0.1; @(0, 0.5) drawm("<30,?6,6:O,3:NH") ratio_char_atom:=0.12; @(.5,0.5) drawm("<30,?6,6:O,3:NH") %<<== default ratio_char_atom:=0.15; @( 1,0.5) drawm("<30,?6,6:O,3:NH") **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.1", (0,1bp)); label.urt("0.12",(0.36w,1bp)); label.urt("0.15",(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 #(60mm,12mm); ratio_bondgap_bond:=0.10; @(0.1,0.5) drawm("<30,Ph") ratio_bondgap_bond:=0.15; @(.55,0.5) drawm("<30,Ph") %<<== default ratio_bondgap_bond:=0.20; @(1 ,0.5) drawm("<30,Ph") **(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{Wedge/bond length} \index{ratio\_wedge\_bond}% \begin{verbatim} default: ratio_wedge_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(70mm,12mm); ratio_wedge_bond:=0.1; @(0.05,.5) drawm("?6,4:?w") ratio_wedge_bond:=0.12; @(.55, .5) drawm("?6,4:?w") %<<== default ratio_wedge_bond:=0.2; @(1 , .5) drawm("?6,4:?w") **(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}% \index{readm}% \begin{verbatim} default: ratio_atomgap_atom= 0.050 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm readm("<30,!2`0.5,2:O") #(70mm,12mm) sw_frame:=Atom; ratio_atomgap_atom:=0.00; @(0, .5) drawm(mc) ratio_atomgap_atom:=0.050; @(.5,.5) drawm(mc) %<<== default ratio_atomgap_atom:=0.12; @(1, .5) drawm(mc) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.00",(0.05w,3bp)); label.urt("0.05",(0.45w,3bp)); label.urt("0.12",(0.85w,3bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Chain/ring length} \index{ratio\_chain\_ring}% \begin{verbatim} default: ratio_chain_ring= 0.66 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(70mm,12mm); ratio_chain_ring:= 0.4; @(0.05,.5) drawm("<30,?6,4:/!") ratio_chain_ring:= 0.66; @(.45, .5) drawm("<30,?6,4:/!") %<<== default ratio_chain_ring:= 1; @(1, .5) drawm("<30,?6,4:/!") **(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 readm("<30,!2,2:?z`1.5") #(70mm,15mm) ratio_hashgap_bond:=0.06; @(0.08,.5) drawm(mc) ratio_hashgap_bond:=0.12; @( .55,.5) drawm(mc) %<<== default ratio_hashgap_bond:=0.20; @(1, .5) drawm(mc) **(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,bond} \index{sw\_numbering}% \index{Atom}% \begin{verbatim} sw_numbering:=Atom; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Atom; drawm("<-30,!9") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \index{Bond}% \begin{verbatim} sw_numbering:=Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Bond; drawm("<-30,!9") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \begin{verbatim} sw_numbering:=Atom+Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,7mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond; drawm("<-30,!9") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_numbering:=Atom+Bond; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,12mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond; drawm("<-30,!9,3'5'7'9:?w`.66") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_numbering:=Atom+Bond+All; \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,12mm); ratio_chain_ring:=1; sw_numbering:=Atom+Bond+All; drawm("<-30,!9,3'5'7'9:?w`.66") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Trimming mode} \index{sw\_trimming}% \begin{verbatim} sw_trimming:=0; ** default ##(1,0.7) @(0.2,0.3) drawm("Ph") @(0.8,0.7) drawm("Ph") \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; @(.2,.3) drawm("Ph") @(.8,.7) drawm("Ph") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} sw_trimming:=1; @(0.2,0.3) drawm("Ph") @(0.8,0.7) drawm("Ph") \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; sw_trimming:=1; @(.2,.3) drawm("Ph") @(.8,.7) drawm("Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Omit group} \index{Group}% \begin{verbatim} ** default: sw_omit=Group \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm readm("<30,Ph,4:/Cl,3:/F"); #(60mm,12mm) @(.15, .5) putm sw_omit:=Group; @(.85, .5) putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Omit bond type} \index{Bond}% \begin{verbatim} ** default: sw_omit=Bond \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm readm("<30,Ph,4:/Cl,3:/F"); #(60mm,12mm) @(.15, .5) putm sw_omit:=Bond; @(.85, .5) putm 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 #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Outside; drawm("<30,Ph") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Frame inside margin) sw_frame=Inside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Inside; drawm("<30,Ph") endfigm \end{mplibcode} %------------------------------------------------------ \begin{verbatim} (Draw both frame) sw_frame=Bothside=Inside+Outside \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(30mm,10mm) #@(5mm,1.5mm) sw_frame:=Bothside; drawm("<30,Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Molecular frame} \index{Mol}% \begin{verbatim} sw_frame=Mol ** default:sw_frame=0 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm sw_frame:=Outside; #(40mm,11mm) ##(1,1) sw_frame:=sw_frame+Mol; drawm("<30,Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Atom frame} \index{Atom}% \begin{verbatim} sw_frame=Atom ** default: sw_frame=0 drawm("<30,COOH,!,COOH") \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,10mm); sw_frame:=Atom; drawm("<30,COOH,!,COOH") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Parameter setting} \subsubsection{Local parameter setting} \index{beginfigm}% \index{endfigm}% \begin{verbatim} beginfigm drawm("Ph") endfigm beginfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{verbatim} %------------------------------------------------------ \quad \begin{mplibcode} fsize:=(15mm,12mm); beginfigm drawm("Ph") endfigm beginfigm ratio_thickness_bond:=0.05; drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \subsubsection{Global parameter setting} \begin{verbatim} beginfigm drawm("Ph") endfigm %-------------------------- ratio_thickness_bond:=0.05; %-------------------------- beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm \end{verbatim} %---------------------------------------------------- \quad \begin{mplibcode} save_ratio:=ratio_thickness_bond; fsize:=(15mm,12mm); beginfigm drawm("Ph") endfigm ratio_thickness_bond:=0.05; beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm beginfigm drawm("Ph") endfigm ratio_thickness_bond:=save_ratio; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Command of mcf2graph} %----------------------------------------------------------------------------- \subsection{drawm} \index{drawm}% \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 drawm("<30,Ph,3:/F,4:/Cl") \end{verbatim} %------------------------------------------------ \begin{mplibcode} beginfigm #(40mm,15mm) #@(0.5mm,0.5mm) sw_frame:=Outside+Mol; drawm("<30,Ph,4:/Cl,3:/F") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{readm} \index{readm()}% \begin{verbatim} readm(string1,string2, ...); ** string = mcf code (example) readm("<30,Ph,1'2'6:/O!,-4'-5=?7,", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " @9,!,NH,!,?O,! "); putm \end{verbatim} \begin{mplibcode} beginfigm #(40mm,20mm); readm("<30,Ph,1'2'6:/O!,-4'-5=?7,", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " @9,!,NH,!,?O,! "); putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{getm} \index{getm}% \index{ucount}% \begin{verbatim} getm(number) ** number = numeric ** ucount = molecular data unit count for i=1 upto ucount: beginfigm getm(i) % get data unit no=i putm % put figure endfigm endfor getm("name"): "name"=string (example) beginfigm getm("Adenine") putm endfigm \end{verbatim} %----------------------------------------------------------------------------- \subsection{putm} \index{putm}% \begin{verbatim} putm : put figure if op_row>=1: scantokens(op) fi if mc_row>=1: drawm(mc) fi if ad_row>=1: add(scantokens(ad)) fi if ex_row>=1: ext(scantokens(ex)) fi \end{verbatim} %------------------------------------------------------------------------------- \subsection{allm} \index{allm}% \begin{verbatim} allm : put all loaded molecule for i=1 upto ucount: beginfigm getm(i) putm endfigm endfor \end{verbatim} %=============================================================================== \newpage \subsection{add [ ++ ]} \index{add}% \index{++}% \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) ++(): add() 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 #(70mm,40mm) ##(.91,.9) |<(10mm) sw_frame:=sw_frame+Atom+Mol; @(.5,.85) drawm("<30,?6,2'5:O") ++( defaultscale:=.8; labeloffset:=.3aw; dotlabel.lft("p0",p0); dotlabel.rt( "p0+(w,h)",p0+(w,h)); dotlabel.ulft("A1",A1); drawarrow A1..A1+__*l<*"); beginfigm #(50mm,15mm) drawm("<30,Ph,3=?5,@8,!,?5,9'16=dl,"& "9'14:N,7'11:S,1:/OH,-2:*/COOH") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{readm example} %----------------------------------------------------------------------------- \paragraph{(Colchicine)} \begin{verbatim} beginfigm readm( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) putm endfigm \end{verbatim} %--------------------------------------- % Colchicine MW:385.41 \begin{mplibcode} beginfigm readm( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \paragraph{(Maltose)} \index{arc\_lb} \index{arc\_br} \begin{verbatim} (bond type for glycan) arc_lb : arc left > bottom arc_br : arc bottom right beginfigm %"EN:Maltose","MW:342.3", readm( %-------------------------------------------------------- "hexose_hp,#.5,1^$270'2^$90'3^$270:/OH,6^$90:/!OH,##, ", "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,hexose_hp,#.5,2^$90'3^$270'4^$270:/OH,6^$90:/!OH ") %-------------------------------------------------------- #(50mm,20mm) putm endfigm \end{verbatim} %------------------------------------------------- \begin{mplibcode} beginfigm %"EN:Maltose","MW:342.3", readm( %-------------------------------------------------------- "hexose_hp,#.5,1^$270'2^$90'3^$270:/OH,6^$90:/!OH,##, ", "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", "|,hexose_hp,#.5,2^$90'3^$270'4^$270:/OH,6^$90:/!OH ") %-------------------------------------------------------- #(50mm,20mm) putm endfigm \end{mplibcode} %----------------------------------------------------------------------------- \newpage \paragraph{(Erythromycin)} \begin{verbatim} beginfigm EN:=Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) readm( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*!,1'9:?O, ", " *2'4'6^-35'8'*10'12^35:?z, ", " 6^35'11'12^-35:*/OH, ", " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,5~wf'3^35:?,4:/*OH,3^-35:/*O!,##, ", " @$5,!z^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- putm **(defaultscale:=0.8; label.lrt("EN: "&EN,(0,h)); label.lrt("fm: "&fm,(0,h-5mm)); label.lrt("mw: "&mw,(0,h-9mm)); label.lrt("MW: "&MW,(0,h-13mm)); ) endfigm \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm EN:="Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) readm( %----------------------------------------------------------------------- "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", " 14:O,13:/*!,1'9:?O, ", " *2'4'6^-35'8'*10'12^35:?z, ", " 6^35'11'12^-35:*/OH, ", " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,5~wf'3^35:?,4:/*OH,3^-35:/*O!,##, ", " @$5,30~zf`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- putm **(defaultscale:=0.8; label.lrt("EN: "&EN,(0,h)); label.lrt("fm: "&fm,(0,h-5mm)); label.lrt("mw: "&mw,(0,h-9mm)); label.lrt("MW: "&MW,(0,h-13mm));) endfigm \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph{(Paclitaxel)} \noindent% \begin{verbatim} beginfigm % "EN:Paclitaxel","MW:853.918", readm( %------------------------------------------------------------------ "?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:?w^60,10:?O, ", " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", " @7,!z,O,-45,?O,60,Ph,11>rl'*12^-15>lr:*/O!'?O! ") %------------------------------------------------------------------ #(140mm,30mm) @(0,0.5) putm sw_numbering:=Atom+All; @(0.6,0.5) putm sw_numbering:=Bond+All; @(1,0.5) putm endfigm \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} beginfigm % "EN:Paclitaxel","MW:853.918", readm( %------------------------------------------------------------------- "?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:?w^60,10:?O, ", " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", " @7,!z,O,-45,?O,60,Ph,11>rl'*12^-15>lr:*/O!'?O! ") %------------------------------------------------------------------- #(160mm,40mm) @(0, 0.5) putm sw_numbering:=Atom+All; @(0.5,0.5) putm sw_numbering:=Bond+All; @(1, 0.5) putm endfigm \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \noindent% \newpage \subsection{loadm example} \index{sw\_comment}% \index{loadm()}% \paragraph{(Example)} \begin{verbatim} loadm("CAT=biological","MW>=285","MW<=288","a:EN"); \end{verbatim} %--------------------------------------------------------------- \paragraph{(output)} \begin{verbatim} * jobname=mcf_exa_soc * numbersystem=double * output report file * file name=mcf_exa_soc-report.txt) * mcf_template 2023.05.07 * Input : main_lib.mcf [525] * Output : ucount [4] * Filter(1): CAT =biological * Filter(2): MW >= 285 * Filter(3): MW <= 288 * Sort key : EN (ascending) [1]:Luteolin [2]:Lycorine [3]:Morphine [4]:Piperine ) row[1][1]="CAT:biological;EN:Luteolin;MW:286.24;LV:-" row[1][2]=":" row[1][3]="<30,Ph,3=?6,9=dl,10:O,7:?O,@9,!,Ph,2'6'14'15:/OH" row[1][4]=";" row[2][1]="CAT:biological;EN:Lycorine;MW:287.315;LV:1" row[2][2]=":" row[2][3]="<30,Ph,-4'-2=?6,6'9--12=?5,13=dl,8:N,15'17:O," row[2][4]="*9^180'10^60:*/H,13'*14:*/OH" row[2][5]=";" row[3][1]="CAT:biological;EN:Morphine;MW:285.343;LV:1" row[3][2]=":" row[3][3]="<30,Ph,2'-4=?6,1---12=?5,-1:O,-1=zb," row[3][4]="@7,60~wf`0.75,70~si_`1.3,45,N!,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH" row[3][5]=";" row[4][1]="CAT:biological;EN:Piperine;MW:285.343;LV:1" row[4][2]=":" row[4][3]="<30,Ph,-1=?5,-1'-3:O,@4,!,!d,!,!d,!,?O,!,?6,-6:N" row[4][4]=";" %------------------------------------------------------------------------------ \end{verbatim} \paragraph{(Tag)} \begin{verbatim} CAT : category USE : the use EN : english name JN : japanese name FM : formula from data MW : molecular weight from data MI : monoisotopic mass from data CAS : CAS number LV : level LN : long name \end{verbatim} \newpage \noindent% %---------------------------------------------------------------------------- \newpage \subsection{getm example} \paragraph{(Chlorophyll a)} \noindent% \begin{verbatim} beginfigm getm("Chlorophyll a") sw_output:=Fig+Mcode; #(80mm,30mm) putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); 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 sw_output:=Fig+Mcode; #(80mm,30mm) getm("Chlorophyll a") putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph{(Dinophysistoxin-1)} \noindent% \begin{verbatim} beginfigm sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% getm("Okadaic acid") %%%% select Okadaic acid %%%% readm(",40:?w,65=red) %%%% add methyl group %%%% EN:="Dinophysistoxin-1"; #(90mm,20mm) MW:="819"; putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); 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 sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% getm("Okadaic acid") %%%% select Okadaic acid %%%% readm(",40:?w,65=red") %%%% add methyl group %%%% MW:="819"; EN:="Dinophysistoxin-1"; #(90mm,20mm); putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage %---------------------------------------------------------------------------- \paragraph{(Maitotoxin)} \noindent% %-------------------------------------------------------------------------------- \begin{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} beginfigm getm("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% sw_frame:=Outside; putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); 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 getm("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) sw_output:=Fig+Mcode; sw_frame:=Outside; %% mc_length:=40; putm VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); endfigm \end{mplibcode} \verbatiminput{temp-mc.aux} {\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}% %-------------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %------------------------------------------------------------------------------ \newpage \section{Example to use mcf2graph} \subsection{MetaPost souce file} \index{mcf2graph.mp}% \index{sw\_output}% \index{\textbackslash()}% \index{plus}% \index{getm()}% \index{putm}% \index{ucount}% \begin{verbatim} input mcf2graph; % input main macro #(60mm,40mm); % (figure width,figure height) % outputformat:="png"; hppp:=vppp:=0.1; % PNG output outputtemplate:="c%3c-%{EN_}.png"; % %------------------------------------------------------------------------------ beginfigm % EN:Ampicillin MW:349.405 drawm("<45,?4,-3=?5,2:N,7:S,"& % immediately write "3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,"& "@4,!w^15,NH,!,?O,!,/*NH2,!,Ph") endfigm %------------------------------------------------------------------------------ beginfigm % EN:Cholesterol MW:386.65 readm("<30,?6,-4'-2=?6,-4=?5,7=dl, ", % mc1 "10:/*H^180,11:/*H^-60,17:/*H^-54,4'12:?w^60, ", % mc2 "@-1,18,?z,-60,!3,?!") % mc3 putm % put figure endfigm %------------------------------------------------------------------------------ loadm() % load all unit beginfigm getm("Adenine") putm endfigm % get EN=Adenine beginfigm getm(4) putm endfigm % select No.4 for i=1 upto ucount: % figure count beginfigm getm(i) putm endfigm % select No.i endfor bye \end{verbatim} %------------------------------------------------------------------------ \noindent% \subsection{Molecular library file} \begin{verbatim} % first character of line % "%":comment out / ":": start MCF / ";": stop MCF % "=":start parameter setting / "*": start ext(...) / "+": start add(...) % CAT : Category,EN : Name,MW : Molecular weight LV : Level %------------------------------------------------------------------------ CAT:-;EN:-;MW:0;LV:- = 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)&":"&EN,(.5w,0)); + defaultscale:=.3; label.bot("A2",A2) withcolor red; ; %============================================================================== CAT:biological;EN:Adenine;MW:135.13;LV: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;LV:1 : <30,?6,3=?5,1'3'9=dl,2'9:N,6'7:NH,5:?O,1:/NH2 ; %------------------------------------------------------------------------------ \end{verbatim} %------------------------------------------------------------------------ \noindent% \newpage \subsection{MCF aux file output} \paragraph{(Option parameter setting)} \index{Mcode}% \begin{verbatim} sw_output:=Mcode; %% output 'temp-mc.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} >mpost -s ahlength=3 FILENAME (sw_output=Fig Expand mode) \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{(LuaLaTeX example)} %----------------------------------------------------------------------- \begin{verbatim} %----------------------------------------------------------------------- %% "EN:Vancomycin \begin{mplibcode} beginfigm 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,!w,!3, ?6,@-4,?6,@6,!,!,?z^-40,*/OH^20,!,?O,!1,OH, 3=wb,11=dl,15=dr,17'19=wf,38=wb,5'7'16'24'25'33'42:O, 32:*/H^60,10:?,12'31:?w,27:?d,37:?z,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[148],Name,Category,File --------------------------------------------------------------------------- Row[1],Length[12],Block[3],BackboneA[6],BackboneB[6],Group[1] --------------------------------------------------------------------------- <30,Ph,3:/OH --------------------------------------------------------------------------- [1 ] <30 [2 ] Ph [3 ] 3:/OH --------------------------------------------------------------------------- --------------------------------------------------------------------------- Width[35.80607],Height[24.55503], Shift x[-1.77635],Shift y[-7.54719] Bond length[11.33855],Atom size[4.881881] --------------------------------------------------------------------------- Atom[7],Bond[7],Ring[1],Hide H[5] < NO. >( x axis , y axis ) A1 C ( 0 , 0 ) 3 1 A2 C ( 1 , -1 ) 3 1 A3 C ( 2 , 0 ) 4 A4 C ( 2 , 1 ) 3 1 A5 C ( 1 , 1 ) 3 1 A6 C ( 0 , 1 ) 3 1 A7 OH ( 3 , 0 ) 1 --------------------------------------------------------------------------- < NO. >< bond (sdt)> B1 1 -> 2 ( 2) 330 ( -30) 1 ( 11) B2 2 -> 3 ( 1) 30 ( 30) 1 ( 11) B3 3 -> 4 ( 2) 90 ( 90) 1 ( 11) B4 4 -> 5 ( 1) 150 ( 150) 1 ( 11) B5 5 -> 6 ( 2) 210 ( -150) 1 ( 11) B6 6 -> 1 ( 1) 270 ( -90) 1 ( 11) B7 3 -> 7 ( 1) 330 ( -30)0.660000 ( 7) --------------------------------------------------------------------------- ( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ] C ( 12.0107)[ 12] * 6 72.0642[ 72] H (1.0079400)[1.0078250] * 6 6.04764[6.0469501933] O ( 15.9994)[15.994914] * 1 15.9994[15.994914619] Molecular Weight [Mono Isotopic] = 94.11123[ 94.0418648] --------------------------------------------------------------------------- Weight Calc: 94.11123 - Input: 94.11 = 0.0012399 Fomula Calc: C6H6O =========================================================================== \end{verbatim} \newpage %------------------------------------------------------------------------ \noindent% \subsection{MOL file output} \paragraph{(Option parameter setting)} \index{sw\_output}% \index{MOL2000}% \index{MOL3000}% \begin{verbatim} sw_output:=MOL2000; % MOL(V2000) sw_output:=MOL3000; % 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} %############################################################################ \begin{verbatim} ** file mcf2graph.mp must be in the same directory to typeset \documentclass{article} \usepackage{luamplib}% \mplibcodeinherit{enable}% \mplibverbatim{enable}% \mplibnumbersystem{double}% \begin{document} \noindent% %-------------------------------------------------------------------- \begin{mplibcode} input mcf2graph; max_blength:=4.5mm; defaultsize:=8bp; defaultscale:=1; %-------------------------------------------------------- EN:="Limonin"; MW="470.51"; beginfigm #(50mm,50mm) readm( %--------------------------------------- "<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,!z,|,?5,1'4=dl,3:O ") %--------------------------------------- putm endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \begin{mplibcode} EN:="beta-carotene"; MW:="536.87"; beginfigm #(80mm,50mm) readm( %----------------------------------------- "<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:? ") %----------------------------------------- putm endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- \end{document} \end{verbatim} %############################################################################ \newpage \subsection{Batch file mcf\_to\_graph.cmd} \index{mcf\_to\_graph.cmd}% %############################################################################ Batch file for compile mcf or mp file \begin{verbatim} ** drag and drop mcf or mp file on this batch : >mcf_to_graph filenam ** file mcf2graph.mp , main_lib.mcf must be in the same directory ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Batch file for compile MCF 2025.09.15 :: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @echo off if %~x1 == .mp ( if %~n1 == mcf2graph goto end mkdir %~n1-mp mpost -output-directory=./%~n1-mp %~n1 goto end ) if not %~x1 == .mcf goto end echo **** Select output format / Library file [%~n1] **** echo [1:svg 2:png-600dpi 3:png-1200dpi 4:MOL-v2000 5:MOL-v3000 6:report 0:cancel] choice /c 1234560 if %errorlevel% == 7 goto end echo input mcf2graph; libm:="%~n1.mcf"; loadm() allm bye> temp_soc.mp if %errorlevel% == 1 (mkdir %~n1-svg mpost -output-directory=./%~n1-svg temp_soc) if %errorlevel% == 2 (mkdir %~n1-pn0600 mpost -output-directory=./%~n1-pn0600 -s ahangle=1 temp_soc) if %errorlevel% == 3 (mkdir %~n1-pn1200 mpost -output-directory=./%~n1-pn1200 -s ahangle=2 temp_soc) if %errorlevel% == 4 (mkdir %~n1-molv2k mpost -output-directory=./%~n1-molv2k -s ahlength=5 temp_soc) if %errorlevel% == 5 (mkdir %~n1-molv3k mpost -output-directory=./%~n1-molv3k -s ahlength=6 temp_soc) if %errorlevel% == 6 (mkdir %~n1-report mpost -output-directory=./%~n1-report -numbersystem=double -s ahlength=7 temp_soc) del temp_soc.mp :end \end{verbatim} %############################################################################ %------------------------------------------------------------------------ \texttt{\printindex} %------------------------------------------------------------------------ \end{document}