diff options
Diffstat (limited to 'graphics/mcf2graph/mcf2graph.mp')
-rw-r--r-- | graphics/mcf2graph/mcf2graph.mp | 218 |
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; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |