File: Loglog.m4

package info (click to toggle)
texlive-base 2024.20250309-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,058,192 kB
  • sloc: perl: 44,903; sh: 5,008; makefile: 4,278; javascript: 3,034; ruby: 2,428; tcl: 2,131; xml: 1,874; python: 1,385; pascal: 1,249; cpp: 549; awk: 512; lisp: 447; ansic: 103; sed: 8
file content (140 lines) | stat: -rw-r--r-- 4,009 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.PS
# Loglog.m4
gen_init
s_init(Loglog)
sinclude(tst.dim)
scale = 1/0.8

define(`rint',`sign(`$1')*int(abs(`$1')+.5)')
S:[
  horiz = 4
  vert = horiz*2/3
  tmax = 10
  tmin = 1
  vmax = 100
  vmin = 0.1
  tic = 0.08
  denv = log(vmax) - log(vmin)
  denh = log(tmax) - log(tmin)

  Origin: Here
  define(`coord',
    `Origin+((log(`$1')-log(tmin))/denh*horiz,(log(`$2')-log(vmin))/denv*vert)')

thinlines_
# Left axes and labels
  psset_(linecolor=gray)
  vm = log(vmin); if vm!=0 then { vm=rint(vm) }
  vM = log(vmax); if vM!=0 then { vM=rint(vM) }
  for i = vm to vM do {
    move to coord(tmin,exp(i))
    line right horiz
    s_box(\sf %g,exp(i)) rjust at last line.start ifgpic(`-(0.05,0)')
    if i < rint(log(vmax)) then {
      for j = 2 to 9 do {
        move to coord(tmin,j*exp(i))
        line right horiz
        if (j==2) || (j==5) then {
          s_box(\sf %g,j*exp(i)) rjust at last line.start ifgpic(`-(0.05,0)') }
        } } }

#Horizontal axis and labels
  tm = log(tmin); if tm!=0 then { tm=rint(tm) }
  tM = log(tmax); if tM!=0 then { tM=rint(tM) }
  for t = tm to tM do {
    move to coord(exp(t),vmin)
    line up vert
    s_box(\sf %g,exp(t)) below at last line.start ifgpic(`-(0,0.05)')
    if t < rint(log(tmax)) then {
      for j = 2 to 9 do { move to coord(j*exp(t),vmin)
        line up vert
        if (j==2) || (j==5) then {
          s_box(\sf %g,j*exp(t)) below at last line.start ifgpic(`-(0,0.05)') }
        } } }
  psset_(linecolor=black)

# arrow from Origin up vert chop 0 chop -.1
  line from Origin up vert
  s_box($y(t)$) at Origin+(-.1,.5*vert) rjust

# arrow from Origin right horiz chop 0 chop -.1
  line from Origin right horiz
  s_box($t$) at Origin+(.5*horiz,-.1) below

thicklines_
  alpha = 2.5
  beta = 3.0
  tm = max(tmin,(vmin/alpha)^(1/beta))
  tM = min(tmax,(vmax/alpha)^(1/beta))
  line from coord(tm,alpha*tm^beta) to coord(tM,alpha*tM^beta)
  f_box(invis fill_(1),`$y(t) = %g\,t^{%g}$',alpha,beta) \
    with .sw at coord(2.1,11)

  alpha = 0.05
  beta = 2.0
  tm = max(tmin,(vmin/alpha)^(1/beta))
  tM = min(tmax,(vmax/alpha)^(1/beta))
  line from coord(tm,alpha*tm^beta) to coord(tM,alpha*tM^beta)
  f_box(invis fill_(1),`$y(t) = %g\,t^{%g}$',alpha,beta) \
    with .se at coord(4.6,1.1)

]

#.PE
#.PS
# ex06.m4
#gen_init

[
F: box invis wid 1.6i ht 1.8i
E: box invis wid F.wid ht F.ht
G: box invis wid 1i ht F.ht

  ell = F.ht-0.6i
  r = 0.3i
  offset = 8bp__
  hatch = 0.1i
  dhs = hatch * sqrt(2)
  qmell = F.ht - ell
  kwid = F.wid-qmell-r

  hatchbox(wid G.e.x-F.w.x ht F.ht,hatch) with .sw at F.sw
  box invis fill_(1) ht ell wid E.e.x-F.w.x with .nw at F.nw

  box wid G.e.x-F.w.x ht F.ht with .sw at F.sw thick linethick*3/2
  foreach_(`B',
   `B`'T: B.se + (-qmell,qmell)
    line invis fill_(1) from B.se to (B.se,B`'T) then to B`'T then to B.se
    line from (B.w,B`'T) to B`'T chop 0 chop -offset
    line from B`'T up ell chop -offset chop 0
    line from B`'T + (-r,0) up ell
    line dashed from B`'T to B.se
    "\large $0$" at B`'T + (-r/2,ell/2)
    "\large $0$" at B`'T + (qmell/2,ell/2)
    "$t$" at (B`'T,B.n) + (-offset/2,offset)
    sprintf("$\overbrace{\phantom{\hbox to %gin{}}}^{\hbox{$k$}}$",kwid/scale) \
      at B.nw + (kwid/2,0) above
    hatchbox(wid kwid ht ell,hatch,,90) with .nw at B.nw
    line from B.ne to B.se thick linethick*3/2
   ',F,E)

  line from (G.w,ET) right G.wid
  line from ET + (0,r) left ET.x-E.w.x
  hatchbox(wid r ht r,hatch,,0) with .se at ET

  "$q$" at F.sw + (-offset,offset/3)
  "$\ell$" at (F.w,FT) + (-offset,offset/3)

  "$n{+}p{+}m$" at G.ne + (0,offset)
  
  foreach_(`B',`"\Large $B$" ht 0.2 with .n at B.s + (0,-offset/2)',F,E,G)

                           # extra left brace to avoid a psfrag problem (bug?)
  sprintf(\
   "$\vphantom{\{}\left.\vrule height %gin depth0pt width0pt\right\}r$",\
     r/2*0.9) at ET + (offset,r/2)

#  Adjust the bounding box without using s_box:
# move from F.nw+(-12bp__,21bp__) to G.se+(20bp__,-15bp__)
  ] with .sw at last [].se+(0.15,0)
.PE