%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Molecular Coding Format manual                by  Akira Yamaji 2023.01.09
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ** mcf2graph.mf must be version 4.91
% ** use mcf_library.mcf
% ** typeset by LuaLaTeX(luamplib)
%----------------------------------------------------------------------------
\documentclass[a4paper]{article}
\usepackage{textcomp,verbatim}%
\usepackage[luatex]{graphicx}
\usepackage[luatex]{hyperref}
\usepackage{makeidx}
\usepackage{luamplib}
\mplibnumbersystem{double}
\makeindex
\hypersetup{colorlinks=true,linkcolor=blue}
%----------------------------------------------------------------------------
\mplibcodeinherit{enable}%
\mplibverbatim{enable}%
\mpliblegacybehavior{disabled}%
\everymplib{%
  if unknown Ph1: input mcf2graph; fi
  sw_output:=Fig+Calc;
  tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW";
  outputformat:="eps";
  fsize:=(60mm,35mm);
  blength:=0mm;
  max_blength:=10mm;
  ratio_thickness_bond:=0.015;
  ratio_atom_bond:=0.36;
  sw_frame:=Outside;
  fmargin:=(2mm,1mm);
}%
%----------------------------------------------------------------------------
\edef\fext{mps}%
\topmargin=-18mm
\textheight=254mm
\textwidth=168mm
\oddsidemargin=0mm
%%%%\oddsidemargin=7mm
%%%%\evensidemargin=-7mm
\unitlength=1mm%
%----------------------------------------------------------------------------
\begin{document}
\title{\Huge\sf Molecular Coding Format manual}
\author{Akira Yamaji}
\date{\today}
\maketitle
\begin{center} Located at http://www.ctan.org/pkg/mcf2graph \end{center}
\begin{center} Suggestion or request mail to: mcf2graph@gmail.com \end{center}
%-----------------------------------------------------------------------------
\thispagestyle{empty}
\vspace{5mm}%
\quad
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:Glycine",":<30,NH2,!2,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Alanine",":<30,NH2,!~wb,/_,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Valine",":<30,NH2,!~wb,/?!,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Leucine",":<30,NH2,!~wb,/'(!,?!),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:L-Isoleucine",":<30,NH2,!~wb,/'(/*_,!2),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Serine",":<30,NH2,!~wb,/!OH,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Threonine",":<30,NH2,!~wb,/'(/_,!~wf,OH),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Cysteine",":<30,NH2,!~wb,/!SH,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:L-Methionine",":<30,NH2,!~wb,/'(!2,S,!),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Phenylalanine",":<30,NH2,!~wb,/!Ph,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Tyrosine",":<30,NH2,!~wb,/'(!Ph,-3:/OH),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Triptophan",
  ":<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:L-Prorine",":<18,?5,3:NH,4:*/COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Glutamine",
  ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!,//O,!,NH2")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Asparagine",":<30,NH2,!~wb,/'(!,//O,!,NH2),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Aspartic acid",":<30,NH2,!~wb,/!COOH,!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:L-Glutamic acid",":<30,NH2,!~wb,/'(!2,COOH),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Lysine",":<30,NH2,!~wb,/'(!4,NH2),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Arginine",
  ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!2,NH,!,//NH,!,NH2")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Hystidine",
  ":<30,NH2,!~wb,!,COOH,@2,\,!,|,?5,{1,3}=dl,3:N,5:NH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:L-DOPA",":<30,NH2,!~wb,!,COOH,@2,\,!,Ph,{-3,-4}:/OH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:Ornithine",":<30,NH2,!~wb,/'(!3,NH2),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:Citrulline",":<30,NH2,!~wb,/'(!3,NH,!,//O,!,NH2),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:GABA",":<30,NH2,!4,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
\\
\begin{mplibcode}
fsize:=(40mm,25mm); blength:=6mm; sw_frame:=0;
beginfigm("EN:amino Levulinic acid",":<30,NH2,!2,//O,!3,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:4-amino benzoic acid",":<30,Ph,1:/NH2,4:/COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Carboxyl glutamic acid",
  ":<30,NH2,!~wb,/'(!,/COOH,!,COOH),!,COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:L-Hydroxy Prorine",":<18,?5,1:/OH,3:NH,4:*/COOH")
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\twocolumn
\thispagestyle{empty}
\tableofcontents
%-----------------------------------------------------------------------------
\linethickness{0.08mm}%
%----------------------------------------------------------------------------
\newpage
\twocolumn
\section{Introduction}
Molecular Coding Format(MCF) is new linear notation
represent chemical structure diagrams.
This Coding is named from programing technique
such as operator, array, scope, macro, adressing, etc.
mcf2graph convert from MCF to PNG, SVG, EPS, MOL file.
It is also able to calculate molecular weight,
exact mass, molecular formula.
%-----------------------------------------------------------------------------
\section{MCF syntax}
\subsection{Make bond}
\subsubsection{Chain}
\begin{verbatim}
real number plus (+): counterclockwize 
real number minus(-): clockwize
$n (0<=n<360): absolute angle

<10,-30,45,-45,60,$300,$0
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Chain 1")
  fsize:=(60mm,17mm);
  sw_numbering:=Bond;
  numbering_end:=6;
  ratio_chain_ring:=1;
%----------------------------------------------------------------------
  MC(<15,-30,45,-45,60,$300,$0,
       {1^$15,2^$345,3^$30,4^$345}:/_~dt,{5,6}=vf,
     )
  add(
    defaultscale:=0.5;
    labeloffset:=2bp;
    drawarrow B7/*.7{B7right}..{B1right}B1/*.7;   label.ulft("-30",B7/*.7);
    drawarrow B8/*.7{B8left}..{B2left}B2/*.7;     label.llft("45",B8/*.7);
    drawarrow B9/*.7{B9right}..{B3right}B3/*.7;   label.ulft("-45",B9/*.7);
    drawarrow B10/*.7{B10left}..{B4left}B4/*.7;   label.llft("60",B10/*.7);
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Chain with !,!n}
\index{"!}%
\begin{verbatim}
!  : take value 60 or -60 depend on
     current angle and environment
!6 : !,!,!,!,!,!

<-30,!6
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Chain 2")
  fsize:=(60mm,17mm);
  sw_numbering:=Bond;
  numbering_end:=6;
  ratio_chain_ring:=1;
%----------------------------------------------------------------------
  MC(<-30,!6,
       {1^-120,2^60,3^-60,4^60,5^-60,6^60}:/_~dt
     )
  add(
    defaultscale:=0.5;
    labeloffset:=2bp;
    drawarrow B7/*.7{B7right}..{B1right}B1/*.7;   label.ulft("-60",B7/*.7);
    drawarrow B8/*.7{B8left}..{B2left}B2/*.7;     label.llft("60",B8/*.7);
    drawarrow B9/*.7{B7right}..{B3right}B3/*.7;   label.ulft("-60",B9/*.7);
    drawarrow B10/*.7{B10left}..{B4left}B4/*.7;   label.llft("60",B10/*.7);
    drawarrow B11/*.7{B11right}..{B5right}B5/*.7; label.ulft("-60",B11/*.7);
    drawarrow B12/*.7{B12left}..{B6left}B6/*.7;   label.llft("60",B12/*.7);
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Jump to atom}
\index{"@}%
\begin{verbatim}
@n : Jump to An
** An: atom number(-999<=n<=4095)

<-30,!6,@3,0,!,@5,-30
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Jump and Branch")
  fsize:=(60mm,16mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=1;
  sw_numbering:=Atom;
  ratio_chain_ring:=1;
  MC(<-30,!6,@3,0,!,@5,-30)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Branch bond}
\index{\textbackslash}%
\begin{verbatim}
\ : 0

<-30,!6,@3,\,!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Jump and Branch")
  fsize:=(60mm,16mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Atom;
  sw_trimming:=1;
  ratio_chain_ring:=1;
  MC(<-30,!6,@3,\,!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Branch modified bond}
\index{*\textbackslash}%
\index{\textbackslash*}%
\index{\textbackslash\textbackslash}%
\index{*\textbackslash*}%
\begin{verbatim}
\   : 0
*\  : 0~wf
\*  : 0~zf
\\  : 0~dm
*\* : 0~wv

<30,!8,
@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:branch1")
  fsize:=(60mm,16mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Atom;
  sw_trimming:=1;
  numbering_end:=10;
  ratio_chain_ring:=1;
  MC(<30,!10,@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\index{\textasciicircum}% ^
\index{\textasciitilde}% ~
\index{`}%
\begin{verbatim}
<30,!6,
\~dr,!,   : 0~dr,!
\`1.5,-90 : 0`1.5,-90
\^15,-60  : 0^15,-60
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:branch2")
  fsize:=(60mm,20mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=1;
  sw_numbering:=Atom;
  numbering_end:=7;
  ratio_chain_ring:=1;
  %-------------------------
  MC(<30,!6,@2,\~dr,!,@4,\`1.5,-90,@6,15,-60)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Connect atom}
\index{\&}%
\begin{verbatim}
&n : Connect to An

<-30,!6,@3,\,!3,&6~bd,@9,&4~bz
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Connect atom")
  fsize:=(60mm,20mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=1;
  sw_numbering:=Atom;
  ratio_chain_ring:=1;
  %----------------------------------
  MC(<-30,!6,@3,\,!3,&6~bd,@9,&4~bz)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Ring}
\index{?}%
\begin{verbatim}
?n : n membered ring(3<=n<=20)
?6 : <-120,60,60,60,60,60,&1
?6
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:ring")
  fsize:=(60mm,20mm);
  sw_trimming:=1;
  fmargin:=(2mm,3mm);
  sw_numbering:=Bond;
  %---------------------------
  MC(?6)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Rotate current angle}
\index{\textgreater}%
\begin{verbatim}
<angle : rotate current angle

0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0 
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:rotate 1")
  fsize:=(60mm,20mm);
  fmargin:=(2mm,3mm);
  sw_trimming:=1;
  sw_numbering:=Bond;
  ratio_chain_ring:=1;
  numbering_end:=7;
    defaultscale:=0.5;
    labeloffset:=2bp;
  MC(#1,0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0,{1:7}=vf,
      {3,4^180}:/_~dt)
  add(
    drawarrow B8/*.7{B8left}..{B3left}B3/*.7;   label.urt("90",B8/*.7);
    drawarrow B9/*.7{B9right}..{B4right}B4/*.7; label.urt("-90",B9/*.7);
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Change bond type}
\subsubsection{Double,triple,wedge,vector}
\index{\textasciitilde}%
\index{\textasciitilde\textasciitilde}%
\index{"!"!}%
\index{"!"!"!}%
\index{dm}%
\index{dl}%
\index{dr}%
\index{db}%
\index{tm}%
\begin{verbatim}
(Double,triple)
a~type : ~~type,a
dm  : double middle
dl  : double left side
dr  : double right side
db  : double left or right side
tm  : triple
!!  : !~db  / !!! : !~tm

<-30,!~dm,!,!~dl,!,!~dr,!~db,!~db,!,!~tm
<-30,!~dm,!,!~dl,!,!~dr,!!  ,!!  ,!,!!!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change bond 1")
  fsize:=(70mm,10mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=0;
  ratio_chain_ring:=1;
  MC(<-30,!~dm,!,!~dl,!,!~dr,!~db,!~db,!,!~tm)
  add(defaultscale:=0.6; labeloffset:=0;
      label.rt("(dm)",A1+(0,-0.7l));
      label.rt("(dl)",A3+(0,-0.7l));
      label.rt("(dr)",A5+(0,-0.7l));
      label.rt("(db)",A6+(0,-0.2l));
      label.rt("(db)",A7+(0,-0.7l));
      label.rt("(tm)",A9+(0,-0.7l));
  )
endfigm
\end{mplibcode}
\vspace{-3mm}%
%-----------------------------------------------------------------------------
%%\subsubsection{Wedge}
\index{wf}%
\index{wb}%
\index{zf}%
\index{zb}%
\index{vf}%
\index{vb}%
\begin{verbatim}

(Wedge,Vector)
wf: wedge forward
wb: wedge backward
zf: hashed(zebra stripe) wedge foward
zb: hashed(zebra stripe) wedge backward
vf:vector forward
vb:vector backward

<-30,
 !~wf,!,!~wb,!,!~zf,!,!~zb,!,!~vf,!~vb
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change bond 2")
  fsize:=(70mm,10mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=0;
  ratio_chain_ring:=1;
  MC(<-30,!~wf,!,!~wb,!,!~zf,!,!~zb,!,!~vf,!,!~vb)
  add(defaultscale:=0.6; labeloffset:=0;
      label.rt("(wf)",A1+(0,-0.7l));
      label.rt("(wb)",A3+(0,-0.7l));
      label.rt("(zf)",A5+(0,-0.7l));
      label.rt("(zb)",A7+(0,-0.7l));
      label.rt("(vf)",A9+(0,-0.7l));
      label.rt("(vb)",A11+(0,-0.7l));
  )
endfigm
\end{mplibcode}
\vspace{-3mm}%
%-----------------------------------------------------------------------------
%%\subsubsection{Dotted,wave}
\index{dt}%
\index{wv}%
\index{bd}%
\index{bz}%
\begin{verbatim}

(Dotted,wave)
Bn=bond type : change bond type at Bn
dt : dotted   /  wv : wave
bd : broad    /  bz : broad dotted 

<-30,!7,1=dt,3=wv,5=bd,7=bz
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change bond 3")
  fsize:=(70mm,10mm);
  fmargin:=(2mm,2mm);
  blength:=9mm;
  sw_trimming:=1;
  ratio_chain_ring:=1;
  MC(<-30,!7,1=dt,3=wv,5=bd,7=bz)
  add(defaultscale:=0.6; labeloffset:=0;
      label.rt("(dt)",A1+(0,-0.6l));
      label.rt("(wv)",A3+(0,-0.6l));
      label.rt("(bd)",A5+(0,-0.6l));
      label.rt("(bz)",A7+(0,-0.6l));
  )
endfigm
\end{mplibcode}
\vspace{-3mm}%
%-----------------------------------------------------------------------------
\subsubsection{Over line}
\index{si\_}%
\index{wf\_}%
\index{wb\_}%
\index{zf\_}%
\index{zb\_}%
\index{bd\_}%
\index{dl\_}%
\index{dr\_}%
\index{dm\_}%
\begin{verbatim}
si_ : single over line 
wf_ : wedge forward over line 
wb_ : wedge backward over line 
zf_ : hashed wedge forward over line 
zb_ : hashed wedge backward over line 
bd_ : broad over line 
dl_ : duble left over line 
dr_ : duble right over line 
dm_ : duble over line 

<30,!8,!,60,90`18,
{2~si_,4~wf_,6~wb_,8~zf_,10~zb_,
  12~bd_,14~dl_,16~dr_,18~dm_}:/_`2
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:over line")
  sw_trimming:=1;
  fsize:=(75mm,20mm);
  ratio_chain_ring:=1;
  MC(<30,!18,$90`1.5,90`15.5,
     {2~si_,4~wf_,6~wb_,8~zf_,10~zb_,
      12~bd_,14~dl_,16~dr_,18~dm_}:/_`2)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Steric ring}
\index{wf\_r}%
\index{wb\_r}%
\index{bd\_r}%
\begin{verbatim}
wf_r : wedge foward (half width)
bd_r : broad (half width, rounded)
wb_r : wedge backward (half width)

#1.25,-30~wf_r,30~bd_r`1,30~wb_r,
 120,O,30,&1,##,#.5,6^$90:/!OH,
 {1^$-90,2^$90,3^$-90,4^$90}:/OH,
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Steric ring")
  fsize:=(75mm,16mm);
  MCat(0.05,0.5)(#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,
     #.5,{1^$-90,2^$90,3^$-90,4^$90}:/OH,6^$90:/!OH)
  defaultscale:=0.6;
  MCat(0.5,0.7)(0~wf_r)  add(label.lft("wf_r:",A1);)
  MCat(0.5,0.2)(0~wf)    add(label.lft("wf:",A1);)
  MCat(0.75,0.7)(0~bd_r) add(label.lft("bd_r:",A1);)
  MCat(0.75,0.2)(0~bd)   add(label.lft("bd:",A1);)
  MCat(1,0.7)(0~wb_r)    add(label.lft("wb_r:",A1);)
  MCat(1,0.2)(0~wb)      add(label.lft("wb:",A1);)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Change multiple bond type}
\index{vf}%
\begin{verbatim}
{2,4,6,8'}=dl : 2=dl,4=dl,6=dl,8=dr

<30,!7,{2,4,6,8'}=dl
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change multi bond")
  fsize:=(60mm,8mm);
  fmargin:=(2mm,3mm);
  ratio_chain_ring:=1;
  MC(<30,!9,{2,4,6,8'}=dl)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Change bond length}
\subsubsection{Chain length}
\index{`}%
\begin{verbatim}
(!,!n)`length : change length of !,!n

<-30,!2,!4`1.2,!2
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change bond length1")
  fsize:=(55mm,8mm);
  sw_numbering:=Bond;
  MC(<-30,!2,!4`1.2,!2)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\index{\#}%
\index{\#\#}%
\begin{verbatim}
#n : bond length=n
## : reset bond length

<-30,!2,#1.2,!4,##,!2
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change bond length2")
  fsize:=(55mm,8mm);
  sw_numbering:=Bond;
  MC(<-30,!2,#1.2,!4,##,!2)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Ring length}
\begin{verbatim}
?n`length : change ring length

?6,@4,\,?6`1.2
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change ring length")
  fsize:=(60mm,16mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=1;
  sw_numbering:=Bond;
  MC(?6,@4,\,?6`1.2)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Change atom}
\subsubsection{Insert atom}
\begin{verbatim}
Insert hetero atom

<-30,!2,O,!2,N,!2
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Insert atom")
  sw_trimming:=1;
  fsize:=(50mm,7mm);
  MC(<-30,!2,O,!2,N,!2)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Addressed atom}
\index{:}%
\begin{verbatim}
2:O : change A2 C to O
{3,4}:N : change  A3,A4 C to N

<30,!4,2:O,{3,4}:N
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom",":<30,!5,2:O,{3,4}:N")
  fsize:=(70mm,10mm);
  msize:=(0.48,1);
  MCat(0,0.5)(scantokens(mc))
  sw_numbering:=Atom;
  MCat(1,0.5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Brock address}
\index{\textbar}% |
\begin{verbatim}
| : divide brock

?6,@4,\,|,?6,2:O
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom brock address 1",":?6,@4,\,|,?6,2:O")
  fsize:=(70mm,14mm);
  fmargin:=(3mm,1.5mm);
  MCat(0,.5)(scantokens(mc))
  sw_numbering:=Atom;
  msize:=(1,.88);
  MCat(1,.5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Reset brock address}
\index{\textbar\textbar}% ||
\begin{verbatim}
|| : reset brock adress

?6,@4,\,|,?6,||,2:N
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom brock address 2",":?6,@4,\,|,?6,||,2:N")
  fsize:=(70mm,14mm);
  fmargin:=(3mm,1.5mm);
  MCat(0,.5)(scantokens(mc))
  sw_numbering:=Atom;
  msize:=(1,.88);
  MCat(1,.5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Absolute address}
\index{\$}% $
\begin{verbatim}
$2:N : change A$2 C to N  **1<=n<=3095

?6,@4,\,|,?6,$2:N
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom absolute address",":?6,@4,\,?6,$2:N")
  fsize:=(70mm,14mm);
  fmargin:=(3mm,1.5mm);
  MCat(0,.5)(scantokens(mc))
  sw_numbering:=Atom;
  msize:=(1,.88); 
  MCat(1,.5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Relative address}
\begin{verbatim}
-2:N : change A(-2) C to N **-999<=n<=-1

?6,@4,\,?6,-2:N
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom relative adress",":?6,@4,\,?6,-2:N")
  fsize:=(70mm,14mm);
  fmargin:=(3mm,1.5mm);
  MCat(0,.5)(scantokens(mc))
  sw_numbering:=Atom;
  msize:=(1,.88);
  MCat(1,.5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Charged atom}
\begin{verbatim}
p_ : positive / n_ : negative

<-30,!2,N,??,p_,!2,S,n_^180,
!6,7:N,7:??,9:S,7:n_,9:n_^180
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Charged atom")
  sw_trimming:=1;
  fsize:=(60mm,12mm);
  MC(<-30,!2,N,??,p_,!2,S,n_^180,!6,7:N,7:??,9:S,7:p_,9:n_^180)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
%-----------------------------------------------------------------------------
\subsection{Fuse ring}
%%%\subsubsection{Attached 1 bond}
\begin{verbatim}
(Attached 1 bond)

?6,3=?6 : fuse ?6 at B3
** Bn(n:-999<=n<=4095): bond number

?6,3=?6
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fused ring")
  fsize:=(60mm,18mm);
  fmargin:=(2mm,1.5mm);
  sw_trimming:=1;
  sw_numbering:=Bond;
  MC(<30,?6,3=?6,3=dt,{7:11}=bd_r)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\begin{verbatim}
** fused ring size depend on 
attached bond length

?6,@4,\,?6`1.2,5=?6,11=?6
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change ring length")
  fsize:=(60mm,25mm);
  fmargin:=(2mm,2mm);
  sw_trimming:=1;
  sw_numbering:=Bond;
  MC(?6,@4,\,?6`1.2,5=?6,11=?6,
      {14:23}=bd_r,{5,11}=dt)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\begin{verbatim}
?6,3=?6[13] : fuse ?6[13] at B3
?6[13]: 6 membered ring scaled 13/10
** ?m[n] (5<=m<=8,11<=n<=15)

?6,3=?6[13]
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fused large 6 ring")
  fsize:=(60mm,18mm);
  fmargin:=(2mm,1.5mm);
  margin_top_bottom:=1.5mm;
  sw_numbering:=Bond;
  sw_trimming:=1;
  MC(<30,?6,3=?6[13],3=dt,{7:11}=bd_r)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\begin{verbatim}
?6,{-3,-4,-4,-2,-2,-4,-4}=?6
?6,{4,8,13,20,25,28,33}=?6
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fuse multi ring")
  fsize:=(70mm,20mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Bond;
  sw_trimming:=1;
  MC(<30,?6,{-3,-4,-4,-2,-2,-4,-4}=?6,{4,8,13,20,25,28,33}=dt)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\index{--}%
\begin{verbatim}
(Attached 2 bond)

4--11=?6 : fuse 4/6 ring to B11..B4
4--11=?5 : fuse 3/5 ring to B11..B4
4--11=?4 : fuse 2/4 ring to B11..B4

1:<30,?6,3=?6,11--4=?6
2:<30,?6,3=?6,11--4=?5
3:<30,?6,3=?6,11--4=?4
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fused ring 2")
  fsize:=(75mm,20mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Bond;
  msize:=(1,.9);
  MCat( 0,.5)(<30,?6,{3,11--4}=?6,{11,4}=dt,{12:15}=bd_r)
  add(defaultscale:=0.4; label("(1)",p0);)
  msize:=(1,.9);
  MCat(.5,.5)(<30,?6,3=?6,{11--4}=?5,{11,4}=dt,{12:14}=bd_r)
  add(defaultscale:=0.4; label("(2)",p0);)
  msize:=(1,.9);
  MCat( 1,.5)(<30,?6,3=?6,{11--4}=?4,{11,4}=dt,{12,13}=bd_r)
  add(defaultscale:=0.4; label("(3)",p0);)
endfigm
\end{mplibcode}
%%%%%%%\vspace{-3mm}%
%-----------------------------------------------------------------------------
\index{---}%
\begin{verbatim}
(Attached 3 bond)

16---4=?6 : fuse 3/6 ring to B16..B4
16---4=?5 : fuse 2/5 ring to B16..B4

1:?6,{3,10,16---4}=?6
2:?6,{3,10}=?6,16---4=?5

\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fused ring 3")
  fsize:=(60mm,20mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Bond;
  MCat(0,1)(?6,{3,10}=?6,16---4=?6,{16,4}=dt,{17:19}=bd_r)
  add(defaultscale:=0.4; label("(1)",p0);)
  MCat(1,0)(?6,{3,10}=?6,16---4=?5,{16,4}=dt,{17,18}=bd_r)
  add(defaultscale:=0.4; label("(2)",p0);)
endfigm
\end{mplibcode}
%%%%%%%%\vspace{-3mm}%
%-----------------------------------------------------------------------------
\index{----}%
\begin{verbatim}
(Attached 4 bond)

21----4=?6 : fuse 2/6 ring to B21..B4

<-30,?6,{3,10,15,21----4}=?6

\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:fused ring 4")
  fsize:=(60mm,20mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Bond;
  MC(<-30,?6,{3,10,15}=?6,21----4=?6,{21,4}=dt,{22,23}=bd_r)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Spiro ring}
\begin{verbatim}
@4,?5 : add ?5 at A4

<30,!6,@4,?5
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Spiro ring ")
  fsize:=(40mm,15mm);
  sw_numbering:=Atom;
  numbering_end:=7;
  ratio_chain_ring:=1;
  MC(<30,!6,@4,?5)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Group}
\subsubsection{Insert group}
\index{/}%
\index{Ph}%
\begin{verbatim}
/ : group start single bond

/_   : methyl
/!   : ethyl
/!2  : propyl
/?!  : isopropyl
/??! : tert-butyl
/Ph  : phenyl

<30,!,/_,!2,/!,!2,/!2,!4,/?!,
 !4,/??!,!2,/Ph^-60,!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 1")
  fsize:=(75mm,18mm);
  MC(<30,!,/_,!2,/!,!2,/!,!4,/?!,!4,/??!,!2,/'(Ph`0.8)^-60,!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Insert modified group}
\index{//}%
\index{*/}%
\index{/*}%
\index{*/*}%
\index{**}%
\begin{verbatim}
//  : double (double middle)
*/  : wedge forward
/*  : hashed wedge forward
*/* : wave
**  : direct

<30,!,//O,!2,*/H,!2,/*H,!2,*/*H,!2,**?3,!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 2")
  fsize:=(70mm,14mm);
  MC(<30,!`1,//O,!2`1,*/H,!2`1,/*H,!2`1,*/*H,!2`1,**?3,!`1)
  add(defaultscale:=0.75;
      label("//",A2-(0,0.45l));
      label("*/",A4-(0,0.45l));
      label("/*",A6-(0,0.45l));
      label("*/*",A8-(0,0.45l));
      label("**",A10-(0,0.45l));
     )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\index{\textasciicircum}% ^
\index{\textasciitilde}% ~
\index{`}%
\index{\textless}%
\begin{verbatim}
~ : change type
^ : change angle
` : change length
> : change environment

<-30,``1,!,
  /_`2^30,!2,/!2>lr,!2,/!2>rl,!)
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 3")
  fsize:=(60mm,16mm);
  sw_trimming:=1;
  MC(<-30,#1,!2,/_`2^30,!2,/!2>lr,!2,/!2>rl,!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Add group}
\begin{verbatim}
<30,!17,2:/_,3:/!,4:/!2,7:/iPr,
 8:/tBu,10:/'(Ph`0.6)^-15,
 {11,12,13'}:*/_,{15,16,17'}:/*_
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 3")
  fsize:=(75mm,25mm);
  fmargin:=(2mm,2mm);
  sw_numbering:=Atom;
  numbering_end:=17;
  MC(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10:/'(Ph`0.6)^-15,
     {11,12,13'}:*/_,{15,16,17'}:/*_)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Add modified group}
\begin{verbatim}
~,^,` : change type,angle,length

<30,!6,{2~wf,4~zf,6^-30,8^$120}:/_
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 4")
  fsize:=(60mm,18mm);
  sw_trimming:=1;
  fmargin:=(2mm,2mm);
  sw_numbering:=Atom; numbering_end:=9;
  MC(<30,!8`1,{2~wf,4~zf,6^-30,8^$120}:/_)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\begin{verbatim}

^,`,> : change angle,length,environment

<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:group 5")
  fsize:=(60mm,16mm);
  sw_trimming:=1;
  sw_numbering:=Atom;
  numbering_end:=8;
  MC(<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
%-----------------------------------------------------------------------------
\subsection{Chain environment}
\subsubsection{Horizontal,vertical}
\index{hz}%
\index{vt}%
\index{"'}%
\begin{verbatim}
>hz : horizontal environment (default)
>vt : vertical environment

?4,
{3^-90,3^-30,3^90}:/!3>hz,
{1^-60,1,1^60}:/!3>vt
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:chain strech direction mode 1")
  fsize:=(50mm,25mm);
  sw_trimming:=1;
  ratio_chain_ring:=1;
  MC(?4,{3^-90,3^-30,3^90}:/!3>hz,
        {1^-60,1,1^60}:/!3>vt
  )
  add(defaultscale:=0.5; labeloffset:=2bp;
      label.rt(">hz",A8);
      label.top(">hz",A12);
      label.top(">hz",A16);
      label.rt(">vt",A20);
      label.top(">vt",A24);
      label.rt(">vt",A28);
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Left-right,right-left}
\index{lr}%
\index{rl}%
\begin{verbatim}
>lr : left-right environment
>rl : right-left environment

<-30,!6,
{3^-30,3,3^30}:/!3>lr,
{5^-30,5,5^30}:/!3>rl
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Left-right_right-left")
  fsize:=(40mm,20mm);
  sw_trimming:=1;
  MC(<30,!4,2:/!6>30,4:/!4>-45)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Fixed rotate angle}
\index{\textgreater}%
\begin{verbatim}
>n : rotate n

<30,!4,
2:/!6>30,  % 2:\,30,30,30,30,30,30
4:/!4>-45  % 4:\,-45,-45,-45,-45

\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Fixed rotate angle")
  fsize:=(40mm,20mm);
  sw_trimming:=1;
  MC(<30,!4,2:/!6>30,4:/!4>-45)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Multiple rotate angle}
\begin{verbatim}
>'(90,-90,...) : rotate 90,-90,...

<30,!6,6>'(90,-90,90,-90,90):/!5
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Multiple rotate angle")
  fsize:=(60mm,20mm);
  sw_trimming:=1;
  MC(<30,!6,6>'(90,-90,90,-90,90):/!5)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
\subsection{Miscellaneous}
%-----------------------------------------------------------------------------
\subsubsection{Abbreviated parts}
\index{NH}%
\index{N"!}%
\index{N"!2}%
\index{SO}%
\index{SOO}%
\begin{verbatim}
NH  : N,/H~nl    N! : N,/_     N!2 : N,/!
SO  : S,//O    SOO : S,//O^35,//^-35

<-30,!2,NH,!2,N!,!2,N!2,SO,!2,SOO,!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:change atom and group")
  fsize:=(60mm,12mm);
  sw_trimming:=1;
  MC(<-30,!2,NH,!2,N!,!2,N!2,!2,SO,!2,SOO,!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\index{?"!}%
\index{??}%
\index{??"!}%
\index{N?"!}%
\begin{verbatim}
?!   : /_,!           ??   : /_^35,/_-35
/?!  : isopropyl      /??! : tert-butyl
/N?! : dimethylamino

<30,!9`1,?!,!,??,!,2:??,4:/??,6:/??!,8:/N?!
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:methyl*2,isopropyl,tert-butyl")
  fsize:=(60mm,12mm);
  sw_trimming:=1;
  MC(<30,!9`1,?!,!,??,!,2:??,4:/?!,6:/??!,8:/N?!)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Parts definition}
\begin{verbatim}
'(..) : user defined parts

iBuOH:='(!,/_,!,OH);
MC(<30,?6,{4,6}:/iBuOH)
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:User definition")
  fsize:=(60mm,13mm);
  sw_trimming:=1;
  iBuOH:='(!,/_,!,OH);
  MC(<30,?6,{4,6}:/iBuOH)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Parts inline definition}
\begin{verbatim}
<30,!8,{2,6}:/'(!,/_,!,OH)
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Inline definition")
  fsize:=(60mm,13mm);
  fmargin:=(2mm,1mm);
  sw_trimming:=1;
  MC(<30,!8,{2,6}:/'(!,/_,!,OH))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Move position}
\index{"@()}%
\begin{verbatim}
@(x,y) : Move l*(x,y) from current position
@$(x,y): Move l*(x,y) from origin(@1)
          ** l=bond length of ring

<30,?6,@3,!4,//O,!,O,n_^60,@$(6,1),H,p_^15
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Move position")
  fsize:=(70mm,16mm);
  fmargin:=(2mm,1mm);
  sw_trimming:=1;
  MC(<30,?6,@3,\,!3,//O,!,O,n_^60,@$(6,1),H,p_^15)
  add(drawdot A1 withpen pencircle scaled 2bp;
      pickup pencircle scaled 0.1bp;
      for i=0 upto 6:
        draw (A1+(l*i,l-3bp))--(l*i,l+3bp);
      endfor
      draw A1--(A1+(0,1l))--A1+(6l,1l);
      draw (A1+(0,1l))--(A1+(-3bp,1l));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Serial number}
\index{\-\-}%
\begin{verbatim}
6:10 : 6,7,8,9,10
<30,!14,{2,6:10,14}:/_~bd_r`0.5
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Serial number")
  fsize:=(75mm,14mm);
  max_blength:=8mm;
  sw_numbering:=Atom; numbering_end:=15;
  MC(<30,!14,{2,6:10,14}:/_~bd_r`0.5)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
\subsubsection{Change color}
\index{red}%
\index{blue}%
\index{green}%
\begin{verbatim}
beginfigm()
  MC(
    <30,Ph,{2,5}:N,3:/NH2,4:/COOH,
     %---------------------
     2:red,     % red   A2
     5:blue,    % blue  A5
     3=green    % green B3
     %---------------------
  )
endfigm
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Change color")
  fsize:=(50mm,20mm);
  max_blength:=8mm;
  MC(
    <30,Ph,{2,5}:N,3:/NH2,4:/COOH,
    2:red,5:blue,3=green
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Change font}
\index{atomfont}%
\begin{verbatim}
beginfigm()
  %----------------
  atomfont:="cmr8";
  %----------------
  MC(<30,Ph,{2,5}:N,3:/NH2,4:/COOH)
endfigm
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:Change font")
  fsize:=(50mm,20mm);
  max_blength:=8mm;
  atomfont:="cmr8";
  MC(<30,Ph,{2,5}:N,3:/NH2,4:/COOH)
endfigm
\end{mplibcode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Option parameter}
%------------------------------------------------------------------------------
\subsection{Angle parameter}
\index{mangle}%
\begin{verbatim}
mangle=0   ** default

MCat(0.2,0.5)(Ph)
mangle:=30;
MCat(0.8,0.5)(Ph)
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:mangle")
  fsize:=(50mm,15mm);
  blength:=6mm;
  mangle:=0;
  MCat(0.2,0.5)(Ph)
  add(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);)
  mangle:=30;
  MCat(0.8,0.5)(Ph)
  add(drawarrow((A1 shifted (aw,0)) rotated A1ang..A1);)
endfigm
\end{mplibcode}
%------------------------------------------------------------------------------
\subsection{Size/Ratio parameter}
%-----------------------------------------------------------------------------
\subsubsection{Bond length}
\index{blength}%
\begin{verbatim}
(fit to figure size)
blength=0   ** default
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
beginfigm("EN:blength=0")
  sw_frame:=Bothside;
  fsize:=(40mm,15mm);
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%-----------------------------------------
\begin{verbatim}
(ratio bond/figure width)
blength=0.1  ** (0<blength<=1)
blength=60mm(width)*0.1=6mm
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:0<blength=<1")
  sw_frame:=Bothside;
  fsize:=(40mm,15mm);
  blength:=0.1;
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%-----------------------------------------
\begin{verbatim}
(bond length)
blength=9mm
** (blength>1) ignore msize(w,h)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:blength>1")
  sw_frame:=Bothside;
  fsize:=(40mm,15mm);
  blength:=8mm;
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%------------------------------------------------------------------------------
\subsubsection{Molecular size}
\index{msize}%
\begin{verbatim}
msize=(1,1)  ** default
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:msize=(1)")
  sw_frame:=Bothside+Mol;
  fsize:=(40mm,15mm);
  msize:=(1,1);
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------
\begin{verbatim}
msize=(0.25,1)
msize=40mm-4mm*0.25=9mm
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:msize=(0.25,1)")
  sw_frame:=Bothside+Mol;
  fsize:=(40mm,15mm);
  msize:=(0.25,1);
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------
\begin{verbatim}
msize=(11mm,11mm)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:msize=(11mm,11mm)")
  sw_frame:=Bothside+Mol;
  fsize:=(40mm,15mm);
  msize:=(11mm,11mm);
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%------------------------------------------------------------------------------
\subsubsection{Molecular position}
\index{mposition}%
\begin{verbatim}
mposition=(0.5,0.5) ** default
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:mposition")
  sw_frame:=Bothside+Mol;
  fsize:=(40mm,15mm);
  msize:=(1,0.8);
  mposition:=(0.5,0.5);
  MC(<30,Ph)
endfigm
\end{mplibcode}
%--------------------------------------------------------------
\begin{verbatim}
mposition=(1,0)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:mposition")
  sw_frame:=Bothside+Mol;
  fsize:=(40mm,15mm);
  msize:=(1,0.8);
  mposition:=(1,0);
  MC(<30,Ph)
endfigm
\end{mplibcode}
%--------------------------------------------------------------
\begin{verbatim}
mposition=(10mm,4mm)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:mposition")
  sw_frame:=sw_frame+Mol;
  fsize:=(40mm,15mm);
  msize:=(1,0.8);
  mposition:=(10mm,4mm);
  MC(<30,Ph)
  ext(drawdot p1 withpen pencircle scaled 3pt;
      pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%------------------------------------------------------------------------------
\subsection{Size parameter}
%-----------------------------------------------------------------------------
\subsubsection{Figure size}
\index{fsize}%
\begin{verbatim}
fsize=(figure width,figure height)
** default: (30mm,20mm)

fsize=(40mm,15mm)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:Figure size")
  fsize:=(40mm,12mm);
  sw_frame:=Outside;
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Figure margin}
\index{fmargin}%
\begin{verbatim}
fmargin=(margin left rigth,top bottom)
** default: (0.4mm,0.4mm)

fmargin=(10mm,2mm)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:fmargin")
  fsize:=(40mm,12mm);
  sw_frame:=Bothside+Mol;
  fmargin:=(10mm,1mm);
  MC(<30,Ph)
  ext(pickup pencircle scaled 0.2pt; 
      for i=0 upto w/mm: draw (i*mm,0)--(i*mm,-.5mm); endfor
      for i=0 upto h/mm: draw (0,i*mm)--(-.5mm,i*mm); endfor
      for i=0 upto w/cm: draw (i*cm,0)--(i*cm,-.8mm); endfor
      for i=0 upto h/cm: draw (0,i*cm)--(-.8mm,i*cm); endfor
      drawdot p0 withpen pencircle scaled 3pt;
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Offset thickness of bond}
\index{offset\_thickness}%
\begin{verbatim}
default: offset_thickness=0.2pt
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:offset_thickness",":<30,Ph") 
  fsize:=(60mm,12mm);
  offset_thickness:=0.0pt; MCat(0.1,0.5)(scantokens(mc))
  offset_thickness:=0.2pt; MCat(0.55,0.5)(scantokens(mc))
  offset_thickness:=0.5pt; MCat(1,0.5)(scantokens(mc))
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.0pt",(0,1bp));
    label.urt("0.2pt",(0.36w,1bp));
    label.urt("0.5pt",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Offset of double bond gap}
\index{offset\_bond\_gap}%
\begin{verbatim}
default: offset_bond_gap=0.3pt
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:offset_bond_gap",":<30,Ph")
  fsize:=(60mm,12mm);
  offset_bond_gap:=0.0pt; MCat(0.1, 0.5)(scantokens(mc))
  offset_bond_gap:=0.3pt; MCat(0.55,0.5)(scantokens(mc))  %<<== default
  offset_bond_gap:=1.0pt; MCat(1,   0.5)(scantokens(mc))
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.0pt",(0,1bp));
    label.urt("0.3pt",(0.36w,1bp));
    label.urt("1.0pt",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Offset of atom width}
\index{offset\_atom}%
\begin{verbatim}
default: offset_atom=0.8pt
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:offset_atom")
  fsize:=(60mm,12mm);
  offset_atom:=0.0pt; MCat(0.1, .5)(<30,?6,3:O)
  offset_atom:=0.8pt; MCat(.55, .5)(<30,?6,3:O)   %<<== default
  offset_atom:=2.0pt; MCat(1,   .5)(<30,?6,3:O)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.0pt",(0,1bp));
    label.urt("0.8pt",(0.36w,1bp));
    label.urt("2.0pt",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Offset of wedge width}
\index{offset\_wedge}%
\begin{verbatim}
default:  offset_wedge=0.4pt
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:offset_wedge") 
  fsize:=(60mm,12mm);
  offset_wedge:=0.0pt; MCat(0.1,0.5)(<30,?6,5:*/_)
  offset_wedge:=0.4pt; MCat(0.55,0.5)(<30,?6,5:*/_)  %<<== default
  offset_wedge:=1.0pt; MCat(1, 0.5)(<30,?6,5:*/_)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.0pt",(0,1bp));
    label.urt("0.4pt",(0.36w,1bp));
    label.urt("1.0pt",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Max bond length}
\index{max\_blength}%
\begin{verbatim}
default:  max_blength=10mm
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:max_blength")
  fsize:=(60mm,20mm);
  sw_frame:=sw_frame+Mol;
  max_blength:=5mm;  MCat(0, .5)(<30,Ph)
  max_blength:=8mm;  MCat(.4,.5)(<30,Ph)
  max_blength:=10mm; MCat(1, .5)(<30,Ph)   %<<== default
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label("5mm", (0.1w,0.5h));
    label("8mm", (0.42w,0.5h));
    label("10mm",(0.82w,0.5h));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Ratio parameter}
%-----------------------------------------------------------------------------
\subsubsection{Thickness/bond length}
\index{ratio\_thickness\_bond}%
\begin{verbatim}
default:  ratio_thickness_bond=0.015
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_thickness_bond")
  fsize:=(60mm,12mm);
  ratio_thickness_bond:=0.005;  MCat(0.1,0.5)(<30,Ph)
  ratio_thickness_bond:=0.015;  MCat(.55,0.5)(<30,Ph)  %<<== default
  ratio_thickness_bond:=0.03;   MCat(1, 0.5)(<30,Ph)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.005",(0,1bp));
    label.urt("0.015",(0.36w,1bp));
    label.urt("0.030",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Char/bond thickness}
\index{ratio\_char\_bond}%
\begin{verbatim}
default:  ratio_char_bond=1.5
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_char_bond")
  fsize:=(60mm,12mm);
  ratio_char_bond:=1.0;  MCat(0, .5)(<30,?6,6:O,3:NH)
  ratio_char_bond:=1.5;  MCat(.5, .5)(<30,?6,6:O,3:NH)   %<<== default
  ratio_char_bond:=2.0;  MCat( 1, .5)(<30,?6,6:O,3:NH)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("1.0",(0,1bp));
    label.urt("1.5",(0.36w,1bp));
    label.urt("2.0",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Bond gap/bond length}
\index{ratio\_bondgap\_bond}%
\begin{verbatim}
default:  ratio_bondgap_bond= 0.15
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_bondgap_bond")
  fsize:=(60mm,12mm);
  ratio_bondgap_bond:=0.10; MCat(0.1, .5)(<30,Ph)
  ratio_bondgap_bond:=0.15; MCat(.55, .5)(<30,Ph)    %<<== default
  ratio_bondgap_bond:=0.20; MCat(1  , .5)(<30,Ph)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.10",(0,1bp));
    label.urt("0.15",(0.36w,1bp));
    label.urt("0.20",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Atom/bond length}
\index{ratio\_atom\_bond}%
\begin{verbatim}
default:  ratio_atom_bond= 0.36
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_atom_bond")
  fsize:=(60mm,12mm);
  ratio_atom_bond:=0.25;  MCat(0.1, .5)(<30,?6,3:O)
  ratio_atom_bond:=0.33;  MCat(.55, .5)(<30,?6,3:O)   %<<== default
  ratio_atom_bond:=0.45;  MCat(1, .5)(<30,?6,3:O)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.25",(0,1bp));
    label.urt("0.33",(0.36w,1bp));
    label.urt("0.45",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Wedge/bond length}
\index{ratio\_wedge\_bond}%
\begin{verbatim}
default:  ratio_wedge_bond=0.12
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_wedge_bond")
  fsize:=(70mm,12mm);
  ratio_wedge_bond:=0.1;  MCat(0.05,.5)(?6,4:*/_)
  ratio_wedge_bond:=0.12; MCat(.55, .5)(?6,4:*/_)   %<<== default
  ratio_wedge_bond:=0.2;  MCat(1  , .5)(?6,4:*/_)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.10",(0,1bp));
    label.urt("0.12",(0.36w,1bp));
    label.urt("0.20",(0.7w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Figure atom gap/atom length}
\index{ratio\_atomgap\_atom}%
\begin{verbatim}
default:  ratio_atomgap_atom= 0.050
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_atomgap_atom",":<30,!2`0.5,2:O")
  fsize:=(70mm,12mm);
  sw_frame:=sw_frame+Atom;
  ratio_atomgap_atom:=0.00;  MCat(0, .5)(scantokens(mc))
  ratio_atomgap_atom:=0.050; MCat(.5,.5)(scantokens(mc))  %<<== default
  ratio_atomgap_atom:=0.12;  MCat(1, .5)(scantokens(mc))
  ext(defaultscale:=0.75; labeloffset:=1bp;
    label.urt("0.00",(0.05w,1bp));
    label.urt("0.05",(0.45w,1bp));
    label.urt("0.12",(0.85w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Chain/ring length}
\index{ratio\_chain\_ring}%
\begin{verbatim}
default:  ratio_chain_ring= 0.66
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_chain_ring")
  fsize:=(70mm,12mm);
  ratio_chain_ring:= 0.4;  MCat(0.05,.5)(<30,?6,4:/!)
  ratio_chain_ring:= 0.66; MCat(.45, .5)(<30,?6,4:/!)   %<<== default
  ratio_chain_ring:= 1;    MCat(1,   .5)(<30,?6,4:/!)
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.40",(0,1bp));
    label.urt("0.66",(0.3w,1bp));
    label.urt("1.0" ,(0.62w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Hash gap/bond length}
\index{ratio\_hashgap\_bond}%
\begin{verbatim}
default:  ratio_hashgap_bond=0.12
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:ratio_hashgap_bond",":<30,!2,2:/*_`1.5")
  fsize:=(70mm,15mm);
  ratio_hashgap_bond:=0.06; MCat(0.08,.5)(scantokens(mc))
  ratio_hashgap_bond:=0.12; MCat( .55,.5)(scantokens(mc)) %<<== default
  ratio_hashgap_bond:=0.20; MCat(1,   .5)(scantokens(mc))
  ext(defaultscale:=0.6; labeloffset:=1bp;
    label.urt("0.06",(0,1bp));
    label.urt("0.12",(0.4w,1bp));
    label.urt("0.20",(0.77w,1bp));
  )
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
%%%%\newpage
%-----------------------------------------------------------------------------
\subsection{Drawing mode}
%-----------------------------------------------------------------------------
\subsubsection{Numbering atom}
\index{sw\_numbering}%
\index{Atom}%
\index{numbering\_start}%
\index{numbering\_end}%
\begin{verbatim}
sw_numbering=Atom
numbering_start:=3;
numbering_end:=8;
default: sw_numbering=0

sw_numbering:=Atom;
MC(<-30,!9)
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch numbering atom")
  fsize:=(60mm,10mm);
  ratio_chain_ring:=1;
  numbering_start:=3; numbering_end:=8;
  sw_numbering:=Atom; MC(<-30,!9)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Numbering bond}
\index{numbering\_start}%
\index{numbering\_end}%
\index{Bond}%
\begin{verbatim}
sw_numbering=Bond
numbering_start:=3;
numbering_end:=8;
default: sw_numbering=0

sw_numbering:=Bond;
MC(<-30,!9)
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch numbering bond")
  fsize:=(60mm,10mm);
  ratio_chain_ring:=1;
  numbering_start:=3; numbering_end:=8;
  sw_numbering:=Bond; MC(<-30,!9)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Trimming mode}
\index{sw\_trimming}%
\begin{verbatim}
sw_trimming:=0;  ** default
msize:=(1,0.7);
MCat(0.2,0.3)(Ph)
MCat(0.8,0.7)(Ph)
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch trimming")
  fsize:=(60mm,20mm);
  sw_frame:=Bothside+Mol;
  msize:=(1,.7); MCat(.2,.3)(Ph)
                 MCat(.8,.7)(Ph)
endfigm
\end{mplibcode}
%------------------------------------------------------
\begin{verbatim}
sw_trimming:=1;
MCat(0.2,0.3)(Ph)
MCat(0.8,0.7)(Ph)
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch trimming")
  fsize:=(60mm,20mm);
  sw_frame:=Bothside+Mol;
  sw_trimming:=1;
  msize:=(1,.7);
  MCat(.2,.3)(Ph)
  MCat(.8,.7)(Ph)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Expand mode}
\index{sw\_expand}%
\begin{verbatim}
MCat(0, .5)(<30,Ph,4:/COOH,3:/NH2)
sw_expand:=1;
MCat(1, .5)(<30,Ph,4:/COOH,3:/NH2)
** default: sw_expand=0
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch Expand",":<30,Ph,4:/COOH,3:/NH2")
  fsize:=(60mm,20mm);
  MCat(0, .5)(scantokens(mc))
  sw_expand:=1;
  MCat(1, .5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Abbreviate group}
\index{Group}%
\index{sw\_abbreviate}%
\begin{verbatim}
** default: sw_abbreviate=Group
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch abbreviate group",":<30,Ph,4:/Cl,3:/F")
  fsize:=(60mm,12mm);
  MCat(.15, .5)(scantokens(mc))
  sw_abbreviate:=Group;
  MCat(.85, .5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Abbreviate bond type}
\index{Bond}%
\index{sw\_abbreviate}%
\begin{verbatim}
** default: sw_abbreviate=Bond
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch abbreviate bondtype",":<30,Ph,4:/Cl,3:/F")
  fsize:=(60mm,12mm);
  MCat(.15, .5)(scantokens(mc))
  sw_abbreviate:=Bond;
  MCat(.85, .5)(scantokens(mc))
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Frame}
%-----------------------------------------------------------------------------
\subsubsection{Figure frame}
\index{sw\_frame}%
\index{Bothside}%
\index{Inside}%
\index{Outside}%
\begin{verbatim}
** default:sw_frame=0
(Draw figure frame)
fmargin:=(5mm,2mm);
sw_frame=Outside
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch font frame 1")
  fsize:=(30mm,10mm);
  fmargin:=(5mm,1.5mm);
  sw_frame:=Outside;
  MC(<30,Ph)
endfigm
\end{mplibcode}
%------------------------------------------------------
\begin{verbatim}
(Frame inside margin)
sw_frame=Inside
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch font frame 2")
  fsize:=(30mm,10mm);
  fmargin:=(5mm,1.5mm);
  sw_frame:=Inside;
  MC(<30,Ph)
endfigm
\end{mplibcode}
%------------------------------------------------------
\begin{verbatim}
(Draw both frame)
sw_frame=Bothside=Inside+Outside
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch font frame 3")
  fsize:=(30mm,10mm);
  fmargin:=(5mm,1.5mm);
  sw_frame:=Bothside;
  MC(<30,Ph)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Molecular frame}
\index{Mol}%
\begin{verbatim}
sw_frame=Mol
** default:sw_frame=0
\end{verbatim}
%------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch molecular frame")
  sw_frame:=Outside;
  fsize:=(40mm,11mm);
  msize:=(1,1);
  sw_frame:=sw_frame+Mol;
  MC(<30,Ph)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Atom frame}
\index{Atom}%
\begin{verbatim}
sw_frame=Atom
** default: sw_frame=0

MC(<30,COOH,!,COOH)
\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:Switwch atom frame")
  fsize:=(60mm,10mm);
  sw_frame:=sw_frame+Atom;
  MC(<30,COOH,!,COOH)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Parameter setting}
\subsubsection{Local parameter setting}
\index{beginfigm()}%
\index{endfigm}%
\begin{verbatim}
beginfigm()
  MC(Ph)
endfigm
beginfigm()
  %--------------------------
  ratio_thickness_bond:=0.05;
  %--------------------------
  MC(Ph)
endfigm
beginfigm()
  MC(Ph)
endfigm
\end{verbatim}
%------------------------------------------------------
\quad
\begin{mplibcode}
fsize:=(15mm,12mm);
beginfigm("EN:Local setting 1")
  MC(Ph)
endfigm
beginfigm("EN:Local setting 2")
  ratio_thickness_bond:=0.05;
  MC(Ph)
endfigm
beginfigm("EN:Local setting 3")
  MC(Ph)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Global parameter setting}
\begin{verbatim}
beginfigm()
  MC(Ph)
endfigm
%--------------------------
ratio_thickness_bond:=0.05;
%--------------------------
beginfigm()
  MC(Ph)
endfigm
beginfigm()
  MC(Ph)
endfigm
\end{verbatim}
%----------------------------------------------------
\quad
\begin{mplibcode}
save_ratio:=ratio_thickness_bond;
fsize:=(15mm,12mm);
beginfigm("EN:Global setting 1")
  MC(Ph)
endfigm
ratio_thickness_bond:=0.05;
beginfigm("EN:Global setting 2")
  MC(Ph)
endfigm
beginfigm("EN:Global setting 3")
  MC(Ph)
endfigm
ratio_thickness_bond:=save_ratio;
\end{mplibcode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Function}
%-----------------------------------------------------------------------------
\subsection{Function MC()}
\index{MC()}%
\begin{verbatim}
(Draw molecule)

msize=(a,b)        **default (1,1)
mposition=(c,d)    **default (0.5,0.5)

a: ratio molecular width/figure width
b: ratio molecular hight/figure hight
c: x axis position
d: y axis position

beginfigm()
  MC(<30,Ph,3:/F,4:/Cl)
endfigm
\end{verbatim}
%------------------------------------------------
\begin{mplibcode}
beginfigm("EN:MC() ")
  fmargin:=(0.5mm,0.5mm);
  fsize:=(40mm,15mm);
  sw_frame:=Outside+Mol;
  MC(<30,Ph,4:/Cl,3:/F)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Function MCat()}
\index{MCat()}%
\begin{verbatim}
(Draw molecule at mposition)

MCat(c,d)(....) :

mposition:=(c,d); MC(....)

c: x axis position
d: y axis position

defaultsize:=5bp;
fsize:=(60mm,40mm); fmargin:=(3mm,3mm);
blength:=0.07; sw_frame:=Outside;
mangle:=0;
for i=1 step -0.5 until 0:
  for j=0 step 0.33 until 1:
    MCat(j,i)(Ph,4:N)
    add(drawarrow((A1+A1up**aw)..A1);
        label(decimal(mangle),
              p0+(0.5w,0.5h));
    )
    mangle:=mangle+30;
  endfor
endfor

\end{verbatim}
%---------------------------------------------
\begin{mplibcode}
beginfigm("EN:MCat()")
  defaultscale:=0.6;
  fsize:=(60mm,40mm);
  fmargin:=(3mm,3mm);
  blength:=0.07;
  sw_frame:=Outside;
  mangle:=0;
  for i=1 step -0.5 until 0:
    for j=0 step 0.33 until 1:
      MCat(j,i)(Ph,4:N)
      add(
        drawarrow((A1+A1up**aw)..A1);
        label(decimal(mangle),p0+(0.5w,0.5h));
      )
      mangle:=mangle+30;
    endfor
  endfor
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Function mc\_check()}
\index{mc\_check()}%
\begin{verbatim}
(immediately compile)

beginfigm("EN:Pyridine")
  MC(<30,Ph,2:N)
endfigm

(check mcf and compile)

** mc_check(mc) : error count

beginfigm("EN:Pyridine",
  ":<30,Ph,}2:N") % ** extra '}'
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm

\end{verbatim}
%-----------------------------------------------------
\quad
\begin{mplibcode}
beginfigm("EN:Pyridine",":<30,Ph,2:N")
  sw_trimming:=0;
  fsize:=(12mm,12mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
beginfigm("EN:Pyridine",":<30,Ph,2):N")
  sw_trimming:=0;
  fsize:=(12mm,12mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
%-----------------------------------------------------
\begin{verbatim}
mc_check(mc)=0   mc_check(mc)>=1
\end{verbatim}
%===============================================================================
\newpage
\subsection{Function add()}
\index{add()}%
\index{plus}%
\index{minus}%
\index{lonepair}%
\index{lonepairdiam}%
\index{lonepairspace}%
\index{circlediam}%
\index{circlepen}%
\index{w}%
\index{h}%
\index{aw}%
\index{em}%
\index{p0}%
\index{l}%
\index{/*}%
\index{**}%
\index{\textgreater\textgreater}%
\index{An}%
\index{A[]}%
\index{A[]ang}%
\index{A[]up}%
\index{A[]left}%
\index{A[]right}%
\index{A[]down}%
\index{Bn}%
\index{B[]}%
\index{B[]s}%
\index{B[]m}%
\index{B[]e}%
\index{B[]ang}%
\index{B[]up}%
\index{B[]left}%
\index{B[]right}%
\index{B[]down}%
\index{defaultscale}%
\index{labeloffset}%
\begin{verbatim}
(Add label to molecule)

w:       molecular width
h:       molecular height
aw:      atom font size
em:      label font size
p0:      origin of molecular structure
l:       bond length

An:      atom number
A[m]:    atom position
A[m]ang: branch angle of A[m]
A[m]up:    dir A[m]ang
A[m]left:  dir A[m]ang+90
A[m]right: dir A[m]ang-90
A[m]down:  dir A[m]ang+180

Bn:      bond number
B[m]:    bond(path)
B[m]s:   bond start position
B[m]m:   bond middle position
B[m]e:   bond end position
B[m]ang: bond angle
B[m]up:    dir B[m]ang
B[m]left:  dir B[m]ang+90
B[m]right: dir B[m]ang-90
B[m]down:  dir B[m]ang+180

plus  : '+' circled
minus : '-' circled
  circlediam = 0.6aw (default)
  circlepen =  0.2bp (default)

lonepair r: ':' rotated r
  lonepairdiam  = 0.3aw (default)
  lonepairspace = 0.7aw (default)

** : scaled
<< : rotated
a /* b : point b of a

beginfigm("EN:add() 1")
 fsize:=(70mm,40mm);
 sw_frame:=sw_frame+Atom+Mol;
 max_blength:=10mm;
 msize:=(.91,.9);
 MCat(.5,.85)(<30,?6,{2,5}:O)
 add(
  defaultscale:=.8;
  labeloffset:=.3aw;
  dotlabel.lft("p0",p0);
  dotlabel.rt( "p0+(w,h)",p0+(w,h));
  dotlabel.ulft("A1",A1);
  drawarrow A1..A1+__*l<<A1ang;
  dotlabel.lrt( "B3s",B3s);
  dotlabel.rt("B3m",B3m);
  drawarrow B3m..B3m+__*l<<(B3ang+90);
  dotlabel.ulft("A6",A6);
  drawarrow A1{A1down}..A6;
  dotlabel.urt( "B3e",B3e);
  label.rt(  "An="&decimal(An)&
           "  Bn="&decimal(Bn)&
           "  aw="&decimal(aw)&
           "  em="&decimal(em),
           p0+(-9em,-1.5em));
  label.rt(  "w="&decimal(w)&
    "  h="&substring (0,6)of decimal(h)&
    "  l="&substring (0,6)of decimal(l),
           p0+(-9em,-3em));
 )
endfigm
\end{verbatim}
%------------------------------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:add() 1")
 fsize:=(70mm,40mm);
 sw_frame:=sw_frame+Atom+Mol;
 max_blength:=10mm;
 msize:=(.91,.9);
 MCat(.5,.85)(<30,?6,{2,5}:O)
 add(
  defaultscale:=.8;
  labeloffset:=.3aw;
  dotlabel.lft("p0",p0);
  dotlabel.rt( "p0+(w,h)",p0+(w,h));
  dotlabel.ulft("A1",A1);
  drawarrow A1..A1+__*l<<A1ang;
  dotlabel.lrt( "B3s",B3s);
  dotlabel.rt("B3m",B3m);
  drawarrow B3m..B3m+__*l<<(B3ang+90);
  dotlabel.ulft("A6",A6);
  drawarrow A1{A1down}..A6;
  dotlabel.urt( "B3e",B3e);
  label.rt(  "An="&decimal(An)&
           "  Bn="&decimal(Bn)&
           "  aw="&decimal(aw)&
           "  em="&decimal(em),
           p0+(-9em,-1.5em));
  label.rt(  "w="&substring (0,6)of decimal(w)&
           "  h="&substring (0,6)of decimal(h)&
           "  l="&substring (0,6)of decimal(l),
           p0+(-9em,-3em));
 )
endfigm
\end{mplibcode}
%------------------------------------------------------------------------------
\begin{verbatim}
beginfigm("EN:add() 2")
 fsize:=(60mm,20mm);
 msize:=(1,0.85);
 %---------------------------------------
 MCat(0,0)(<30,Ph,3=dl,4:/NH2)
 %---------------------------------------
 add(
  labeloffset:=.7aw;
  label.top(lone_pair 90,A7);
  drawarrow 
    (A7+up**1.2aw){A7left}
     ..{B7right}B7/*0.3;
  drawarrow
    B3m..A3+B2up**1.5aw..{A3down}A3;
 )
 %---------------------------------------
 MCat(1,0)(<30,?6,{1,5}=dl,4://NH2)
 %---------------------------------------
 add(
  labeloffset:=.7aw;
  label.top(plus,A7);
  label.urt(minus,A3);
  label(lonepair A3ang,A3+A3up**.7aw);
 )
 %---------------------------------------
 ext(drawdblarrow (.4w,.4h)..(.55w,.4h);)
 %---------------------------------------
endfigm
\end{verbatim}
%-------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:add() 2")
  fsize:=(70mm,20mm);
  msize:=(1,0.85);
  %-------------------------------------------
  MCat(0,0)(<30,Ph,3=dl,4:/NH2)
  %-------------------------------------------
  add(labeloffset:=.7aw;
      label.top(lonepair 90,A7);
      drawarrow (A7+up**1.2aw){A7left}..{B7right}B7/*0.3;
      drawarrow B3m..A3+B2up**1.5aw..{A3down}A3;
  )
  %-------------------------------------------
  MCat(1,0)(<30,?6,{1,5}=dl,4://NH2)
  %-------------------------------------------
  add(labeloffset:=.7aw;
      label.top(plus,A7);
      label.urt(minus,A3);
      label(lonepair A3ang,A3+A3up**.7aw);
  )
  ext(drawdblarrow (0.4w,0.4h)..(0.55w,0.4h);)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
\subsection{Function ext()}
\index{ext()}%
\index{w0}%
\index{h0}%
\index{aw}%
\index{em}%
\index{n}%
\index{ratio\_thickness\_char}%
\index{defaultscale}%
\begin{verbatim}
(Extra label to figure)
 
w:    figure width
h:    figure height
w0:   figure width-2xpart(fmargin)
h0:   figure height-2ypart(fmargin)
aw:   atom font size
em:   label font size
p0:   fmargin

n:    molecular number
p[m]: molecular origin position
w[m]: molecular width
h[m]: molecular height

ratio_thickness_char:
pen thickness / char width
%----------------------------------------
beginfigm()
 fsize:=(70mm,30mm;);
 blength:=0.065;
 %---------------------------------------
 MCat(0.1,0.5)(
   <-210,60`1,60`1,60`1,{1,3}=dl,
   1:/R1,4:/R2^-60
   )
 add(
     defaultscale:=0.6;
     label.bot("Diene",p0+(0.5w,0));
 )
 MCat(0.4,0.5)(
   <-30,-60`1,1=dl,1:/R3,2:/R4^60)
   add(defaultscale:=0.6;
   label.bot("Dienophile",p0+(.5w,0));
 )
 MCat(0.9,0.5)(
   <30,?6,6=dl,2:/R2,3:/R4,4:/R3,5:/R1
 )
 %---------------------------------------
 ext(
  drawarrow (.52w,.5h)..(.6w,.5h);
  defaultscale:=0.7;
  label("+",(0.25w,0.5h));
  ratio_thickness_char:=0.125;
  label.bot("Diels-Alder Reaction",
            (.5w,h));
 )
 %---------------------------------------
endfigm
\end{verbatim}
%------------------------------------------------------------------------------
\begin{mplibcode}
beginfigm()
  fsize:=(70mm,30mm);
  blength:=0.065;
 %---------------------------------------
 MCat(0.1,0.5)(
   <-210,60`1,60`1,60`1,{1,3}=dl,
   1:/R1,4:/R2^-60
 )
 add(
   defaultscale:=0.6;
   label.bot("Diene",p0+(0.5w,0));
 )
 MCat(0.4,0.5)(
   <-30,-60`1,1=dl,1:/R3,2:/R4^60)
   add(defaultscale:=0.6;
   label.bot("Dienophile",p0+(.5w,0));
 )
 MCat(0.9,0.5)(
   <30,?6,6=dl,2:/R2,3:/R4,4:/R3,5:/R1
 )
 %---------------------------------------
 ext(
  drawarrow (.52w,.5h)..(.6w,.5h);
  defaultscale:=0.7;
  label("+",(0.25w,0.5h));
  ratio_thickness_char:=0.125;
  label.bot("Diels-Alder Reaction",
            (.5w,h));
 )
 %---------------------------------------
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Local ext() setting}
\begin{verbatim}
beginfigm("EN:?3")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(<30,?3)
endfigm
beginfigm("EN:?4")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?4)
  %-------------------------------
  ext(label.top(inf_EN,(0.5w,0));)
  %-------------------------------
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?5)
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?6)
endfigm
\end{verbatim}
%----------------------------------------------------
\quad
\begin{mplibcode}
beginfigm("EN:?3")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(<30,?3)
endfigm
beginfigm("EN:?4")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?4)
  %-------------------------------
  ext(label.top(inf_EN,(0.5w,0));)
  %-------------------------------
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?5)
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?6)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsubsection{Global ext() setting}
\index{ext\_clear}%
\begin{verbatim}
ext_clear: reset global ext()

beginfigm("EN:?3")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(<30,?3)
endfigm
%-------------------------------
ext(label.top(inf_EN,(0.5w,0));)
%-------------------------------
beginfigm("EN:?4")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?4)
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?5)
endfigm
%---------
ext_clear;
%---------
beginfigm("EN:?6")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?6)
endfigm
\end{verbatim}
%-------------------------------------
\quad
\begin{mplibcode}
beginfigm("EN:?3")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(<30,?3)
endfigm
%-------------------------------
ext(label.top(inf_EN,(0.5w,0));)
%-------------------------------
beginfigm("EN:?4")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?4)
endfigm
beginfigm("EN:?5")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?5)
endfigm
%---------
ext_clear;
%---------
beginfigm("EN:?6")
  fsize:=(12mm,15mm);
  MCat(0.5,1)(?6)
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\newpage
%-----------------------------------------------------------------------------
\onecolumn
\section{MCF example}
%-----------------------------------------------------------------------------
\subsection{Luciferin}
\index{mc\_check()}%
\begin{verbatim}
(use library file 'mcf_library')
beginfigm("f:mcf_library",
          "t:EN","v:Luciferin")
  fsize:=(50mm,15mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{verbatim}
%-------------------------------------------
\begin{mplibcode}
beginfigm("t:EN","v:Luciferin")
  fsize:=(50mm,15mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{Colchicine}
\begin{verbatim}
beginfigm("EN:Colchicine","MW:385.41",
  %-------------------------------------
  ": <30,Ph,{1,2,6}:/O!,{-4,-5}=?7,   ",
  ": {-1,-4,-6}=dl,-2://O,-3:/O!,     ",
  ": @9,\,NH,!,//O,!                  ")
  %-------------------------------------
  fsize:=(50mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{verbatim}
%---------------------------------------
\begin{mplibcode}
beginfigm("EN:Colchicine","MW:385.41",
  %-------------------------------------
  ": <30,Ph,{1,2,6}:/O!,{-4,-5}=?7,   ",
  ": {-1,-4,-6}=dl,-2://O,-3:/O!,     ",
  ": @9,\,NH,!,//O,!                  ")
  %-------------------------------------
  fsize:=(50mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
\subsection{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",
  %-------------------------------------------------------
  ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,   ",
  ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,          ",
  ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,               ",
  ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ",
  ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH           ")
  %-------------------------------------------------------
  fsize:=(50mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{verbatim}
%-------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Maltose","MW:342.3",
  %-------------------------------------------------------
  ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,   ",
  ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,          ",
  ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,               ",
  ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ",
  ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH           ")
  %-------------------------------------------------------
  fsize:=(50mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc)) fi
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\subsection{Erythromycin}
\noindent%
%----------------------------------------------------------------------------
\begin{verbatim}
beginfigm("EN:Erythromycin","MW:733.93")
  fsize:=(120mm,30mm);
  MC(<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1,
      14:O,13:/*Et,{1,9}://O,
      {2',4,6^-35,8,10',12^35}:/*_,
      {6^35,11,12^-35}:*/OH,
      @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##,
      @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?!
  )
  ext(defaultscale:=0.8;
      label.lrt("fm: "&cal_FM,(0,h-5mm));
      label.lrt("mw: "&cal_MW,(0,h-9mm));
      label.lrt("MW: "&inf_MW,(0,h-13mm));
  )
endfigm;
\end{verbatim}
%----------------------------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Erythromycin","MW:733.93")
  fsize:=(120mm,30mm);
  MC(<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1,
      14:O,13:/*Et,{1,9}://O,
      {2',4,6^-35,8,10',12^35}:/*_,
      {6^35,11,12^-35}:*/OH,
      @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##,
      @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?!)
  ext(defaultscale:=0.8;
      label.lrt("fm: "&cal_FM,(0,h-5mm));
      label.lrt("mw: "&cal_MW,(0,h-9mm));
      label.lrt("MW: "&inf_MW,(0,h-13mm));)
endfigm;
\end{mplibcode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Paclitaxel}
\noindent%
\begin{verbatim}
beginfigm("EN:Paclitaxel","MW:853.918",
  %---------------------------------------------------------------------
  ": ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ",
  ": 4:??,6:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O,             ",
  ": @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph,                ",
  ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr              ")
  %---------------------------------------------------------------------
  fsize:=(140mm,30mm);
  if mc_check(mc)=0:
    MCat(0,0.5)(scantokens(mc))
    sw_numbering:=Atom;
    MCat(0.6,0.5)(scantokens(mc))
    sw_numbering:=Bond;
    MCat(1,0.5)(scantokens(mc))
  fi
endfigm
\end{verbatim}
%----------------------------------------------------------------------------
\begin{mplibcode}
beginfigm("EN:Paclitaxel","MW:853.918",
  %---------------------------------------------------------------------
  ": ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ",
  ": 4:??,6:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O,             ",
  ": @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph,                ",
  ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr              ")
  %---------------------------------------------------------------------
  fsize:=(160mm,40mm);
  if mc_check(mc)=0:    MCat(0,0.5)(scantokens(mc))
    sw_numbering:=Atom; MCat(0.5,0.5)(scantokens(mc))
    sw_numbering:=Bond; MCat(1,0.5)(scantokens(mc))
  fi
endfigm
\end{mplibcode}
%----------------------------------------------------------------------------
\newpage
\subsection{Chlorophyll a}
\noindent%
\begin{verbatim}
beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-",
          "= sw_output:=Fig+Calc+Mcode;",
          "= fsize:=(100mm,30mm);")
  if op_row>=1: scantokens(op) fi
  if mc_check(mc)=0:
    MC(scantokens(mc))
    VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
    VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
  fi
endfigm
\end{mplibcode}
\verbatiminput{temp-mc.aux}            %%%% input temp-mc.aux %%%%
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
\end{verbatim}
%------------------------------------------------------------------------------------
\begin{mplibcode}
beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-",
          "= sw_output:=Fig+Calc+Mcode;",
          "= fsize:=(100mm,30mm);")
  if op_row>=1: scantokens(op) fi
  if mc_check(mc)=0:
    MC(scantokens(mc))
    VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
    VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
  fi
endfigm
\end{mplibcode}
\verbatiminput{temp-mc.aux}            %%%% input temp-mc.aux %%%%
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Dinophysistoxin-1}
\noindent%
\begin{verbatim}
beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
          "MW:819",":,38:*/_,65=red")  %%%% add methyl group (color red) %%%%
  sw_output:=Fig+Calc+Mcode;           %%%% output temp-mc.aux %%%%
  fsize:=(120mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc))
    VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
    VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
  fi
endfigm;
\end{mplibcode}
\verbatiminput{temp-mc.aux}            %%%% input temp-mc.aux %%%%
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
\end{verbatim}
%----------------------------------------------------------------------------
\begin{mplibcode}
beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
          "MW:819",":,38:*/_,65=red")  %%%% add methyl group (color red) %%%%
  sw_output:=Fig+Calc+Mcode;           %%%% output temp-mc.aux %%%%
  fsize:=(120mm,20mm);
  if mc_check(mc)=0: MC(scantokens(mc))
    VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
    VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
  fi
endfigm;
\end{mplibcode}
\verbatiminput{temp-mc.aux}            %%%% input temp-mc.aux %%%%
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
%----------------------------------------------------------------------------
\subsection{Maitotoxin}
\noindent%
%--------------------------------------------------------------------------------
\begin{verbatim}
%--------------------------------------------------------------------------------
\begin{mplibcode}
  beginfigm("t:EN","v:Maitotoxin")
    sw_output:=Fig+Calc+Mcode;         %%%% output temp-mc.aux %%%%
    fsize:=(150mm,80mm);
    fmargin:=(3mm,3mm);
    sw_frame:=Outside;
    if mc_check(mc)=0: MC(scantokens(mc))
      VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
      VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
    fi
  endfigm
\end{mplibcode}
\verbatiminput{temp-mc.aux}            %%%% input temp-mc.aux %%%%
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
%--------------------------------------------------------------------------------
\end{verbatim}
%--------------------------------------------------------------------------------
\begin{mplibcode}
  beginfigm("t:EN","v:Maitotoxin")
    sw_output:=Fig+Calc+Mcode;
    fsize:=(150mm,80mm); fmargin:=(3mm,3mm); sw_frame:=Outside; %% mc_length:=40;
    if mc_check(mc)=0: MC(scantokens(mc))
      VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}");
      VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}");
    fi
  endfigm
