[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico] [parte]


Capitolo 4.   Alml: estensioni PXAM

A partire dall'estate del 2005, Alml permette di incorporare codice relativo a svariati tipi di minilinguaggi grafici.

4.1   Immagini incorporate macro *roff: Pic, Tbl, Eqn

È possibile incorporare codice relativo ai pacchetti di macro *roff denominati Pic, Tbl, Eqn attraverso gli elementi picimg, tblimg, eqnimg rispettivamente; l'utilizzo è abbastanza analogo a quelli di altri elementi simili.

Nei listati 4.1, 4.2, 4.3 vengono presentati tre esempi di incorporazione nell'ambito degli elementi picimg, tblimg, eqnimg rispettivamente; corrispondentemente, le figure 4.4, 4.5, 4.6 illustrano l'aspetto finale delle immagini in relazione al codice presentato.

Listato 4.1. Codice incorporato: macro *roff (Pic).

...

<object>
<imgblock>
<picimg> 
<![CDATA[
ellipse "document";
arrow;
box width 0.6 "\fIpic\/\fP(1)"
arrow;
box width 1.1 "\fIgtbl\/\fP(1) or \fIgeqn\/\fP(1)" "(optional)" dashed;
arrow;
box width 0.6 "\fIgtroff\/\fP(1)";
arrow;
ellipse "PostScript"
]]>
</picimg>
</imgblock>
</object>

...

Listato 4.2. Codice incorporato: macro *roff (Tbl).

...

<object>
<imgblock>
<tblimg> 
<![CDATA[
tab(:);
c s s
c | c | c
l | l | n.
Major New York Bridges
=
Bridge:Designer:Length
_
Brooklyn:J. A. Roebling:1595
Manhattan:G. Lindenthal:1470
Williamsburg:L. L. Buck:1600
_
Queensborough:Palmer &:1182
\^:  Hornbostel:\^
_
Triborough:O. H. Ammann:1380
\^:\^:383
_
Bronx Whitestone:O. H. Ammann:2300
Throgs Neck:O. H. Ammann:1800
_
George Washington:O. H. Ammann:3500
_
]]>
</tblimg>
</imgblock>
</object>

...

Listato 4.3. Codice incorporato: macro *roff (Eqn).

...

<object>
<imgblock>
<eqnimg>
<![CDATA[
G(z)
~=~ e sup { ln ~ G(z) }
~=~ exp left ( sum from k>=1 { S sub k z sup k } over k right )
~=~ prod from k>=1 e sup { S sub k z sup k /k }
]]>
</eqnimg>
</imgblock>
</object>

...

Figura 4.4. Codice incorporato: Pic.

Codice incorporato: Pic.

Figura 4.5. Codice incorporato: Tbl.

Codice incorporato: Tbl.

Figura 4.6. Codice incorporato: Eqn.

Codice incorporato: Eqn.

4.1.1   Alcune osservazioni aggiuntive

Si notino le seguenti particolarità:

Listato 4.7. Codice incorporato: Eqn dentro Pic.

...

<object>
<imgblock>
<picimg> 
<![CDATA[
arrow
box "$space 0 {H( omega )} over {1 - H( omega )}$"
arrow
]]>
</picimg>
</imgblock>
</object>

...

Figura 4.8. Codice incorporato: Eqn dentro Pic.

Codice incorporato: Eqn dentro Pic.

4.2   Immagini incorporate GNU Plotutils: Graph, Plot, Pic2plot, Spline, Ode

È possibile incorporare codice relativo ai programmi del pacchetto GNU Plotutils,(1) Graph, Plot, Pic2plot, Spline, Ode attraverso gli elementi pugraphimg, puplotimg, pupic2plotimg, pusplineimg e puodeimg rispettivamente; l'utilizzo è abbastanza analogo a quelli di altri elementi simili.

Nei listati 4.9, 4.10, 4.11, 4.12, 4.13 vengono presentati cinque esempi di incorporazione nell'ambito degli elementi pugraphimg, puplotimg, pupic2plotimg, pusplineimg, puodeimg rispettivamente; corrispondentemente, le figure 4.14, 4.15, 4.16, 4.17, 4.18 illustrano l'aspetto finale delle immagini in relazione al codice presentato.

Listato 4.9. Codice incorporato: GNU Plotutils (Graph).

...

