diff options
Diffstat (limited to 'info/examples/lgc2/circuit/darrow.m4')
-rw-r--r-- | info/examples/lgc2/circuit/darrow.m4 | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/info/examples/lgc2/circuit/darrow.m4 b/info/examples/lgc2/circuit/darrow.m4 new file mode 100644 index 0000000000..acb4185327 --- /dev/null +++ b/info/examples/lgc2/circuit/darrow.m4 @@ -0,0 +1,127 @@ +divert(-1) + darrow.m4 Macros for double lines and arrows + +* Circuit_macros Version 5.86, copyright (c) 2006 J. D. Aplevich, under * +* the LaTeX Project Public License. The files of this distribution may be * +* redistributed or modified, provided that this copyright notice is * +* included, and provided that modifications are clearly marked to * +* distinguish them from this distribution. There is no warranty * +* whatsoever for these files. * + + Installation directory. You can set HOMELIB_ + to the null string if you use an environment + variable to tell m4 where to search: +ifdef(`HOMELIB_',, + `define(`HOMELIB_',`./circuit/')') +#`define(`HOMELIB_',`C:\Dwight\lib\')') + + Default pic processor: gpic. To make dpic -p + the default, change gpic to pstricks here: +ifdef(`m4picprocessor',,`include(HOMELIB_`'gpic.m4)divert(-1)') + +ifdef(`elen_',,`define(`elen_',linewid*3/2)') + + `dline(linespec,start truncation,end truncation,width, + |-| or -| or |- )' +define(`dline',`m4dl_init(`$1',`$2',`$3',`$4') + define(`m4lj',`ifelse(`$5',,0,`$5',`-|',0,`linethick bp__/2')')dnl + define(`m4rj',`ifelse(`$5',,0,`$5',`|-',0,`linethick bp__/2')')dnl + ifelse(m4postprocessor,pstricks, + `command "\pscustom[linestyle=none,fillcolor=white,fillstyle=solid]{" + {line from rvec_(m4lj, m4dlw/2) to rvec_(m4dll-m4rj, m4dlw/2)} + {line from rvec_(m4dll-m4rj,-m4dlw/2) to rvec_(m4lj,-m4dlw/2)} + command "}%"', + m4postprocessor,postscript, + `{line thick m4dlw/(1bp__) color "1 1 1" \ + from rvec_(m4lj,0) to rvec_(m4dll-m4rj,0)}', + m4postprocessor,gpic,, # No white fill for gpic + `m4_tmpthick = linethick; linethick=0 + shade(1,{line from rvec_(m4lj, m4dlw/2) to rvec_(m4dll-m4rj, m4dlw/2)} + {line from rvec_(m4dll-m4rj,-m4dlw/2) to rvec_(m4lj,-m4dlw/2)}) + linethick = m4_tmpthick') + ifelse(m4lj,0,,`{line from rvec_(0,-m4dlw/2) to rvec_(0,m4dlw/2)}') + {line from rvec_( 0, m4dlw/2) to rvec_(m4dll, m4dlw/2)} + ifelse(m4rj,0,,`{line from rvec_(m4dll,m4dlw/2) to rvec_(m4dll,-m4dlw/2)}') + {line from rvec_(m4dll,-m4dlw/2) to rvec_( 0,-m4dlw/2)} + line invis to rvec_(m4dll,0)') + + Turn left, leaving current location at exit + of corner +define(`dleft',`dnl + {line from rvec_(0,-dlinewid/2) to rvec_(dlinewid,-dlinewid/2) \ + then to rvec_(dlinewid,dlinewid/2)} + line invis to rvec_(dlinewid/2,dlinewid/2) + define(`dir_',up__) manhattan dir_') + + Turn right, leaving current location at exit + of corner +define(`dright',`dnl + {line from rvec_(0, dlinewid/2) to rvec_(dlinewid, dlinewid/2) \ + then to rvec_(dlinewid,-dlinewid/2)} + line invis to rvec_(dlinewid/2,-dlinewid/2) + define(`dir_',dn_) manhattan dir_') + + `darrow(linespec,start truncation,end truncation,width, + arrow wid, arrow ht,<- or <-| or |)' +define(`darrow',`m4dl_init(`$1',`$2',`$3',`$4');{ + ifelse(substr(`$7',0,2),<-, + `move to rvec_(m4dll,0); rp_ang = rp_ang+twopi_/2 dnl + define(`m4m',`substr(`$7',2)')',`define(`m4m',`$7')') + ifelse(m4m,|,, + `{ line from rvec_(0,m4dlw/2) to rvec_(linethick bp__/2,m4dlw/2) } + { line from rvec_(0,-m4dlw/2) to rvec_(linethick bp__/2,-m4dlw/2) }') + define(`m4h',`ifelse(`$5',,m4dlw,(`$5')/2)')dnl + define(`m4v',`ifelse(`$6',,m4dlw*3/2,(`$6'))')dnl + ifelse(m4postprocessor,pstricks, + `command "\pscustom[linestyle=solid,fillcolor=white,fillstyle=solid]{"', + m4postprocessor,gpic,, + `shade(1,') + {line from rvec_(linethick bp__/2,m4dlw/2) to rvec_(m4dll-m4v,m4dlw/2) \ + then to rvec_(m4dll-m4v,m4h) then to rvec_(m4dll,0) \ + then to rvec_(m4dll-m4v,-m4h) then to rvec_(m4dll-m4v,-m4dlw/2)\ + then to rvec_(linethick bp__/2,-m4dlw/2) ifelse(m4m,|, + `then to rvec_(0,-m4dlw/2) then to rvec_(0,m4dlw/2) \ + then to rvec_(linethick bp__/2,m4dlw/2)')} + ifelse(m4postprocessor,pstricks,`command "}%"',m4postprocessor,gpic,,`)') + ifelse(substr(`$7',0,2),<-,`move to rvec_(m4dll,0); rp_ang=rp_ang+twopi_/2') + }; line invis to rvec_(m4dll,0)') + + `dtee([L|R]) Construct tee with tail right, left, + or back along current direction, leaving current + location at tee centre; eg + dline(right_,,t); dtee(R); + { darrow(down_,t) }; darrow(right_,t)' +define(`dtee',`rpoint_(to rvec_(dlinewid,0)); move to last line.c + ifelse(`$1',L,`rp_ang = rp_ang-pi_/2',`$1',R,`rp_ang = rp_ang+pi_/2',`$1') + {line from rvec_(dlinewid/2,-dlinewid/2) to rvec_(dlinewid/2,dlinewid/2)} + {line from rvec_(-dlinewid/2,-dlinewid/2) to rvec_(-dlinewid/2,-dlinewid/2)} + {line from rvec_(-dlinewid/2, dlinewid/2) to rvec_(-dlinewid/2, dlinewid/2)}') + + Close off line end: `dend([at position])' +define(`dend',`ifelse(`$1',,,`move to substr(`$1',eval(index(`$1',at)+2))') + {line from rvec_(0,-dlinewid/2) to rvec_(0,dlinewid/2) chop -linethick/2pt__}') + + `above, below, ljust, rjust but displaced + by dlinewid/2 eg "string" dabove(at position)' +define(`dabove',`above ifelse(`$1',,`at Here',`$1')+(0,dlinewid/2)') +define(`dbelow',`below ifelse(`$1',,`at Here',`$1')-(0,dlinewid/2)') +define(`dljust',`ljust ifelse(`$1',,`at Here',`$1')+(dlinewid/2,0)') +define(`drjust',`rjust ifelse(`$1',,`at Here',`$1')-(dlinewid/2,0)') + + `dline initialization' +define(`deleminit_',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) ') + + `m4dl_init_( linespec,T,T,dlinewid )' +define(`m4dl_init',`deleminit_(`$1') + m4dlw=ifelse(`$4',,dlinewid,`$4') + m4dll=rp_len ifelse(`$3',,,`-m4dlw/2') ifelse(`$2',,, + `-m4dlw/2; move to rvec_(m4dlw/2,0)') ') + + `Standard width of lines' +define(`dlinewid',`0.08*scale') + + Sets global variables. +define(`darrow_init',`dnl + ifdef(`if_rpoint__',,`gen_init') + ') +divert(0)dnl |