\end{mplibcode}
\verbatiminput{temp-mc.aux}
{\tt ** EN:\EN \quad mw:\MW \quad MW:\mw \quad fm:\fm}%
%--------------------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\subsection{TCA cycle}
\noindent%
\begin{mplibcode}
beginfigm("EN:TCA cycle")
fsize:=(160mm,75mm);
max_blength:=5mm;
%--------------------------------------------------------------------------------
COOH:='(//O,!,OH);
HOCO:='(OH,!,//O,);
MCat(0.33,   1)(<30,HOCO,!,//O,!2,COOH)                    % Oxaloacetate
MCat(0.66,   1)(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165)  % Citrate
MCat(1,      1)(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH)      % cis-Aconitate
MCat(1,   0.58)(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH)       % Isocitrate
MCat(1,   0.05)(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH)       % Oxalosuccinate
MCat(0.66,0.05)(<30,HOCO,!3,//O,!,COOH)                    % alfa-Ketoglutarate
MCat(0.33,0.05)(<30,HOCO,!3,//O,!,"{S-CoA}")               % Succinyl-CoA
MCat(0,   0.05)(<30,HOCO,!3,COOH)                          % Succinate
MCat(0,   0.55)(<30,HOCO,!,!~dr,!,COOH)                    % Fumarate
MCat(0,      1)(<30,HOCO,!3,COOH,3:/OH)                    % L-Malate
%--------------------------------------------------------------------------------
ext(
defaultfont:="uhvr8r";
defaultscale:=0.75;
ext_setup;
def sel_dir(expr rot)=
  save tx; nA:=rot; if nA>=360: nA:=nA-360; fi
  if     (nA<30)or(nA>330):   def tx=top enddef; elseif (nA>=30)and(nA<=150):  def tx=lft enddef;
  elseif (nA>150)and(nA<210): def tx=bot enddef; elseif (nA>=210)and(nA<=330): def tx=rt enddef; fi
enddef;
def reaction_arrow(expr a)(expr r)(expr p)(expr sa,la)(expr sb,lb)(expr sc,lc)(expr sd,ld)=
  drawarrow ((0,0)..(a,0)) rotated r shifted p;
  if sa<>"": draw ((0.5a,0){dir 180}..{dir 90}(0,.5a*la)) rotated r shifted p;
             sel_dir(r); label.tx(sa,p+((0,0.5a*la) rotated r)); fi
  if sb<>"": draw ((0.5a,0){dir 0}..{dir 90}(a,.5a*lb)) rotated r shifted p;
             sel_dir(r); label.tx(sb,p+((a,0.5a*lb) rotated r)); fi
  if sc<>"": draw ((0.5a,0){dir 180}..{dir -90}(0,-.5a*lc)) rotated r shifted p;
             sel_dir(r+180); label.tx(sc,p+((0,-0.5a*lc) rotated r)); fi
  if sd<>"": draw ((0.5a,0){dir 0}..{dir -90}(a,-.5a*ld)) rotated r shifted p;
             sel_dir(r+180); label.tx(sd,p+((a,-0.5a*ld) rotated r)); fi
enddef;
def r_arrow(expr a)(expr r)(expr p)(expr sc,lc)(expr sd,ld)=
   reaction_arrow(a)(r)(p)("",0)("",0)(sc,lc)(sd,ld)
enddef;
%------------------------------------------------------------------------
save dx; pair dx; dx:=(12mm,0);
label.bot("Oxaloacetate",p1+dx);   label.bot("Citrate",p2+dx);
label.bot("cis-Aconitate",p3+dx);  label.bot("Isocitrate",p4+dx);
label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx);
label.bot("Succinyl-CoA",p7+dx);   label.bot("Succinate",p8+dx);
label.bot("Fumarate",p9+dx);       label.bot("L-Malate",p10+dx);
sw_label_emu:=1;
ext_setup;
r_arrow(10mm)(  0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1);
r_arrow(10mm)(  0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1);
r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0);
r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1);
r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO2",1);
r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1);
r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1);
r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1);
r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0);
r_arrow(10mm)(  0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5);
defaultscale:=1.5;
label("TCA-cycle",(0.5w,0.5h));
)
endfigm
\end{mplibcode}
%------------------------------------------------------------------------
\begin{verbatim}
beginfigmy"EN:TCA cycle")
fsize:=(160mm,75mm);
max_blength:=5mm;
COOH:='(//O,!,OH); HOCO:='(OH,!,//O,);
MCat(0.33,   1)(<30,HOCO,!,//O,!2,COOH)                    % Oxaloacetate
MCat(0.66,   1)(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165)  % Citrate
MCat(1,      1)(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH)      % cis-Aconitate
MCat(1,   0.58)(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH)       % Isocitrate
MCat(1,   0.05)(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH)       % Oxalosuccinate
MCat(0.66,0.05)(<30,HOCO,!3,//O,!,COOH)                    % alfa-Ketoglutarate
MCat(0.33,0.05)(<30,HOCO,!3,//O,!,"{S-CoA}")               % Succinyl-CoA
MCat(0,   0.05)(<30,HOCO,!3,COOH)                          % Succinate
MCat(0,   0.55)(<30,HOCO,!,!~dr,!,COOH)                    % Fumarate
MCat(0,      1)(<30,HOCO,!3,COOH,3:/OH)                    % L-Malate
ext(
defaultfont:="uhvr8r";
defaultscale:=0.75;
ext_setup;
save dx; pair dx; dx:=(12mm,0);
label.bot("Oxaloacetate",p1+dx);   label.bot("Citrate",p2+dx);
label.bot("cis-Aconitate",p3+dx);  label.bot("Isocitrate",p4+dx);
label.bot("Oxalosuccinate",p5+dx); label.bot("alfa-Ketoglutarate",p6+dx);
label.bot("Succinyl-CoA",p7+dx);   label.bot("Succinate",p8+dx);
label.bot("Fumarate",p9+dx);       label.bot("L-Malate",p10+dx);
sw_label_emu:=1;
ext_setup;
r_arrow(10mm)(  0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1);
r_arrow(10mm)(  0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1);
r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0);
r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1);
r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO_2_",1);
r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1);
r_arrow(10mm)(180)(p7+ (-0.1w7, 0.5h7))("GDP,Pi",1.7)("GTP,CoA-SH",1);
r_arrow( 8mm)( 90)(p8+ ( 0.4w8, 1.2h8))("FAD",1)("FADH2",1);
r_arrow( 8mm)( 90)(p9+ ( 0.4w9, 1.2h9))("H2O",1)("",0);
r_arrow(10mm)(  0)(p10+( 1.1w10,0.3h10))("NAD+",1)("NADH2+",1.5);
defaultscale:=1.5;
label("TCA-cycle",(0.5w,0.5h));
)
endfigm
\end{verbatim}
%------------------------------------------------------------------------
\section{Example to use mcf2graph}
\subsection{MetaPost souce file}
\index{mcf2graph.mp}%
\index{sw\_output}%
\index{tag}%
\index{var}%
\begin{verbatim}
%-------------------------------------------------------------------------
input mcf2graph;                                        > input main macro
%-------------------------------------------------------------------------
sw_output:=Info;      % aux(information) file output on > global setting
%%%% sw_output:=Report;                                 > report output
%%%% sw_output:=MOL2k;                                  > MOL file output
fsize:=(60mm,40mm);   %  (figure width,figure height)   >
tag1:="J";                                              > jobname
tag2:="C";                                              > char No
tag3:="mw";           % calculated molecular weight     > 
tag4:="fm";           % calculated molecular formula    >
outputformat:="png"; hppp:=vppp:=0.1;                   > PNG output
outputtemplate:="c%3c-%{EN_}.png";                      >
%-------------------------------------------------------------------------
beginfigm("EN:Ampicillin","MW:349.405")                 > information
  MC(<45,?4,-3=?5,2:N,7:S,                              > immediately compile
    3^45:/*H,1://O^15,5:/*COOH^-18,6:??,                >
    @4,*\^15,NH,!,//O,!,/*NH2,!,Ph)                     >
endfigm                                                 >
%------------------------------------------------------------------------
beginfigm("EN:Cholesterol","MW:386.65",                 >information
  %----------------------------------------             >
  ": <30,?6,{-4,-2}=?6,-4=?5,7=dl,      ",              > mc1
  ": 10:/*H^180,11:/*H^-60,17:/*H^-54,  ",              > mc2
  ": {4,12}:*/_^60,                     ",              > mc3
  ": @-1,18,/*_,-60,!3,?!               ")              > mc4
  %----------------------------------------             >
  if mc_check(mc)=0: MC(scantokens(mc)) fi                 > mc=mc1 - mc4
endfigm                                                 >
%------------------------------------------------------------------------------
beginfigm("f:mcf_library.mcf","t:EN","v:Adenine")       > from mcf_library.mcf
  if mc_check(mc)=0: MC(scantokens(mc)) fi                 > select EN="Adenine"
endfigm                                                 >
%------------------------------------------------------------------------------
beginfigm("t:EN","v:Guanine")                           > select EN="Guanine"
  if mc_check(mc)=0: MC(scantokens(mc)) fi                 
endfigm
%------------------------------------------------------------------------------
beginfigm("t:EN","v:Cytosine")                          > select EN="Cytosine"
  if mc_check(mc)=0: MC(scantokens(mc)) fi                 >
endfigm                                                 >
%------------------------------------------------------------------------------
beginfigm("t:n","v+:4")                                 > v+:4 = select No.4
  if mc_check(mc)=0: MC(scantokens(mc)) fi              >        keep file open
endfigm                                                 >
%------------------------------------------------------------------------------
forever:
%%%%%%%%%%  beginfigm("f:mcf_library","v+:*")            > select all
  beginfigm("f:mcf_library","t:EXA","v+:1")              > 'v+:1'= select EXA=1
    if f_EOF=0: if mc_check(mc)=0: MC(scantokens(mc)) fi fi >   keep file open
  endfigm                                                >    
  exitif f_EOF=1;                                        > exit if file end
endfor
%------------------------------------------------------------------------------
bye
\end{verbatim}
%------------------------------------------------------------------------
\noindent%
\newpage
\subsection{Molecular library file}
\begin{verbatim}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% molecular library file    mcf_library.mcf   by Akira Yamaji   2022.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  tag1:var1;tag2:var2;tag3:var3 .....
%  first character of line "%" comment out
%  first character of line ":"  start MCF
%  first character of line ";"  stop MCF
%  first character of line "="  start parameter setting
%  first character of line "*"  start ext(...)
%  first character of line "+"  start add(...)
%  Cat = Category,EN = Name,MW = Molecular weight
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cat:Category;EN:Example;MW:100.00;EXA:%
=
 sw_frame:=Atom;
:
<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH
*
 defaultscale:=.5;
 label.bot(decimal(fig_num)&":"&inf_EN,(.5w,0));
+
 defaultscale:=.3;
 label.bot("A2",A2) withcolor red;
 label.top("A6",A6) withcolor red;
 label.top("A9",A9) withcolor red;
;
%==============================================================================
Cat:biological;EN:Adenine;MW:135.13;EXA:1
:
<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH
;
%------------------------------------------------------------------------------
Cat:biological;EN:Guanine;MW:151.13;EXA:1
:
<30,?6,3=?5,{1,3,9}=dl,{2,9}:N,{6,7}:NH,5://O,1:/NH2
;
%------------------------------------------------------------------------------
Cat:biological;EN:Cytosine;MW:111.10;EXA:1
:
<30,?6,{4,6}=dl,4:N,3://O,2:NH,5:/NH2
;
%------------------------------------------------------------------------------
Cat:biological;EN:Thymine;MW:126.11;EXA:1
:
<30,?6,3=dl,{2,6}:NH,{1,5}://O,4:/_
;
%------------------------------------------------------------------------------
Cat:biological;EN:Uracil;MW:112.09;EXA:1
:
<30,?6,6=dl,{3,5}://O,{2,4}:NH
;
%== Amino acid ================================================================
Cat:biological;EN:Glycine;MW:75.07;EXA:-
:
<30,NH2,!2,COOH
;
%------------------------------------------------------------------------------
\end{verbatim}
%------------------------------------------------------------------------------
\noindent%
\newpage
\subsection{Function mc\_query()}
\index{mc\_query()}%
\paragraph{(Example)}
\begin{verbatim}
%--------------------------------------------------------------
% mc_query()
%
% "f:filename" : input file name  (default "mcf_library.mcf")
% "o:filename" : output file name (default "temp.mcf")
%
% "a:sort-key" : sort by sort-key ascending
% "d:sort-key" : sort by sort-key descending
%
% operator  :  = , <> , <= , >= , < , >
%
% filter 1  : Cat=biological
% filter 2  : MW>=285
% filter 3  : MW<=295
%
%--------------------------------------------------------------
mc_query("Cat=biological","MW>=285","MW<=290","a:EN");
%--------------------------------------------------------------
\end{verbatim}
%---------------------------------------------------------------
\paragraph{(output)}
\begin{verbatim}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Input  : mcf_library.mcf [506]
% Output : temp.mcf [5]
% Filter(1): Cat =biological
% Filter(2): MW >= 285
% Filter(3): MW <= 290
% Sort key : EN (ascending)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cat:biological;EN:Atoropin;MW:289.375;EXA:1
:
<30,O,!,//O,!2,Ph,@$1,\~zb^-60,|,?7`1.1,@6,*\^190`1.25,N!,&3~wb,$3:/!OH~wv 
;
Cat:biological;EN:Luteolin;MW:286.24;EXA:-
:
<30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,{2,6,14,15}:/OH
;
Cat:biological;EN:Lycorine;MW:287.315;EXA:1
:
<30,Ph,{-4,-2}=?6,{6,(9,12)}=?5,13=dl,8:N,{15,17}:O,
 {9'^180,10^60}:*/H,{13,14'}:*/OH
;
Cat:biological;EN:Morphine;MW:285.343;EXA:1
:
<30,Ph,{2,-4}=?6,(1,12)=?5[2],-1:O,-1=zb,
 @7,60~wf`0.75,70~si_`1.3,45,N!,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH
;
Cat:biological;EN:Piperine;MW:285.343;EXA:1
:
<30,Ph,-1=?5,{-1,-3}:O,@4,\,!!,!,!!,!,//O,!,?6,-6:N
;
\end{verbatim}
%------------------------------------------------------------------------------
\noindent%
\newpage
\subsection{Information aux file output}
\paragraph{(Option parameter setting)}
\index{J}%
\index{C}%
\index{NO}%
\index{MW}%
\index{MI}%
\index{EN}%
\index{JN}%
\index{FM}%
\index{USE}%
\index{mw}%
\index{fm}%
\index{mi}%
\index{w}%
\index{h}%
\index{Info}%
\index{Table}%
\index{Temp}%
\begin{verbatim}
  sw_output:=Info;        %% tag1:var1;tag2:var2
  sw_output:=Info+Table;  %% tag1;tag2 var1;var2
\end{verbatim}
\paragraph{(Command line)}
\begin{verbatim}
  >mpost -s ahlength=1 FILENAME  (sw_output=Info)
  >mpost -s ahlength=2 FILENAME  (sw_output=Info+Table)
\end{verbatim}
\paragraph{(Sourse)}
\begin{verbatim}
beginfigm("EN:Ampicillin")    .... endfigm
beginfigm("EN:Cholesterol")   .... endfigm
beginfigm("EN:Limonin")       .... endfigm
beginfigm("EN:beta-Carotene") .... endfigm
\end{verbatim}
\paragraph{(Setting)}
\begin{verbatim}
tag1:="J"; tag2:="C"; tag3:="mw"; tag4:="fm"; tag5:="EN";
\end{verbatim}
\paragraph{(Output)}
\index{aux\_delimiter}%
\begin{verbatim}
(sw_output=Info)
F:mcf_man_soc;C:1;mw:349.40462;fm:C16H19N3O4S;EN:Ampicillin
F:mcf_man_soc;C:2;mw:386.6532;fm:C27H46O;EN:Cholesterol
F:mcf_exa_soc;C:3;mw:470.5113;fm:C26H30O8;EN:Limonin
F:mcf_exa_soc;C:4;mw:536.8722;fm:C40H56;EN:beta-Carotene

(sw_output=Info+Table)
F;C;mw;fm
mcf_man_soc;1;349.40462;C16H19N3O4S;Ampicillin
mcf_man_soc;2;386.6532;C27H46O;Cholesterol
mcf_exa_soc;3;470.5113;C26H30O8;Limonin
mcf_exa_soc;4;536.8722;C40H56;beta-Carotene

(aux_delimiter="/")
F:mcf_man_soc/C:1/mw:349.40462/fm:C16H19N3O4S/EN:Ampicillin
F:mcf_man_soc/C:2/mw:386.6532/fm:C27H46O/EN:Cholesterol
F:mcf_exa_soc/C:3/mw:470.5113/fm:C26H30O8/EN:Limonin
F:mcf_exa_soc/C:4/mw:536.8722/fm:C40H56/EN:beta-Carotene
\end{verbatim}
\paragraph{(Tag)}
\begin{verbatim}
J   : jobname                           
C   : char number
NO  : serial number
EN  : english name
JN  : japanese name
FM  : formula from literature data
MW  : molecular weight from literature data
MI  : monoisotopic mass from literature data
USE : the use
mw  : molecular weight calculated
mi  : monoisotopic mass calculated
fm  : molecular formula calculated
w   : figure width
h   : figure height
\end{verbatim}
%------------------------------------------------------------------------
\noindent%
\newpage
\subsection{MCF aux file output}
\paragraph{(Option parameter setting)}
\index{Mcode}%
\index{Temp}%
\begin{verbatim}
sw_output:=Mcode;         %% output 'temp-mc.aux'
\end{verbatim}
\paragraph{(Command line)}
\begin{verbatim}
  >mpost -s ahlength=3 FILENAME  (sw_output=Info+Mcode)
\end{verbatim}
\paragraph{(Output mcf file)}
\begin{verbatim}
sw_output=Mcode           %% file name = 'temp-mc.aux'

(result)
<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH

\end{verbatim}
\paragraph{(Output library file)}
\begin{verbatim}
sw_output=Info+Mcode      %% file name = 'jobname-lib.aux'

(result)
Cat:biological;EN:Adenine;MW:135.13;EXA:1
+
<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH
+--------------------------------------------------

\end{verbatim}
%------------------------------------------------------------------------
\paragraph{(LuaLaTeX example)}
%-----------------------------------------------------------------------
\begin{verbatim}
%-----------------------------------------------------------------------
\begin{mplibcode}
  beginfigm("t:EN","v:Vancomycin")
    sw_output:=Mcode;     %%%% output temp-mc.aux %%%%
  endfigm;
\end{mplibcode}
%-----------------------------------------------------------------------
\verbatiminput{temp-mc.aux}
%-----------------------------------------------------------------------
\end{verbatim}
%-----------------------------------------------------------------------
\begin{verbatim}
(result)
file name = 'temp-mc.aux'

<30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3,
 ?6,@-4,?6,@6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH,
 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,{5,7,16,24,25,33,42}:O,
 32:*/H^60,10:/Me,{12,31}:*/_,27://_,37:/*_,28:/OH,{3,29}:/*OH
\end{verbatim}
%------------------------------------------------------------------------
\newpage
\noindent%
\subsection{Report output}
\paragraph{(Option parameter setting)}
\index{sw\_output}%
\index{Report}%
\begin{verbatim}
  sw_output:=Report;        %% file name = 'jobname-report.aux'
\end{verbatim}
\paragraph{(Command line)}
\begin{verbatim}
  >mpost -s ahlength=7 FILENAME
\end{verbatim}
\paragraph{(Output)}
\begin{verbatim}
===========================================================================
 No[3],Name<Cytosine>,Category<biological>,File<mcf_library.mcf>
---------------------------------------------------------------------------
<30,?6,{4,6}=dl,4:N,3://O,2:NH,5:/NH2
---------------------------------------------------------------------------
 Row[1],Length[37],Commands[7],&Code[59],Warning[0]
---------------------------------------------------------------------------
 =[1]({}=[1]), :[4]({}:[0]), '()[0]
 @[0],&[0],<[1],~[0],^[0],`[0],>[0],|[0],||[0],#[0],##[0]
---------------------------------------------------------------------------
 Width[30.92432],Height[42.36536], Shift x[0],Shift y[-12.99213]
 Bond length[11.33856],Atom size[4.8819]
---------------------------------------------------------------------------
 Atom[9],Bond[9],Ring[1],Hide H[2]
< NO. ><atom(s) >(  x axis   ,   y axis   )<bond><hideH><chg>
 A1     C        (         0 ,          0 )    3     1
 A2     N        (         1 ,          0 )    3        
 A3     C        (         2 ,          0 )    4        
 A4     N        (         2 ,          1 )    3        
 A5     C        (         1 ,          2 )    4        
 A6     C        (         0 ,          1 )    3     1
 A7     O        (         3 ,          0 )    2        
 A8     H        (         1 ,         -1 )    1        
 A9     NH2      (         1 ,          2 )    1        
---------------------------------------------------------------------------
< NO. ><  bond   (sdt)><angle +(  +-  )><length (   pt   )>
 B1     1 ->   2 (  1)     330 (   -30)       1 (      11)
 B2     2 ->   3 (  1)      30 (    30)       1 (      11)
 B3     3 ->   4 (  1)      90 (    90)       1 (      11)
 B4     4 ->   5 (  2)     150 (   150)       1 (      11)
 B5     5 ->   6 (  1)     210 (  -150)       1 (      11)
 B6     6 ->   1 (  2)     270 (   -90)       1 (      11)
 B7     3 ->   7 (  2)     330 (   -30)    0.66 (       7)
 B8     2 ->   8 (  1)     270 (   -90)    0.36 (       4)
 B9     5 ->   9 (  1)      90 (    90)    0.66 (       7)
---------------------------------------------------------------------------
<atom>( atom wt )[ mi wt   ]  < cnt > < sum wt   >[ sum mi wt  ]
 C    (  12.0107)[       12] *    4       48.04279[          48]
 H    (  1.00793)[  1.00783] *    5        5.03967[     5.03914]
 N    (  14.0067)[ 14.00307] *    3        42.0201[     42.0092]
 O    (  15.9994)[ 15.99492] *    1        15.9994[    15.99492]
 Molecular Weight [Mono Isotopic] =       111.1019[   111.04326]
---------------------------------------------------------------------------
 Weight  Calc: 111.1019 / Input: 111.10 / weight gap= 0.00195
 Fomula  Calc: C4H5N3O / Input: 
===========================================================================
\end{verbatim}
\newpage
%------------------------------------------------------------------------
\noindent%
\subsection{MOL file output}
\paragraph{(Option parameter setting)}
\index{sw\_output}%
\index{MOL2k}%
\index{MOL3k}%
\begin{verbatim}
  sw_output:=MOL2k;     % MOL(V2000)
  sw_output:=MOL3k;     % MOL(V3000)
\end{verbatim}
\paragraph{(Command line)}
\begin{verbatim}
  >mpost -s ahlength=5  FILENAME     % MOL(V2000)
  >mpost -s ahlength=6  FILENAME     % MOL(V3000)
\end{verbatim}
\paragraph{(Output)}
\begin{verbatim}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -MCFtoMOL- EN:Caffeine         

 14 15  0  0  0  0  0  0  0  0999 V2000
         0         0         0 C   0  0  0  0
   0.86603      -0.5         0 N   0  0  0  0
   1.73206         0         0 C   0  0  0  0
   1.73206         1         0 C   0  0  0  0
   0.86603       1.5         0 C   0  0  0  0
         0         1         0 N   0  0  0  0
    2.6831  -0.30902         0 N   0  0  0  0
   3.27089       0.5         0 C   0  0  0  0
    2.6831   1.30902         0 N   0  0  0  0
   0.86603  -1.36383         0 C   0  0  0  0
  -0.76894   1.44394         0 C   0  0  0  0
  -0.76894  -0.44394         0 O   0  0  0  0
   0.86603   2.36383         0 O   0  0  0  0
   2.95299    2.1396         0 C   0  0  0  0
  1  2  1  0     0  0
  2  3  1  0     0  0
  3  4  2  0     0  0
  4  5  1  0     0  0
  5  6  1  0     0  0
  6  1  1  0     0  0
  3  7  1  0     0  0
  7  8  2  0     0  0
  8  9  1  0     0  0
  9  4  1  0     0  0
  2 10  1  0     0  0
  6 11  1  0     0  0
  1 12  2  0     0  0
  5 13  2  0     0  0
  9 14  1  0     0  0
M  END
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{verbatim}
%----------------------------------------------------------------------------
\newpage
\subsection{LuaTeX file example}
\index{Fig}%
%############################################################################
\begin{verbatim}
\documentclass{article}
\usepackage{luamplib}%
\usepackage[T1]{fontenc}%
\usepackage{textcomp}%
\mplibcodeinherit{enable}%
\mplibverbatim{enable}%
\mplibnumbersystem{double}%
\everymplib{%
  if unknown Ph1: input mcf2graph; fi
  sw_output:=Fig; max_blength:=4.5mm;
  defaultfont:="uhvr8r"; defaultsize:=8bp; defaultscale:=1;
}%
\begin{document}
\noindent%
%--------------------------------------------------------------------
\begin{mplibcode}
  fsize:=(50mm,50mm);
  beginfigm("NO:1","EN:Limonin","MW:470.51",
    %----------------------------------------
    ": <30,?6,{-3,-4}=?6,                  ",
    ": -5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, ",
    ": {13,15,17,20}:O,{3,12,21}://O,      ",
    ": {4~wf^60,8~zf^60,18^35,18^-35}:/_,  ",
    ": {1^60,5^180,16^60}:/*H,             ",
    ": @14,\*,|,?5,{1,4}=dl,3:O            ")
    %----------------------------------------
  if mc_check(mc)=0: MC(scantokens(mc)) fi 
  endfigm
\end{mplibcode}\\
%--------------------------------------------------------------------
\begin{mplibcode}
  fsize:=(80mm,50mm);
  beginfigm("NO:2","EN:beta-carotene","MW:536.87",
    %------------------------------------------
    ": <30,?6,3=dl,{3,5^35,5^-35}:/_,         ",
    ": @4,\,|,!18,{1,3,5,7,9,11,13,15,17}=dr, ",
    ": {3,7,12,16}:/_,                        ",
    ": |,?6,6=dl,{6,2^35,2^-35}:/_            ")
    %------------------------------------------
  if mc_check(mc)=0: MC(scantokens(mc)) fi 
  endfigm
\end{mplibcode}\\
%--------------------------------------------------------------------
\begin{mplibcode}
  fsize:=(50mm,50mm);
  beginfigm("NO:3","EN:Gibberellin A3","MW:346.37",
    %------------------------------------
    ": <18,?5,3=?7,5=?6[12],           ",
    ": @8,160`1.3,&3,13=dl,6=wf,8=wb,  ",
    ": @5,40~zf`1,O,60,//O^180,&14~zb, ",
    ": 2:/COOH,7://_,13:*/OH,8:/*OH,   ",
    ": 14:*/_,{1^60,4^60}:*/H          ")
    %------------------------------------
  if mc_check(mc)=0: MC(scantokens(mc)) fi 
endfigm;
%--------------------------------------------------------------------
\end{mplibcode}\\
\end{document}
\end{verbatim}
%############################################################################
%------------------------------------------------------------------------
\texttt{\printindex}
%------------------------------------------------------------------------
\end{document}