<object>
<imgblock>
<pugraphimg> 
<![CDATA[
#-h .3 -w .6
0.0   0.0
1.0   0.2
2.0   0.0
3.0   0.4
4.0   0.2
5.0   0.6
6.0   0.2
7.0   0.0
8.0   0.4
9.0   0.2
10.0  0.6
]]>
</pugraphimg>
</imgblock>
</object>

...

Listato 4.10. Codice incorporato: GNU Plotutils (Plot).

...

<object>
<imgblock>
<puplotimg>
<![CDATA[
#PLOT 2
o
W 0.003
m 0 0.3
t rettangoli:
M -0.1 -0.1
H 0 0 0.01 0.08
M 0.05 0
H 0 0 0.02 0.04
M 0.05 0
H 0 0 0.04 0.02
M 0.05 0
H 0 0 0.08 0.01
#
M -0.215 -0.1
t segmenti:
M -0.1 -0.1
I 0 0 0.01 0.08
M 0.05 -0.08
I 0 0 0.02 0.04
M 0.05 -0.04
I 0 0 0.04 0.02
M 0.05 -0.02
I 0 0 0.08 0.01
#
M -0.29 -0.05
t ellissi:
M -0.05 -0.05
= 0 0 0.02 0.04 0
M 0.08 0
= 0 0 0.02 0.04 20
M 0.08 0
= 0 0 0.02 0.04 40
M 0.08 0
= 0 0 0.02 0.04 60
#
M -0.25 -0.07
t coniche di b\'ezier:
M -0.15 -0.07
r 0 0 0.05 0.03 0 0.06
M 0.08 -0.06
r 0 0 0.06 0.04 0 0.06
M 0.08 -0.06
r 0 0 0.07 0.05 0 0.06
M 0.08 -0.06
r 0 0 0.08 0.06 0 0.06
x
]]>
</puplotimg>
</imgblock>
</object>

...

Listato 4.11. Codice incorporato: GNU Plotutils (Pic2plot).

...

<object>
<imgblock>
<pupic2plotimg> 
<![CDATA[
.PS
box "START"; arrow; circle dashed filled; arrow
circle diam 2 thickness 3 "This is a" "big, thick" "circle" dashed; up
arrow from top of last circle; ellipse "loopback" dashed
arrow dotted from left of last ellipse to top of last box
arc cw radius 1/2 from top of last ellipse; arrow
box "END"
.PE
]]>
</pupic2plotimg>
</imgblock>
</object>

...

Listato 4.12. Codice incorporato: GNU Plotutils (Spline).

...

<object>
<imgblock>
<pusplineimg>
<![CDATA[
#-d 2 -a -s -p -T -14 -n 500
#
0 0 1 0 1 1 0 0
]]>
</pusplineimg>
</imgblock>
</object>

...

Listato 4.13. Codice incorporato: GNU Plotutils (Ode).

...

<object>
<imgblock>
<puodeimg> 
<![CDATA[
#
#-C -x 0 5 -y 0 5
x' = (a - b*y) * x
y' = (c*x - d) * y
a = 1; b = 1; c = 1; d = 1;
print x, y
x = 1; y = 2
step 0, 10
x = 1; y = 3
step 0, 10
x = 1; y = 4
step 0, 10
x = 1; y = 5
step 0, 10
]]>
</puodeimg>
</imgblock>
</object>

...

Figura 4.14. Codice incorporato: Graph.

Codice incorporato: Graph.

Figura 4.15. Codice incorporato: Plot.

Codice incorporato: Plot.

Figura 4.16. Codice incorporato: Pic2plot.

Codice incorporato: Pic2plot.

Figura 4.17. Codice incorporato: Spline.

Codice incorporato: Spline.

Figura 4.18. Codice incorporato: Ode.

Codice incorporato: Ode.

4.2.1   Alcune osservazioni aggiuntive

Si notino le seguenti particolarità:

4.3   Immagini incorporate: codice generico

È possibile incorporare codice grafico generico, nel senso di una qualunque riga di comando associata a codice in input, a patto che tale riga di comando sia opportunamente formattata e il comando emetta codice EPS; si utilizza a tal fine l'elemento genericimg.

Nei listati 4.20 e 4.21 vengono presentati due esempi di incorporazione nell'ambito dell'elemento genericimg; corrispondentemente, le figure 4.22 e 4.23 illustrano l'aspetto finale delle immagini in relazione al codice presentato.

Listato 4.20. Codice incorporato generico.

...

