summaryrefslogtreecommitdiff
path: root/graphics/mcf2graph/mcf2graph.mp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/mcf2graph/mcf2graph.mp')
-rw-r--r--graphics/mcf2graph/mcf2graph.mp218
1 files changed, 118 insertions, 100 deletions
diff --git a/graphics/mcf2graph/mcf2graph.mp b/graphics/mcf2graph/mcf2graph.mp
index a34c4a9054..6bf2292510 100644
--- a/graphics/mcf2graph/mcf2graph.mp
+++ b/graphics/mcf2graph/mcf2graph.mp
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.81 Copyright (c) 2013-2022 Akira Yamaji
+% mcf2graph ver 4.82 Copyright (c) 2013-2022 Akira Yamaji
%
% Permission is hereby granted, free of charge, to any person obtaining a copy of this software
% and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -28,17 +28,17 @@
% Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME
% Set output information aux file (for TeX) : mpost -s ahlength=1 FILENAME
% Set output information aux file (for spread sheet) : mpost -s ahlength=2 FILENAME
-% Set output aux data-base file : mpost -s ahlength=3 FILENAME
+% Set output aux library file : mpost -s ahlength=3 FILENAME
% Set output MOL file (V2000) : mpost -s ahlength=5 FILENAME
% Set output MOL file (V3000) : mpost -s ahlength=6 FILENAME
% Set output report : mpost -s ahlength=7 FILENAME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-message "* This is mcf2graph ver 4.81 2022.02.27";
+message "* This is mcf2graph ver 4.82 2022.03.13";
tracingstats:=1; prologues:=3; warningcheck:=0;
%-------------------------------------------------------------------------------------------------
numeric save_num[],parts_com[][],parts_par[][],parts_cnt[],tbl_atom[],tbl_group[][],tbl_atom_wt[],
tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[];
-string save_str[],tbl_atom_str[],str_tbl[],tag[],aux_delimiter,default_data_file,
+string save_str[],tbl_atom_str[],str_tbl[],tag[],aux_delimiter,default_library,
default_temp_file,mpfont,atomfont,tempc,temps,blanks;
pair save_pair[],msize,mposition,fsize,fmargin,dum,save_mposition;
%-------------------------------------------------------------------------------------------------
@@ -79,7 +79,7 @@ vardef fdl(expr n)(expr s)= fsl(n)(decimal(s)) enddef;
def printf expr s= write s to file_output enddef;
def warning(expr s)= message "% "&decimal(fig_num)&fdr(3)(incr warning_cnt)&")"&s; enddef;
%=================================================================================================
-default_data_file:="mcf_data_base.mcf"; default_temp_file:="temp.mcf";
+default_library:="mcf_library.mcf"; default_temp_file:="temp.mcf";
mpfont:="uhvr8r"; atomfont:="draw"; defaultfont:=mpfont;
%--default ahangle=45---------------------------------------------------------------------
if ahangle=0: outputformat:="eps"; % eps format(.mps)
@@ -92,7 +92,7 @@ fi
%--default ahlength=4---------------------------------------------------------------------
if ahlength=1: sw_output:=Info; % output aux file
ef ahlength=2: sw_output:=Info+Table; % output aux file(Table mode)
-ef ahlength=3: sw_output:=Info+Mcode; % output aux data-base
+ef ahlength=3: sw_output:=Info+Mcode; % output aux library
ef ahlength=4: sw_output:=Fig; % *default
ef ahlength=5: sw_output:=MOL2k; % output MOL(V2000)
ef ahlength=6: sw_output:=MOL3k; % output MOL(V3000)
@@ -112,8 +112,8 @@ if sw_output>=Info:
if (ahlength=1)or(ahlength=2):
message "* output information file"; message "* file name="&jobname&"-info.aux";
message "* info delimiter="&aux_delimiter;
- ef ahlength=3: message "* output data-base file";
- message "* data-base file name="&jobname&"-data.aux";
+ ef ahlength=3: message "* output library file";
+ message "* library file name="&jobname&"-lib.aux";
ef ahlength=5: message "* output MOL file(V2000)"; message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
ef ahlength=6: message "* output MOL file(V3000)"; message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
ef ahlength=7: message "* output report file"; message "* file name="&jobname&"-report.txt"; fi
@@ -134,7 +134,7 @@ max_blength:=10mm; blength:=mangle:=0; max_labelsize:=20mm; dottedline_gap:=1.5;
fsize:=(30mm,20mm); fmargin:=(0.4mm,0.4mm); msize:=(1,1); mposition:=(0.5,0.5);
%=== bboxmargin:=0; % 2bp => 0 ====================================================================
ahangle:=45; ahlength:=4; defaultsize:=8; defaultscale:=1; labeloffset:=3; ext_defaultline:=0.5;
-lonepairdiam:=lonepairspace:=circlediam:=circlepen:=bboxmargin:=0;
+lonepairdiam:=lonepairspace:=circlediam:=circlepen:=bboxmargin:=0; mc_length:=100;
%==================================================================================================
parts_emb_start:=1000; % 1001 => 2000 for embedded parts (max 1900)
parts_emi_start:=1900; % 1901 => 2000 for embedded internal parts (max 100)
@@ -190,10 +190,10 @@ def beginfigm(text s)=
warning_cnt,hideH_cnt,filter_s,mc_indent,cntM,cntA,cntB,minX,minY,maxX,maxY,posA,posM,
hideH,lineB,sB,eB,angB,angA,lenB,angX,numS,sumA,bond_num,wdM,htM,chargeA,addA,add_rot,
file_input,file_output,cal_FM,cal_MW,cal_MI,inf_Cat,inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,
- inf_USE,inf_EXA,inf_EXB,inf_MW,mol_pic,sC,sI,sS,sT,sV,color_list,
- unit_cnt,f_end,semic_cnt,f_match,var_n,tag_a,var_a,at_semic;
+ inf_USE,inf_EXA,inf_EXB,inf_MW,mol_pic,sC,sI,sS,sT,sV,color_list,unit_cnt,f_end,semic_cnt,
+ f_match,var_n,tag_a,var_a,at_semic,at_comma;
numeric mc_indent[],hideH[],lineB[],sB[],eB[],angB[],angA[],lenB[],angX[],strA[],sumA[],
- bond_num[],wdM[],htM[],chargeA[],addA[],add_rot[],at_semic[];
+ bond_num[],wdM[],htM[],chargeA[],addA[],add_rot[],at_semic[],at_comma[];
pair posA[],posM[][];
string info_s[],mc[],tag_a[],var_a[],mc,filter_s,file_input,file_output,cal_FM,cal_MW,cal_MI,
inf_Cat,inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW,
@@ -205,7 +205,7 @@ def beginfigm(text s)=
%------------------------------------------------------------------------------------------------
inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_Cat:=inf_EXA:=inf_EXB:="-";
mc:=temps:=cal_MW:=cal_MI:=cal_FM:=filter_s:="";
- file_input:=default_data_file;
+ file_input:=default_library;
%------------------------------------------------------------------------------------------------
parts_num:=parts_usr_start; parts_int:=parts_int_start;
%------------------------------------------------------------------------------------------------
@@ -221,9 +221,9 @@ def beginfigm(text s)=
ef at_colon>=1:
info_cnt:=info_cnt+1; info_s[info_cnt]:=list;
sT:=substring(0,at_colon-1) of list; sV:=substring(at_colon,length(list)) of list;
- if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi
- ef sT="t": temps:=sV;
- ef sT="v": pickup_data_unit(temps,sV,1);
+ if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi
+ ef sT="t": temps:=sV;
+ ef sT="v": pickup_data_unit(temps,sV,1);
ef sT="v+": pickup_data_unit(temps,sV,0);
else: if known scantokens("inf_"&sT): scantokens("inf_"&sT):=sV; fi fi fi
endfor
@@ -298,14 +298,14 @@ def pickup_data_unit(expr t,v,f)=
f_end:=unit_cnt:=semic_cnt:=f_match:=inf_num:=0;
if t="n": var_n:=scantokens(v); fi
forever:
- sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi exitif sS=EOF;
+ sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi exitif f_EOF=1;
if subc(1,sS)="%":
ef (subc(1,sS)="+")and(subc(2,sS)<>"-"):
unit_cnt:=unit_cnt+1; if v="*": f_match:=1; ef t="n": if unit_cnt=var_n: f_match:=1; fi fi
if f_match=1:
forever:
sS:=readfrom file_input;
- if sS=EOF: f_EOF:=1; fi exitif sS=EOF; exitif subc(1,sS)="+";
+ if sS=EOF: f_EOF:=1; fi exitif f_EOF=1; exitif subc(1,sS)="+";
if subc(1,sS)<>"%":
fw_n:=scan_char(" ",sS,1,1); mc_row:=mc_row+1; mc_indent[mc_row]:=fw_n-1;
mc[mc_row]:=substring(fw_n-1,length(sS)) of sS; mc:=mc&mc[mc_row]; fi
@@ -316,8 +316,8 @@ def pickup_data_unit(expr t,v,f)=
f_end:=1;
else:
forever:
- sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi
- exitif sS=EOF; exitif (substring(0,2) of sS)="+-";
+ sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi exitif f_EOF=1;
+ exitif (substring(0,2) of sS)="+-";
endfor
fi
else:
@@ -1146,83 +1146,84 @@ def circ_Oh = (hP,qH)..Z_x..(fW,qH)..Z_y..cycle enddef;
def circ_Oa = (hP,0.35aH)..Z_x..(fW,0.35aH)..(hW,.7aH)..cycle enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def draw_char(expr s,p)=
-aW:=atom_wd*tbl_char_wd[ASCII(s)]*(1-2ratio_atomgap_atom);
-aH:=atom_wd*tbl_char_ht[ASCII(s)]*(1-2ratio_atomgap_atom);
-cpos:=p-(aW/2,atom_wd/2*(1-2ratio_atomgap_atom));
-fP:=bond_pen_wd*ratio_char_bond;
-hP:=fP/2; qP:=fP/4; fW:=aW-hP; hW:=aW/2; fH:=aH-hP; hH:=aH/2; qH:=aH/4;
-%-------------------------------------------------------------------------------------------------
-pickup pencircle scaled fP;
-if s=cC: cdw sbp(.05,.95)circ_O;
-ef s=cH: dwv Z_b--Z_w; dw Z_m--Z_o; dwv Z_e--Z_t;
-ef s=cO: dw circ_O;
-ef s=cN: dwv Z_b--Z_w; dwv Z_e--Z_t; dwvs(1.4)(1.4hP,aH)--(aW-1.4hP,0);
-ef s=cS: cdw sbp(.05,.45)circ_O; cdw sbp(.55,.95)circ_O; dw (fW,.3aH){up}..{up}(hP,.7aH);
-ef s=cF: dwh Z_q--Z_u; dwh (0,.45aH)--(fW,.45aH); dw Z_b--Z_r;
-ef s=cP: dwv Z_b--Z_w; dw Z_r--(.65aW,fH){right}..(fW,.7aH)..{left}(.65aW,.44aH)..(hP,.44aH);
-ef s="I": dwv Z_x--Z_s; dwh (hW-fP,hP)--(hW+fP,hP); dwh (hW-fP,fH)--(hW+fP,fH);
-ef s="l": dwv Z_g--Z_f; dwh Z_s--Z_r; dwh Z_x--Z_z;
-ef s="2": cdw (hP,1.3hP)..(.4fW,.35fH)..(fW,.65aH)..Z_s..(hP,.65aH); dwh Z_d--Z_a;
-ef s="3": cdw sbp(0,.75)circ_Oh; cdw sbp(.25,.98)circ_Oh shifted (0,hH-hP); dwh (.3aW,hH)--Z_y;
-ef s="4": dwh Z_j--Z_k; dwv Z_l--(0.75aW,aH)--(1.2hP,qH+hP); dwv (.75aW+qP,aH)--(1.7hP,qH+hP);
-ef s="A": dwvs(1.14)Z_b--Z_f--Z_e; dw .33[Z_b,Z_f]--.33[Z_e,Z_f];
-ef s="B": dw Z_r--Z_s{right}..(.9fH,.75aH)..{left}Z_y--Z_m--Z_y{right}..(.9fH,qH)..{left}Z_x--Z_c;
- dwv Z_b--Z_w;
-ef s="D": dw Z_r--Z_s..Z_o..Z_x--Z_c; dwv Z_b--Z_w;
-ef s="E": pickup pensquare scaled fP; dw Z_z--Z_c--Z_r--Z_n; dw Z_m--Z_o;
-ef s="G": cdw sbp(.06,.97)circ_O; dwh bot Z_y-- bot Z_v;
-ef s="J": cdw Z_m..(hP,.4aH){down}..{right}Z_x{right}..{up}(fW,.4aH)..Z_t;
-ef s="K": cdw Z_b--Z_w; cdw .35[.45[Z_b,Z_w],Z_u]--Z_e; cdw .35[Z_b,Z_w]--Z_u;
-ef s="L": dwh Z_d--Z_a; dwv Z_b--Z_w;
-ef s="M": dwv Z_b--Z_w; dwvs(1.14)Z_w--Z_x--Z_t; dwv Z_t--Z_e;
-ef s="Q": dw circ_O; dw (.6aW,.4aH)--Z_e;
-ef s="R": dwv Z_b--Z_w; dw Z_r--(.65aW,fH){right}..(fW,.7aH)..{left}(.65aW,.44aH)..(hP,.44aH);
- cdw Z_e{up}..{left}(hW,.44aH);
-ef s="T": dwh Z_q--Z_u; dwv .5[Z_q,Z_u]--Z_g;
-ef s="U": cdw Z_w..Z_m{down}..{right}Z_x{right}..{up}Z_o..Z_t;
-ef s="V": dwvs(1.2)Z_w--Z_g--Z_t;
-ef s="W": dwvs(1.08)Z_w--(aW/4,0)--Z_f--Z_l--Z_t;
-ef s="X": dwvs(1.4)Z_w..Z_e; dwvs(1.4) Z_b..Z_t;
-ef s="Y": dwvs(1.2)Z_w--Z_y--Z_t; dwv Z_y--Z_g;
-ef s="Z": dwh Z_q--Z_u; dwvs(1.4)(1.4hP,fP)--(aW-1.4hP,aH-fP); dwh Z_a--Z_d;
-ef s="a": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_e--Z_t;
-ef s="b": dw Z_x..Z_o..Z_p..Z_m..cycle; dwv Z_b--(hP,1.3aH)
-ef s="c": cdw sbp(.06,.94)Z_o..Z_s..Z_m..Z_x..cycle;
-ef s="d": dw Z_x..Z_o..Z_p..Z_m..cycle; dwv Z_e--(fW,1.3aH);
-ef s="e": cdw sbp(0,.92)Z_o..Z_s..Z_m..Z_x..cycle; dw Z_o--Z_m;
-ef s="f": cdw (.4fW,0)--(.4fW,.75aH){up}..(.75aW,fH)..{down}(fW,.8aH); dwh Z_h--Z_v;
-ef s="g": dw circ_Oa; dw sbp(0,.5)circ_Oh shifted (0,-.5fH); cdw (fW,.7aH)--(fW,-qH);
-ef s="h": cdw Z_b..(hP,.3aH){up}..(hW,.7fH)..{down}(fW,.3aH)..Z_e; dwv (hP,.3aH)--Z_w;
-ef s="i": dwv Z_g--(hW,.7aH); ppcs 1.4fP; dw Z_s;
-ef s="j": cdw (fW,.7aH)--Z_z..(aW/4,-.66fP)..Z_c; ppcs 1.4fP; dw Z_n;
-ef s="k": dwv Z_b--(hP,1.3fH); cdw .5[Z_b,Z_w]--Z_e; cdw .5[Z_b,Z_w]--Z_u;
-ef s="m": cdw Z_b..(hP,.3aH){up}..(.28aW,fH)..{down}(hW,.3aH)..Z_g;
- cdw (hW,.6aH){up}..(.7aW,fH)..{down}(fW,.6aH)..Z_e; dwv (hP,.3aH)--Z_w;
-ef s="n": cdw Z_b{up}..(hW,.8fH)..{down}Z_o..Z_e; dwv Z_b--(hP,.8aH);
-ef s="o": dw Z_x..Z_o..Z_s..Z_m..cycle;
-ef s="p": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_w--(hP,-.3aH);
-ef s="q": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_t--(fW,-.3aH);
-ef s="r": cdw (sbp(.33,.72)Z_x..Z_o..Z_s..Z_m..cycle) shifted(0,-hP); dwv Z_b--Z_w;
-ef s="s": cdw sbp(.05,.45)circ_O; cdw sbp(.55,.95)circ_O; dw (fW,.3aH){up}..{up}(hP,.7aH);
-ef s="t": dwv Z_g--Z_f; dwh (0,.66aH)--(aW,.66aH);
-ef s="u": cdw Z_w..(hP,.55aH){down}..Z_x..(fW,.55aH){up}..Z_t; dwv Z_t--Z_e;
-ef s="v": dwv Z_w--Z_g--Z_t;
-ef s="w": dwv Z_w--(aW/4,0)--Z_f--Z_l--Z_t;
-ef s="x": dwvs(1.4)Z_w--Z_e; dwvs(1.4) Z_t--Z_b;
-ef s="y": dwvs(1.4)(Z_w--Z_y) shifted (0,-.3aH); dwvs(1.4)(Z_t--Z_b) shifted (0,-.3aH);
-ef s="z": dwh Z_q--Z_u; dwvs(1.4)(1.4hP,fP)--(aW-1.4hP,aH-fP); dwh Z_a--Z_d;
-ef s="0": dw Z_m...Z_s...Z_o...Z_x...cycle;
-ef s="1": dwv Z_g--(hW,aH-.3hP)--(hW-fP,aH-fP)--(hW-fP,aH-1.5fP);
-ef s="5": dwh Z_q--Z_u; dwv Z_r--(hP,.55fH);
- cdw (qP,.18aH)..(.65aW,1.3hP)..(fW,.4aH)..(hW,.63aH)..(.7hP,.56aH);
-ef s="6": dw Z_x..(fW,.5fW)..Z_i..(hP,.5fW)..cycle; cdw (.8fP,hH)--Z_f;
-ef s="7": dwh (0,.fH)--Z_u; dwvs(1.2)(aW-1.2hP,aH-fP)--(.4aW,0);
-ef s="8": dw circ_Oh; dw (hP,.75aH)...Z_s...(fW,.75aH)...Z_y...cycle;
-ef s="9": dw (Z_x..(fW,.5fW)..Z_i..(hP,.5fW)..cycle) shifted (0,.32aH); cdw (fW-.45fP,hH)--Z_g;
-ef s="-": dwh Z_m--Z_o;
-ef s="+": dwv Z_x--Z_s; dwh Z_m--Z_o;
-else:
-fi
+ aW:=atom_wd*tbl_char_wd[ASCII(s)]*(1-2ratio_atomgap_atom);
+ aH:=atom_wd*tbl_char_ht[ASCII(s)]*(1-2ratio_atomgap_atom);
+ cpos:=p-(aW/2,atom_wd/2*(1-2ratio_atomgap_atom));
+ fP:=bond_pen_wd*ratio_char_bond;
+ hP:=fP/2; qP:=fP/4; fW:=aW-hP; hW:=aW/2; fH:=aH-hP; hH:=aH/2; qH:=aH/4;
+ %-----------------------------------------------------------------------------------------------
+ pickup pencircle scaled fP;
+ if s=cC: cdw sbp(.05,.95)circ_O;
+ ef s=cH: dwv Z_b--Z_w; dw Z_m--Z_o; dwv Z_e--Z_t;
+ ef s=cO: dw circ_O;
+ ef s=cN: dwv Z_b--Z_w; dwv Z_e--Z_t; dwvs(1.4)(1.4hP,aH)--(aW-1.4hP,0);
+ ef s=cS: cdw sbp(.05,.45)circ_O; cdw sbp(.55,.95)circ_O; dw (fW,.3aH){up}..{up}(hP,.7aH);
+ ef s=cF: dwh Z_q--Z_u; dwh (0,.45aH)--(fW,.45aH); dw Z_b--Z_r;
+ ef s=cP: dwv Z_b--Z_w; dw Z_r--(.65aW,fH){right}..(fW,.7aH)..{left}(.65aW,.44aH)..(hP,.44aH);
+ ef s="I": dwv Z_x--Z_s; dwh (hW-fP,hP)--(hW+fP,hP); dwh (hW-fP,fH)--(hW+fP,fH);
+ ef s="l": dwv Z_g--Z_f; dwh Z_s--Z_r; dwh Z_x--Z_z;
+ ef s="2": cdw (hP,1.3hP)..(.4fW,.35fH)..(fW,.65aH)..Z_s..(hP,.65aH); dwh Z_d--Z_a;
+ ef s="3": cdw sbp(0,.75)circ_Oh; cdw sbp(.25,.98)circ_Oh shifted (0,hH-hP); dwh (.3aW,hH)--Z_y;
+ ef s="4": dwh Z_j--Z_k; dwv Z_l--(0.75aW,aH)--(1.2hP,qH+hP); dwv (.75aW+qP,aH)--(1.7hP,qH+hP);
+ ef s="-": dwh Z_m--Z_o;
+ ef s="+": dwv Z_x--Z_s; dwh Z_m--Z_o;
+ ef s="A": dwvs(1.14)Z_b--Z_f--Z_e; dw .33[Z_b,Z_f]--.33[Z_e,Z_f];
+ ef s="B": dw Z_r--Z_s{right}..(.9fH,.75aH)..{left}Z_y--Z_m--Z_y{right}..
+ (.9fH,qH)..{left}Z_x--Z_c;
+ dwv Z_b--Z_w;
+ ef s="D": dw Z_r--Z_s..Z_o..Z_x--Z_c; dwv Z_b--Z_w;
+ ef s="E": pickup pensquare scaled fP; dw Z_z--Z_c--Z_r--Z_n; dw Z_m--Z_o;
+ ef s="G": cdw sbp(.06,.97)circ_O; dwh bot Z_y-- bot Z_v;
+ ef s="J": cdw Z_m..(hP,.4aH){down}..{right}Z_x{right}..{up}(fW,.4aH)..Z_t;
+ ef s="K": cdw Z_b--Z_w; cdw .35[.45[Z_b,Z_w],Z_u]--Z_e; cdw .35[Z_b,Z_w]--Z_u;
+ ef s="L": dwh Z_d--Z_a; dwv Z_b--Z_w;
+ ef s="M": dwv Z_b--Z_w; dwvs(1.14)Z_w--Z_x--Z_t; dwv Z_t--Z_e;
+ ef s="Q": dw circ_O; dw (.6aW,.4aH)--Z_e;
+ ef s="R": dwv Z_b--Z_w; dw Z_r--(.65aW,fH){right}..(fW,.7aH)..{left}(.65aW,.44aH)..(hP,.44aH);
+ cdw Z_e{up}..{left}(hW,.44aH);
+ ef s="T": dwh Z_q--Z_u; dwv .5[Z_q,Z_u]--Z_g;
+ ef s="U": cdw Z_w..Z_m{down}..{right}Z_x{right}..{up}Z_o..Z_t;
+ ef s="V": dwvs(1.2)Z_w--Z_g--Z_t;
+ ef s="W": dwvs(1.08)Z_w--(aW/4,0)--Z_f--Z_l--Z_t;
+ ef s="X": dwvs(1.4)Z_w..Z_e; dwvs(1.4) Z_b..Z_t;
+ ef s="Y": dwvs(1.2)Z_w--Z_y--Z_t; dwv Z_y--Z_g;
+ ef s="Z": dwh Z_q--Z_u; dwvs(1.4)(1.4hP,fP)--(aW-1.4hP,aH-fP); dwh Z_a--Z_d;
+ ef s="a": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_e--Z_t;
+ ef s="b": dw Z_x..Z_o..Z_p..Z_m..cycle; dwv Z_b--(hP,1.3aH)
+ ef s="c": cdw sbp(.06,.94)Z_o..Z_s..Z_m..Z_x..cycle;
+ ef s="d": dw Z_x..Z_o..Z_p..Z_m..cycle; dwv Z_e--(fW,1.3aH);
+ ef s="e": cdw sbp(0,.92)Z_o..Z_s..Z_m..Z_x..cycle; dw Z_o--Z_m;
+ ef s="f": cdw (.4fW,0)--(.4fW,.75aH){up}..(.75aW,fH)..{down}(fW,.8aH); dwh Z_h--Z_v;
+ ef s="g": dw circ_Oa; dw sbp(0,.5)circ_Oh shifted (0,-.5fH); cdw (fW,.7aH)--(fW,-qH);
+ ef s="h": cdw Z_b..(hP,.3aH){up}..(hW,.7fH)..{down}(fW,.3aH)..Z_e; dwv (hP,.3aH)--Z_w;
+ ef s="i": dwv Z_g--(hW,.7aH); ppcs 1.4fP; dw Z_s;
+ ef s="j": cdw (fW,.7aH)--Z_z..(aW/4,-.66fP)..Z_c; ppcs 1.4fP; dw Z_n;
+ ef s="k": dwv Z_b--(hP,1.3fH); cdw .5[Z_b,Z_w]--Z_e; cdw .5[Z_b,Z_w]--Z_u;
+ ef s="m": cdw Z_b..(hP,.3aH){up}..(.28aW,fH)..{down}(hW,.3aH)..Z_g;
+ cdw (hW,.6aH){up}..(.7aW,fH)..{down}(fW,.6aH)..Z_e; dwv (hP,.3aH)--Z_w;
+ ef s="n": cdw Z_b{up}..(hW,.8fH)..{down}Z_o..Z_e; dwv Z_b--(hP,.8aH);
+ ef s="o": dw Z_x..Z_o..Z_s..Z_m..cycle;
+ ef s="p": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_w--(hP,-.3aH);
+ ef s="q": dw Z_x..Z_o..Z_s..Z_m..cycle; dwv Z_t--(fW,-.3aH);
+ ef s="r": cdw (sbp(.33,.72)Z_x..Z_o..Z_s..Z_m..cycle) shifted(0,-hP); dwv Z_b--Z_w;
+ ef s="s": cdw sbp(.05,.45)circ_O; cdw sbp(.55,.95)circ_O; dw (fW,.3aH){up}..{up}(hP,.7aH);
+ ef s="t": dwv Z_g--Z_f; dwh (0,.66aH)--(aW,.66aH);
+ ef s="u": cdw Z_w..(hP,.55aH){down}..Z_x..(fW,.55aH){up}..Z_t; dwv Z_t--Z_e;
+ ef s="v": dwv Z_w--Z_g--Z_t;
+ ef s="w": dwv Z_w--(aW/4,0)--Z_f--Z_l--Z_t;
+ ef s="x": dwvs(1.4)Z_w--Z_e; dwvs(1.4) Z_t--Z_b;
+ ef s="y": dwvs(1.4)(Z_w--Z_y) shifted (0,-.3aH); dwvs(1.4)(Z_t--Z_b) shifted (0,-.3aH);
+ ef s="z": dwh Z_q--Z_u; dwvs(1.4)(1.4hP,fP)--(aW-1.4hP,aH-fP); dwh Z_a--Z_d;
+ ef s="0": dw Z_m...Z_s...Z_o...Z_x...cycle;
+ ef s="1": dwv Z_g--(hW,aH-.3hP)--(hW-fP,aH-fP)--(hW-fP,aH-1.5fP);
+ ef s="5": dwh Z_q--Z_u; dwv Z_r--(hP,.55fH);
+ cdw (qP,.18aH)..(.65aW,1.3hP)..(fW,.4aH)..(hW,.63aH)..(.7hP,.56aH);
+ ef s="6": dw Z_x..(fW,.5fW)..Z_i..(hP,.5fW)..cycle; cdw (.8fP,hH)--Z_f;
+ ef s="7": dwh (0,.fH)--Z_u; dwvs(1.2)(aW-1.2hP,aH-fP)--(.4aW,0);
+ ef s="8": dw circ_Oh; dw (hP,.75aH)...Z_s...(fW,.75aH)...Z_y...cycle;
+ ef s="9": dw (Z_x..(fW,.5fW)..Z_i..(hP,.5fW)..cycle) shifted (0,.32aH); cdw (fW-.45fP,hH)--Z_g;
+ else:
+ fi
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def warning_bond(expr a)=
@@ -1300,7 +1301,7 @@ enddef;
%=================================================================================================
def proc_info_out(expr f)=
message "["&decimal(fig_num)&"]:"&inf_EN;
- if (f=1)or(f=2): file_output:=jobname&"-info.aux"; ef f=3: file_output:=jobname&"-data.aux"; fi
+ if (f=1)or(f=2): file_output:=jobname&"-info.aux"; ef f=3: file_output:=jobname&"-lib.aux"; fi
if (fig_num=1)and(f=2):
printf tag[1] for i=2 upto aux_max: exitif tag[i]=""; &aux_delimiter&tag[i] endfor ; fi
%--------------------------------------------------------------------------------------
@@ -1426,7 +1427,19 @@ enddef;
def proc_mc_out(expr f)=
message "["&decimal(fig_num)&"]:"&inf_EN;
file_output:="temp-mc.aux";
- for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor
+ if mc_length<100:
+ nN:=split_comma(mc); nL:=length(mc); nA:=0;
+ forever:
+ for i=nN downto 1:
+ if at_comma[i]<=nA+mc_length:
+ printf substring(nA,at_comma[i]) of mc; nA:=at_comma[i]; exitif true;
+ fi
+ endfor
+ if nL-nA<=mc_length: printf substring(nA,nL) of mc; exitif true; fi
+ endfor
+ else:
+ for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor
+ fi
printf EOF;
enddef;
%=================================================================================================
@@ -1634,7 +1647,7 @@ def query(text s)=
string line_s[][],sort_s[],sort_all[],key_s[],filter_tag[],filter_var[],info_s[];
numeric row_cnt[],order[],order_tbl[],filter_sign[],filter_p[],at_semic[];
unit_row:=f_mcf:=mc_row:=info_cnt:=key_cnt:=filter_cnt:=0; unit_cnt:=1;
- file_input:=default_data_file; file_output:=default_temp_file;
+ file_input:=default_library; file_output:=default_temp_file;
%-----------------------------------------------------------------------------------------------
for list=s:
at_colon:=scan_char(":",list,0,1); at_equal:=scan_char("=",list,0,1);
@@ -1747,4 +1760,9 @@ vardef split_semic(expr s)=
nN:=at_semic[0]:=0;
for i=1 upto length(s): if subc(i,s)=";": nN:=nN+1; at_semic[nN]:=i; fi endfor nN
enddef;
+%-------------------------------------------------------------------------------------------------
+vardef split_comma(expr s)=
+ nN:=at_comma[0]:=0;
+ for i=1 upto length(s): if subc(i,s)=",": nN:=nN+1; at_comma[nN]:=i; fi endfor nN
+enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%