2:- module(drs2tex,[drs2tex/2]). 3
4:- use_module(semlib(drs2fol),[symbol/4]). 5
6
10
11drs2tex(smerge(B1,B2),Stream):- !,
12 drs2tex(merge(B1,B2),Stream).
13
14drs2tex(alfa(_,B1,B2),Stream):- !,
15 write(Stream,'('),
16 drs2tex(B1,Stream),
17 write(Stream,'$\\alpha$'),
18 drs2tex(B2,Stream),
19 write(Stream,')').
20
21drs2tex(merge(B1,B2),Stream):- !,
22 write(Stream,'('),
23 drs2tex(B1,Stream),
24 write(Stream,';'),
25 drs2tex(B2,Stream),
26 write(Stream,')').
27
28drs2tex(drs(D,C),Stream):- !,
29 write(Stream,'\\drs{'),
30 refs2tex(D,Stream),
31 write(Stream,'{'),
32 conds2tex(C,Stream),
33 write(Stream,'}').
34
35
39
40refs2tex([],Stream):- !,
41 write(Stream,'}').
42
43refs2tex([_:C],Stream):- !,
44 write(Stream,C),
45 write(Stream,'}').
46
47refs2tex([_:C|L],Stream):-
48 write(Stream,C),
49 write(Stream,' '),
50 refs2tex(L,Stream).
51
52
56
57conds2tex([],_):- !.
58
59conds2tex([_:C],Stream):- !,
60 cond2tex(C,Stream,_),
61 write(Stream,'\\\\[-3pt]').
62
63conds2tex([_:C|L],Stream):-
64 cond2tex(C,Stream,N),
65 format(Stream,'\\\\[~ppt]~n',[N]),
66 conds2tex(L,Stream).
67
68
72
73cond2tex(not(Drs),Stream,9):- !,
74 write(Stream,'$\\lnot$'),
75 drs2tex(Drs,Stream).
76
77cond2tex(nec(Drs),Stream,9):- !,
78 write(Stream,'$\\Diamond$'),
79 drs2tex(Drs,Stream).
80
81cond2tex(pos(Drs),Stream,9):- !,
82 write(Stream,'$\\Box$'),
83 drs2tex(Drs,Stream).
84
85cond2tex(prop(X,Drs),Stream,9):- !,
86 write(Stream,X),
87 write(Stream,':'),
88 drs2tex(Drs,Stream).
89
90cond2tex(or(Drs1,Drs2),Stream,9):- !,
91 drs2tex(Drs1,Stream),
92 write(Stream,'$\\lor$'),
93 drs2tex(Drs2,Stream).
94
95cond2tex(imp(Drs1,Drs2),Stream,9):- !,
96 drs2tex(Drs1,Stream),
97 write(Stream,'$\\Rightarrow$'),
98 drs2tex(Drs2,Stream).
99
100cond2tex(whq(Drs1,Drs2),Stream,9):- !,
101 drs2tex(Drs1,Stream),
102 write(Stream,'?'),
103 drs2tex(Drs2,Stream).
104
105cond2tex(duplex(_,Drs1,_,Drs2),Stream,N):- !,
106 cond2tex(whq(Drs1,Drs2),Stream,N).
107
108cond2tex(card(X,C,_),Stream,1):- !,
109 write(Stream,'$|$'),
110 write(Stream,X),
111 write(Stream,'$|$ = '),
112 write(Stream,C).
113
114cond2tex(named(X,C,T,_),Stream,1):- !,
115 write(Stream,'named('),
116 write(Stream,X),
117 write(Stream,','),
118 write(Stream,C),
119 write(Stream,','),
120 write(Stream,T),
121 write(Stream,')').
122
123cond2tex(timex(X,D1),Stream,1):- !,
124 sym2tex(D1,t,_Sense,D2),
125 write(Stream,D2),
126 write(Stream,'('),
127 write(Stream,X),
128 write(Stream,')').
129
130cond2tex(eq(X,Y),Stream,1):- !,
131 write(Stream,X),
132 write(Stream,' = '),
133 write(Stream,Y).
134
135cond2tex(pred(X,Sym1,Type,Sense),Stream,1):-
136 sym2tex(Sym1,Type,Sense,Sym2), !,
137 write(Stream,Sym2),
138 write(Stream,'('),
139 write(Stream,X),
140 write(Stream,')').
141
142cond2tex(rel(X,Y,Sym1,Sense),Stream,1):-
143 sym2tex(Sym1,r,Sense,Sym2), !,
144 write(Stream,Sym2),
145 write(Stream,'('),
146 write(Stream,X),
147 write(Stream,','),
148 write(Stream,Y),
149 write(Stream,')').
150
151cond2tex(role(X,Y,Sym1,1),Stream,1):-
152 sym2tex(Sym1,r,1,Sym2), !,
153 write(Stream,Sym2),
154 write(Stream,'('),
155 write(Stream,X),
156 write(Stream,','),
157 write(Stream,Y),
158 write(Stream,')').
159
160cond2tex(role(X,Y,Sym1,-1),Stream,1):-
161 sym2tex(Sym1,r,1,Sym2), !,
162 write(Stream,Sym2),
163 write(Stream,'('),
164 write(Stream,Y),
165 write(Stream,','),
166 write(Stream,X),
167 write(Stream,')').
168
169
173
174sym2tex(Sym1,Type,Sense,Sym3):-
175 symbol(Type,Sym1,Sense,Sym2),
176 name(Sym2,Codes2),
177 underscore(Codes2,Codes3),
178 name(Sym3,Codes3).
179
180
184
185underscore([],[]).
186
187underscore([95|L1],[92,95|L2]):- !,
188 underscore(L1,L2).
189
190underscore([X|L1],[X|L2]):- !,
191 underscore(L1,L2)