<object>
<imgblock>
<genericimg> 
<![CDATA[
#convert -resize 3000% -negate -charcoal 0 -swirl 60 PPM:INPUT EPS:OUTPUT
P3
# feep.ppm
4 4
15
 0  0  0    0  0  0    0  0  0   15  0 15
 0  0  0    0 15  7    0  0  0    0  0  0
 0  0  0    0  0  0    0 15  7    0  0  0
15  0 15    0  0  0    0  0  0    0  0  0
]]>
</genericimg>
</imgblock>
</object>

...

Listato 4.21. Codice incorporato generico: un caso limite.

...

<object>
<imgblock>
<genericimg> 
<![CDATA[
#echo "set terminal table; set samples 1000; plot [-20:30] 0.1*x**2*cos(0.3*x), \
  \20*sin(x)" | gnuplot | graph -I g -T ps > OUTPUT # # Questo è un caso limite: in pratica non c'è input per il comando # presente nella prima riga: fa tutto lui! # ]]> </genericimg> </imgblock> </object> ...

Figura 4.22. Codice incorporato generico.

Codice incorporato generico.

Figura 4.23. Codice incorporato generico: un caso limite.

Codice incorporato generico: un caso limite.

4.3.1   Alcune osservazioni aggiuntive

Si notino le seguenti particolarità:

4.4   Diagrammi scacchistici

È possibile incorporare codice per tracciare diagrammi e annotazioni scacchistiche di vario genere attraverso gli elementi fenimg, fenitimg, sanimg, sanitimg e skakimg.

L'elemento fenimg permette di definire una posizione sulla scacchiera mediante la notazione Forsyth-Edwards (FEN ovvero Forsyth-Edwards Notation). La notazione FEN permette di indicare i pezzi mediante singole lettere che in pratica costituiscono l'iniziale del nome del pezzo stesso nella lingua inglese (K significa «King» ossia il re bianco, k significa «king» ossia il re nero, ecc.); volendo utilizzare le iniziali dei nomi nella lingua italiana è necessario utilizzare l'elemento fenitimg.

Nel listato 4.24 vengono presentati due esempi di incorporazione nell'ambito degli elementi fenimg e fenitimg rispettivamente; corrispondentemente, la figura 4.25 illustra l'aspetto finale delle immagini in relazione al codice presentato.

Listato 4.24. Codice incorporato FEN.

...

<object>
<imgblock>
<fenimg>
<![CDATA[
8/8/4R1p1/2k3p1/1p4P1/1P1b1P2/3K1n2/8 b - - 0 43
]]>
</fenimg>
<fenitimg>
<![CDATA[
8/8/4T1p1/2r3p1/1p4P1/1P1n1P2/3R1c2/8 n - - 0 43
]]>
</fenitimg>
</imgblock>
</object>

...

Figura 4.25. Codice incorporato FEN: nel primo diagramma i pezzi sono stati indicati secondo la denominazione in lingua inglese, nel secondo diagramma secondo la denominazione italiana.

Codice incorporato FEN in inglese Codice incorporato FEN in italiano

L'elemento sanimg permette di definire una posizione sulla scacchiera come risultato di una serie di mosse a partire dalla posizione iniziale, espresse mediante la notazione algebrica standard (SAN ovvero Standard Algebraic Notation). Nella notazione SAN i pezzi vengono indicati mediante singole lettere che in pratica costituiscono l'iniziale del nome del pezzo stesso nella lingua inglese; volendo utilizzare le iniziali dei nomi nella lingua italiana è necessario utilizzare l'elemento sanitimg.

Nel listato 4.26 vengono presentati due esempi di incorporazione nell'ambito degli elementi sanimg e sanitimg rispettivamente; corrispondentemente, la figura 4.27 illustra l'aspetto finale delle immagini in relazione al codice presentato.

Listato 4.26. Codice incorporato SAN: partita svoltasi a Belgrado, il 4 novembre 1992, fra Bobby Fischer e Boris Spassky.

...

<object>
<imgblock>
<sanimg>
<![CDATA[
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5
7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5
axb5 13. Nc3 Bb7 14. Bg5 b4 15.  Nb1 h6 16. Bh4 c5 17. dxe5
Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21.  Nc4 Nxc4
22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1
Kxf7 27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4
cxb4 32. Ra5 Nd5 33.  f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+
Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5 40. Rd6 Kc5 41. Ra6 Nf2
42. g4 Bd3 43. Re6
]]>
</sanimg>
<sanitimg>
<![CDATA[
1. e4 e5 2. Cf3 Cc6 3. Ab5 a6 4. Aa4 Cf6 5. O-O Ae7 6. Te1 b5
7. Ab3 d6 8. c3 O-O 9. h3 Cb8 10. d4 Cbd7 11. c4 c6 12. cxb5
axb5 13. Cc3 Ab7 14. Ag5 b4 15.  Cb1 h6 16. Ah4 c5 17. dxe5
Cxe4 18. Axe7 Dxe7 19. exd6 Df6 20. Cbd2 Cxd6 21.  Cc4 Cxc4
22. Axc4 Cb6 23. Ce5 Tae8 24. Axf7+ Txf7 25. Cxf7 Txe1+ 26. Dxe1
Rxf7 27. De3 Dg5 28. Dxg5 hxg5 29. b3 Re6 30. a3 Rd6 31. axb4
cxb4 32. Ta5 Cd5 33.  f3 Ac8 34. Rf2 Af5 35. Ta7 g6 36. Ta6+
Rc5 37. Re1 Cf4 38. g3 Cxh3 39. Rd2 Rb5 40. Td6 Rc5 41. Ta6 Cf2
42. g4 Ad3 43. Te6
]]>
</sanitimg>
</imgblock>
</object>

...

Figura 4.27. Codice incorporato SAN: nel primo diagramma i pezzi sono stati indicati secondo la denominazione in lingua inglese, nel secondo diagramma secondo la denominazione italiana.

Codice incorporato SAN in inglese Codice incorporato SAN in italiano

Per esigenze più sofisticate di illustrazione scacchistica si può utilizzare l'elemento skakimg: tale elemento consente di indicare situazioni scacchistiche di una certa complessità, comprese annotazioni grafiche sulla scacchiera, mediante i comandi definiti in TeX-Skak, un pacchetto per scrivere di scacchi in LaTeX.

Nel listato 4.28 viene presentato un esempio di incorporazione nell'ambito dell'elemento skakimg; corrispondentemente, la figura 4.29 illustra l'aspetto finale dell'immagine in relazione al codice presentato.

Listato 4.28. Codice incorporato TeX-Skak.

...

<object>
<imgblock>
<skakimg>
<![CDATA[
\fenboard{8/8/R5p1/2k2bp1/1p6/1P3PPn/3K4/8 b - - 0 41}
\hidemoves{41...Nf2 42. g4 Bd3}
\showmoverOn
\notationOff
\showinverseboard
\highlight{a6,e6}
\printarrow{a6}{e6}
]]>
</skakimg>
</imgblock>
</object>

...

Figura 4.29. Codice incorporato TeX-Skak.

Codice incorporato TeX-Skak

4.5   Immagini incorporate Jgraph

È possibile incorporare codice per tracciare grafici e diagrammi strutturati di vario genere attraverso l'elemento jgraphimg, descrivendo l'immagine desiderata nel linguaggio di input del programma Jgraph.

Nel listato 4.30 viene presentato un esempio di incorporazione nell'ambito dell'elemento jgraphimg; corrispondentemente, la figura 4.31 illustra l'aspetto finale dell'immagine in relazione al codice presentato.

Listato 4.30. Codice incorporato Jgraph.

...

<object>
<imgblock>
<jgraphimg>
<![CDATA[
newgraph

xaxis 
  min 0.1 max 4.9 
  size 3.5
  hash 1 mhash 0 no_auto_hash_labels

yaxis 
  min 0 max .4
  size 2
  precision 3

newcurve marktype xbar cfill 1 0 0 marksize .8 
  pts   1 .390
        2 .389
        3 .353 
        4 .343

xaxis
  hash_label at 1 : Larry Walker
  hash_label at 2 : Tony Gwynn
  hash_label at 3 : Mike Piazza
  hash_label at 4 : Kenny Lofton
  hash_labels hjl vjc font Helvetica rotate -90

yaxis label : Batting Average
title : NL Batting Leaders, August 5, 1997
]]>
</jgraphimg>
</imgblock>
</object>

...

Figura 4.31. Codice incorporato Jgraph.

Codice incorporato Jgraph

4.6   Riferimenti


Informatica per sopravvivere 2006.02.19 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


1) GNU Plotutils   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome alml_estensioni_pxam.html

[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico]

Valid ISO-HTML!

CSS validator!