%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Molecular Coding Format manual by Akira Yamaji 2026.06.06 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ** typeset by LuaLaTeX(luamplib) % ** mcf2graph must be version 5.32 % ** 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.30 \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, : end local adress ?6,4:,!,,2:N or ?6,4:,!,,2:N \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm) #@(3mm,1.5mm) @(0,.5) drawm("?6,4:,!,,2:N") sw_numbering:=Atom; ##(1,.88) @(1,.5) drawm("?6,4:,!,,2:N") endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Absolute address} \index{\$}% $ \begin{verbatim} $2:n : change A$2 C to N **1<=n<=3095 ?6,4:,!,1) 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, ", "=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,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} ---------------------- \end{document}