Ben I think the following (dumped below) from the therion sources mpost\thPoint.mp holds the solution to what we are looking for. And I think the smartlabel is the wonderous self organising label routine. I have not had time to verify all this however.
Stacho tried to point me to it http://article.gmane.org/gmane.comp.gis.therion/2468/match=symbol+show+fixed +points+text but I did not follow up on it. The first definition below is the code for drawing the ? symbol of a continuation point. You just need to replace the thdraw statements with the symbol you would like. Don't ask me how - my approach is to trawl the rest of the therion code for a symbol I like and perhaps tweak it a little. The second shows how mark is used to decide what station 'x' mark to use, and then how the flags control how the secondary symbols are added. The %% comments are mine, so may not be correct. It shows that station comment text is only added if the station is flagged entrance. I think moving the smartlabel into all but the station_temporary conditional statements might be what we are after. Bruce def p_continuation_UIS(expr pos,theta,sc,al) = U:=(.15u,.3u); T:=identity aligned al shifted pos; %% draw ? symbol pickup PenC; thdraw (-.1u,.2u){up}..{down}(.1u,.2u)..{down}(0,-.05u); pickup PenX; thdraw (0,-.2u); enddef; def p_station_SKBB(expr pos,mark,txt)(text flags) = T:=identity shifted pos; if mark=4: p_station_fixed(pos) elseif mark=3: p_station_natural(pos) elseif mark=2: p_station_painted(pos) elseif mark=1: p_station_temporary(pos) fi; path path_cave; %% = omega symbol path_cave = (-.3u,-.25u) -- (-.2u,-.25u){dir 135} .. (0, .25u) .. {dir 225}(.2u,-.25u) -- (.3u,-.25u); for i=flags: pickup PenX; if i="entrance": % thfill fullcircle scaled 1 cm withtransparentcolor tr_blue; thdraw path_cave; % p_label.urt(txt,pos+(0.4u,0),0,0); %% move this if block outside of for loop to label all stations, not just flagged entrance if not numeric txt: p_smartlabel(txt,pos); %% This is the wonderous self organising label i think fi; %% elseif i="sink": thdraw path_cave cutbefore ((-u,0)--(u,0)) cutafter ((-u,0)--(u,0)); pickup PenA; thdraw (0,-.45u) -- (0,.05u) withcolor blue; thdraw (-.15u,-.02u) -- (0,.05u) -- (.15u,-.02u) withcolor blue; elseif i="spring": thdraw path_cave cutbefore ((-u,0)--(u,0)) cutafter ((-u,0)--(u,0)); pickup PenA; thdraw (0,-.45u) -- (0,.05u) withcolor blue; thdraw (-.15u,-.38u) -- (0,-.45u) -- (.15u,-.38u) withcolor blue; elseif i="doline": thdraw (-.5u,.05u){down}..(0,-0.6u)..{up}(.5u,.05u); elseif i="dig": thdraw (-.5u,.25u) -- (-.35u,.25u)--(-.23u,-.25u)--(.23u,-.25u)--(.35u,.25u)--(.5u,.25u); elseif substring(0,11) of i = "air-draught": pickup PenB; thdraw ((0,.11u){dir-120} ..{dir-70}(0,0) .. {dir-120}(0,-.11u)); thdraw ((0,.11u){dir-120} ..{dir-70}(0,0) .. {dir-120}(0,-.11u)) shifted (.11u,0); thdraw ((0,.11u){dir-120} ..{dir-70}(0,0) .. {dir-120}(0,-.11u)) shifted (-.11u,0); elseif i="continuation": if picture(txt): picture ATTR__text; ATTR__text := txt; fi; begingroup; save T; transform T; p_continuation(pos+(0,.25u),0,1,(0,1)); endgroup; if picture(txt): save ATTR__text; fi; elseif i="arch": thdraw (-.5u,-.25u)--(-.5u,.25u)--(.5u,.25u)--(.5u,-.25u)..(0,.2u)..cycle; thfill (-.5u,-.25u)--(-.5u,.25u)--(.5u,.25u)--(.5u,-.25u)..(0,.2u)..cycle; elseif i="overhang": thdraw (.2u,-.25u)--(-.2u,-.25u){up}..{right}(.2u,.25u); fi; endfor; % thdraw (0,0) withpen PenX withcolor red; enddef; -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mailman.speleo.sk/pipermail/therion/attachments/20111130/7b86da4a/attachment.html>
