From af3187cf86fe62cdec47ece509939d9be3a95016 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 1 Aug 2021 20:35:25 +0000 Subject: mcf2graph (1aug21) git-svn-id: svn://tug.org/texlive/trunk@60133 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 46 +++++++++++++++-------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'Master/texmf-dist/metapost') diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index d248fe014a8..b01dff4de55 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.69 Copyright (c) 2013-2021 Akira Yamaji +% mcf2graph ver 4.70 Copyright (c) 2013-2021 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, @@ -37,7 +37,7 @@ % Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message "* This is mcf2graph ver 4.69 2021.07.18"; +message "* This is mcf2graph ver 4.70 2021.08.01"; %------------------------------------------------------------------------------------------------- newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT, crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL; @@ -207,7 +207,7 @@ def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_t _jump_at,_set_add,_chg_add,_nop,_mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee, _group_s,_group_e,_rest,_charge,_from,_until, si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,wf_r,wb_r,bd_r, - si_,wf_,wb_,zf_,zb_,wv_,bd_); + arc_lb,arc_br,arc_lbr,arc_ltr,si_,wf_,wb_,zf_,zb_,wv_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= sw_numbering,sw_expand,sw_output,sw_ext_all,sw_frame,sw_trimming,sw_arrow_emu,sw_abbreviate, @@ -454,7 +454,9 @@ def set_def_MC= | :=(_com,_mark); || := (_com,_moff); ##:=(_com,_len_e); _:=Me; \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; let = ==op_equ; let : ==op_col; let ^ ==op_hat; let ~ ==op_til; let > ==op_lt; let ` ==op_bq; - def @$ == @.$ enddef; def { == read_number( enddef; let } == ); def '==read_id enddef; +%%%%%%%%% def @$ == @.$ enddef; + def @$ == jump_atom_abs enddef; + def { == read_number( enddef; let } == ); def '==read_id enddef; def < == rot_angle enddef; def @ == jump_atom enddef; def & == cyc_atom enddef; def # == chg_length enddef; def $ == abs_adress enddef; def &$ == &.$ enddef; def / == group_si enddef; def // == group_dm enddef; def */ == group_wf enddef; @@ -474,8 +476,11 @@ tertiarydef a op_lt b = if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; tertiarydef a op_bq b = if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; def rot_angle primary n = (_rot_ang,n) enddef; def cyc_atom primary n = (_cyc,n) enddef; +def jump_atom_abs primary a = + if numeric a:: (_jp_atom,$a) elseif pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi +enddef; def jump_atom primary a = - if numeric a:: (_jp_atom,a) elseif pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi + if numeric a:: (_jp_atom,a) elseif pair a:: <$0,angle(a)~0`length(a),<$0 fi enddef; def chg_length primary n = (_com,_len_s),(_chg_len,n) enddef; def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; @@ -1289,12 +1294,12 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def draw_bond(expr NUM)= begingroup - save ww,ap,am,ang,col,len,Ls,Le,pA,zA,zL; + save ww,aw,ap,am,ang,col,len,Ls,Le,pA,zA,zL; pair pA,Ls,Le; path zA,zL; %----------------------------------------------------------------------------------------------- - nL:=lineB[NUM]; ang:=angB[NUM]; nS:=sB[NUM]; nE:=eB[NUM]; col:=colorB[NUM]; - zL:=posA[nS]--posA[nE]; ww:=wedge_wd; ap:=ang+90; am:=ang-90; + nL:=lineB[NUM]; ang:=angB[NUM]; nS:=sB[NUM]; nE:=eB[NUM]; + col:=colorB[NUM]; zL:=posA[nS]--posA[nE]; ww:=wedge_wd; ap:=ang+90; am:=ang-90; aw:=atom_wd; %----------------------------------------------------------------------------------------------- if (numS[nS]=0)and(numS[nE]=0)or(sw_numbering>=1): Ls:=posA[nS]; Le:=posA[nE]; pA:=(.1,.9); @@ -1323,17 +1328,15 @@ def draw_bond(expr NUM)= draw Le for i=1 upto nB: ..controls(((i-.5)/nB)[sfrt(Le,nA,iif(odd(i),ap,am)),sfrt(Ls,nA,iif(odd(i),ap,am))]) ..(i/nB)[Le,Ls] endfor ..Ls Cp(col); -% ef nL=wf_r: filldraw Ls--sfrt(Le,.35ww,am)--sfrt(Le,.35ww,ap)--cycle wpcs .05ww Cp(col); ef nL=wb_r: filldraw sfrt(Ls,.35ww,am)--Le--sfrt(Ls,.35ww,ap)--cycle wpcs .05ww Cp(col); ef nL=bd_r: draw zA wpcs .65bondgap Cp(col); -% - ef nL=vf: draw zA Cp(col);draw sfrt(Le,bondgap,ang-150)--Le--sfrt(Le,bondgap,ang+150) Cp(col); - ef nL=vb: draw zA Cp(col);draw sfrt(Ls,bondgap,ang-30)--Ls--sfrt(Ls,bondgap,ang+30) Cp(col); - ef nL=si_: erase draw subpath (0.15,0.85) of zA wpcs 0.8bondgap; draw zA Cp(col); - ef nL=dl_: erase draw subpath (0.15,0.85) of sfrt(subpath pA of zA,.5bondgap,ap) wpcs 1.8bondgap; + ef nL=vf: draw zA Cp(col);draw sfrt(Le,bondgap,ang-150)--Le--sfrt(Le,bondgap,ang+150) Cp(col); + ef nL=vb: draw zA Cp(col);draw sfrt(Ls,bondgap,ang-30)--Ls--sfrt(Ls,bondgap,ang+30) Cp(col); + ef nL=si_: erase draw subpath (.15,.85) of zA wpcs 0.8bondgap; draw zA Cp(col); + ef nL=dl_: erase draw subpath (.15,.85) of sfrt(subpath pA of zA,.5bondgap,ap) wpcs 1.8bondgap; draw zA Cp(col); draw sfrt(subpath pA of zA,bondgap,ap) Cp(col); - ef nL=dr_: erase draw subpath (0.15,0.85) of sfrt(subpath pA of zA,.5bondgap,am) wpcs 1.8bondgap; + ef nL=dr_: erase draw subpath (.15,.85) of sfrt(subpath pA of zA,.5bondgap,am) wpcs 1.8bondgap; draw zA Cp(col); draw sfrt(subpath pA of zA,bondgap,am) Cp(col); ef nL=dm_: erase draw subpath(0.15,0.85) of zA wpcs 1.8 bondgap; draw sfrt(zA,bondgap/1.75,ap) Cp(col); draw sfrt(zA,bondgap/1.75,am) Cp(col); @@ -1354,6 +1357,16 @@ def draw_bond(expr NUM)= ef nL=bd_: erase draw subpath(0.15,0.85) of zA wpcs 1.6bondgap; draw zA withpen penrazor rotated ap scaled bondgap Cp(col); ef nL=nb: + %-- bond type for glycan ---------------------------------------------------------------------- + ef nL=arc_lb: draw Ls--Ls-(0,aw)..posA[nE]+(-1.2aw,0)..posA[nE]-(.6aw,0) Cp(col); + ef nL=arc_br: draw posA[nS]+(.6aw,0)..posA[nS]+(1.2aw,0)..Le-(0,aw)--Le Cp(col); + ef nL=arc_lbr: draw posA[nS]+(0,iif(numS[nS]=0,0,-.6aw))--posA[nS]+(0,-.8aw) + ..0.5[posA[nS],posA[nE]]+(0,-1.7aw)..posA[nE]+(0,-.8aw) + --posA[nE]+(0,iif(numS[nE]=0,0,-.6aw)) Cp(col); + ef nL=arc_ltr: draw posA[nS]+(0,iif(numS[nS]=0,0,0.6aw))--posA[nS]+(0,.8aw) + ..0.5[posA[nS],posA[nE]]+(0,1.7aw)..posA[nE]+(0,.8aw) + --posA[nE]+(0,iif(numS[nE]=0,0,.6aw)) Cp(col); + %---------------------------------------------------------------------------------------------- fi endgroup enddef; @@ -1932,6 +1945,9 @@ for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}"); R6:='("R6"); R7:='("{R^7^}"); R8:='("{R^8^}"); R9:='("{R^9^}"); R10:='("R^10^"); R11:='("{R^11^}"); %------------------------------------------------------------------------------------------------- +hexose_hp:='(#1.4,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##); +Pyranose_hp:='(#1.4,-35~wf_r,35~bd_r`1,30~wb_r,130`1.66,O,&1,##); +%------------------------------------------------------------------------------------------------- xCH3:='(/H,/H^60,60,H); xNH:='(N,/H); xNH2:='(N,/H,60,H); xNO2:='(N,//O,60~dm,O); xNO:='(N,!~dm,O); xSO2H:='(S,//O,!,O,!,H); xSO3H:='(S,//O^35,//O^-35,!,O,!,H); xCOO:='(//O,!,O); xOH:='(O,!,H); xCHO:='(//O,!,H); xCOOH:='(//O,!,O,!,H); xCN:='(!~tm,N); xSH:='(S,!,H); -- cgit v1.2.3