1 |
<?xml version = "1.0" encoding="ISO-8859-1"?> |
<!-- $Id$ --> |
2 |
|
|
3 |
|
<!-- |
4 |
|
Feuille de style XSL pour convertir .geo.xml en .tex |
5 |
|
Utilisation du fichiers de macros pstricks pst-eucl.sty |
6 |
|
http://www.tug.org/applications/PSTricks/ |
7 |
|
http://dominique.rodriguez.9online.fr/pstr-eucl/ |
8 |
|
--> |
9 |
|
|
10 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
11 |
|
|
12 |
<xsl:output method="text" omit-xml-declaration="yes"/> |
<xsl:output method="text" omit-xml-declaration="yes"/> |
13 |
|
|
14 |
<xsl:template match="figure"> |
<xsl:template match="figure"> |
15 |
<xsl:text>\documentclass{article}</xsl:text> |
<xsl:text>\documentclass{article}</xsl:text> |
16 |
<xsl:text>\usepackage{pst-eucl}</xsl:text> |
<xsl:text>\usepackage{pst-eucl}</xsl:text> |
17 |
<xsl:text>\usepackage{pst-plot}</xsl:text> |
<xsl:text>\usepackage{pst-plot}</xsl:text> |
18 |
<xsl:text>\begin{document}</xsl:text> |
<xsl:text>\begin{document}</xsl:text> |
19 |
<xsl:text>\begin{pspicture}(10,10)</xsl:text> |
<xsl:text>\begin{pspicture}(10,10)</xsl:text> |
20 |
<xsl:apply-templates/> |
<xsl:apply-templates/> |
21 |
<xsl:text>\end{pspicture}</xsl:text> |
<xsl:text>\end{pspicture}</xsl:text> |
22 |
<xsl:text>\end{document}</xsl:text> |
<xsl:text>\end{document}</xsl:text> |
23 |
</xsl:template> |
</xsl:template> |
24 |
|
|
25 |
<xsl:template match="point"> |
<xsl:template match="point"> |
26 |
<xsl:choose> |
<xsl:choose> |
27 |
<xsl:when test="string(./@coordinates)"> |
<xsl:when test="string(./@coordinates)"> |
28 |
<xsl:text>\pstGeonode[linecolor=</xsl:text> |
<xsl:text>\pstGeonode[linecolor=</xsl:text> |
29 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
30 |
<xsl:text>]</xsl:text> |
<xsl:text>]</xsl:text> |
31 |
<xsl:value-of select="./@coordinates"/> |
<xsl:value-of select="./@coordinates"/> |
32 |
<xsl:text>{</xsl:text> |
<xsl:text>{</xsl:text> |
33 |
<xsl:value-of select="./@name"/> |
<xsl:value-of select="./@name"/> |
34 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
35 |
</xsl:when> |
</xsl:when> |
36 |
<xsl:otherwise> |
<xsl:otherwise> |
37 |
<!--xsl:value-of select="./@name"/--> |
<!--xsl:value-of select="./@name"/--> |
38 |
</xsl:otherwise> |
</xsl:otherwise> |
39 |
</xsl:choose> |
</xsl:choose> |
40 |
</xsl:template> |
</xsl:template> |
41 |
|
|
42 |
<xsl:template match="segment"> |
<xsl:template match="segment"> |
43 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
44 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
45 |
<xsl:text>\pstLineAB[linecolor=</xsl:text> |
<xsl:text>\pstLineAB[linecolor=</xsl:text> |
46 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
47 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
48 |
<xsl:value-of select="./@pointA"/> |
<xsl:value-of select="./@pointA"/> |
49 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
50 |
<xsl:value-of select="./@pointB"/> |
<xsl:value-of select="./@pointB"/> |
51 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
52 |
</xsl:template> |
</xsl:template> |
53 |
|
|
54 |
<xsl:template match="line"> |
<xsl:template match="line"> |
55 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
56 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
57 |
<xsl:text>\pstLineAB[nodesep=-2,linecolor=</xsl:text> |
<xsl:text>\pstLineAB[nodesep=-2,linecolor=</xsl:text> |
58 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
59 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
60 |
<xsl:value-of select="./@pointA"/> |
<xsl:value-of select="./@pointA"/> |
61 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
62 |
<xsl:value-of select="./@pointB"/> |
<xsl:value-of select="./@pointB"/> |
63 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
64 |
</xsl:template> |
</xsl:template> |
65 |
|
|
66 |
<xsl:template match="middle"> |
<xsl:template match="middle"> |
67 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
68 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
69 |
<xsl:text>\pstMiddleAB[linecolor=</xsl:text> |
<xsl:text>\pstMiddleAB[linecolor=</xsl:text> |
70 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
71 |
<xsl:if test="substring(string(./@name),1,2)='p_'"> |
<xsl:if test="substring(string(./@name),1,2)='p_'"> |
72 |
<xsl:text>,PointName=none</xsl:text> |
<xsl:text>,PointName=none</xsl:text> |
73 |
</xsl:if> |
</xsl:if> |
74 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
75 |
<xsl:value-of select="child::*[position()=1]/@name"/> |
<xsl:value-of select="child::*[position()=1]/@name"/> |
76 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
77 |
<xsl:value-of select="child::*[position()=2]/@name"/> |
<xsl:value-of select="child::*[position()=2]/@name"/> |
78 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
79 |
<xsl:value-of select="./@name"/> |
<xsl:value-of select="./@name"/> |
80 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
81 |
</xsl:template> |
</xsl:template> |
82 |
|
|
83 |
<xsl:template match="circle"> |
<xsl:template match="circle"> |
84 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
85 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
86 |
<xsl:text>\pstCircleOA[linecolor=</xsl:text> |
<xsl:text>\pstCircleOA[linecolor=</xsl:text> |
87 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
88 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
89 |
<xsl:value-of select="./@pointA"/> |
<xsl:value-of select="./@pointA"/> |
90 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
91 |
<xsl:value-of select="./@pointB"/> |
<xsl:value-of select="./@pointB"/> |
92 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
93 |
</xsl:template> |
</xsl:template> |
94 |
|
|
95 |
<xsl:template match="inter_circle_line"> |
<xsl:template match="inter_circle_line"> |
96 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
97 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
98 |
<xsl:text>\pstInterLC[linecolor=</xsl:text> |
<xsl:text>\pstInterLC[linecolor=</xsl:text> |
99 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
100 |
<xsl:if test="substring(string(./@name1),1,2)='p_'"> |
<xsl:if test="substring(string(./@name1),1,2)='p_'"> |
101 |
<xsl:text>,PointName=none</xsl:text> |
<xsl:text>,PointName=none</xsl:text> |
102 |
</xsl:if> |
</xsl:if> |
103 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
104 |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
105 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
106 |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
107 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
108 |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
109 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
110 |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
111 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
112 |
<xsl:value-of select="./@name1"/> |
<xsl:value-of select="./@name1"/> |
113 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
114 |
<xsl:value-of select="./@name2"/> |
<xsl:value-of select="./@name2"/> |
115 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
116 |
</xsl:template> |
</xsl:template> |
117 |
|
|
118 |
<xsl:template match="inter_circle_circle"> |
<xsl:template match="inter_circle_circle"> |
119 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
120 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
121 |
<xsl:text>\pstInterCC[linecolor=</xsl:text> |
<xsl:text>\pstInterCC[linecolor=</xsl:text> |
122 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
123 |
<xsl:if test="substring(string(./@name1),1,2)='p_'"> |
<xsl:if test="substring(string(./@name1),1,2)='p_'"> |
124 |
<xsl:text>,PointName=none</xsl:text> |
<xsl:text>,PointName=none</xsl:text> |
125 |
</xsl:if> |
</xsl:if> |
126 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
127 |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
128 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
129 |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
130 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
131 |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
132 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
133 |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
134 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
135 |
<xsl:value-of select="./@name1"/> |
<xsl:value-of select="./@name1"/> |
136 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
137 |
<xsl:value-of select="./@name2"/> |
<xsl:value-of select="./@name2"/> |
138 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
139 |
</xsl:template> |
</xsl:template> |
140 |
|
|
141 |
<xsl:template match="inter_line_line"> |
<xsl:template match="inter_line_line"> |
142 |
<xsl:apply-templates select="child::*[position()=1]"/> |
<xsl:apply-templates select="child::*[position()=1]"/> |
143 |
<xsl:apply-templates select="child::*[position()=2]"/> |
<xsl:apply-templates select="child::*[position()=2]"/> |
144 |
<xsl:text>\pstInterLL[linecolor=</xsl:text> |
<xsl:text>\pstInterLL[linecolor=</xsl:text> |
145 |
<xsl:value-of select="./@color"/> |
<xsl:value-of select="./@color"/> |
146 |
<xsl:if test="substring(string(./@name),1,2)='p_'"> |
<xsl:if test="substring(string(./@name),1,2)='p_'"> |
147 |
<xsl:text>,PointName=none</xsl:text> |
<xsl:text>,PointName=none</xsl:text> |
148 |
</xsl:if> |
</xsl:if> |
149 |
<xsl:text>]{</xsl:text> |
<xsl:text>]{</xsl:text> |
150 |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
<xsl:value-of select="child::*[position()=2]/@pointA"/> |
151 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
152 |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
<xsl:value-of select="child::*[position()=2]/@pointB"/> |
153 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
154 |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
155 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
156 |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
157 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
158 |
<xsl:value-of select="./@name"/> |
<xsl:value-of select="./@name"/> |
159 |
<xsl:text>}</xsl:text> |
<xsl:text>}</xsl:text> |
160 |
</xsl:template> |
</xsl:template> |
161 |
|
|
162 |
<xsl:template match="point_on_circle"> |
<xsl:template match="point_on_circle"> |
163 |
<xsl:text>\pstCurvAbsNode{</xsl:text> |
<xsl:text>\pstCurvAbsNode{</xsl:text> |
164 |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
<xsl:value-of select="child::*[position()=1]/@pointA"/> |
165 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
166 |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
<xsl:value-of select="child::*[position()=1]/@pointB"/> |
167 |
<xsl:text>}{</xsl:text> |
<xsl:text>}{</xsl:text> |
168 |
<xsl:value-of select="./@name"/> |
<xsl:value-of select="./@name"/> |
169 |
<xsl:text>}{\pstDistVal{5}}</xsl:text> |
<xsl:text>}{\pstDistVal{5}}</xsl:text> |
170 |
</xsl:template> |
</xsl:template> |
171 |
|
|
172 |
</xsl:stylesheet> |
</xsl:stylesheet> |