Hi Bruce,
% label with minimum text height condition vardef p_label@#(expr txt,pos,rot,mode) = if abs(llcorner txt - ulcorner txt) > 5pt: p_label_orig@#(txt,pos,rot,mode) fi; enddef;
Thomas The above does not seem to work. It seems likely to me that the third to last line is missing a ; although adding it does not seem to help that much.
no, the semicolon is not necessary here.
The definition p_label_orig does not seem familiar to me. The data.mp file produced by Therion does not contain one of that name, only a p_label. In the above code I changed p_label_orig to p_label (assuming recursive definitions might be OK), but I get an error,
p_label_orig.lft ! Isolated expression.
recursion on the original p_label definition is not possible, it just gets overwritten. So you need to carry the complete label code when overwriting it, what I did with introducing p_label_orig (you could put it all in the p_label definition, but I tried to separate new code from existing one for clarity).
culminating in "can't open file" and no pdf output.
uhm, now it gets crude. I haven't looked in detail into the code, but a quick inspection led me to this hack: vardef p_label@#(expr txt,pos,rot,mode) = if abs(llcorner txt - ulcorner txt) > 5pt: p_label_orig@#(txt,pos,rot,mode) else: last_write := charcode fi; enddef; Has to do with the temporary file written by write_circ_bbox, which might not be created if the label gets skipped.
The differences between what you posted and what I have been using are...
code metapost fonts_setup(6,8,10,12,16)
instead of... % set xs and s to 1pt verbatimtex \def\thsmallsize{\size[1]} \def\thtinysize{\size[1]} etex
looks good, I just forgot that there was a fonts_setup method ;-)
I did not define my own p_label_orig (because I assumed the default must already be defined somewhere). If I do define as per your entire example I get different, and perhaps less serious errors, "can't open file" and still no output...
see above. In any case you need the p_label_orig. Cheers, Thomas