I've recently written some macros for typesetting certain constructs used in linguistics (Discourse Representation Structures). I hit an issue whereby the svmono class was changing the value of \arraycolsep and so messing up the typesetting. (Cf. svmono array padding .) The solution I adopted was to put \setlength{\arraycolsep}{5pt} at the start of the file containing my macros. However... presumably svmono had a reason for changing \arraycolsep, and so I'm interfering with it. (Based on some reading around, I'm assuming that macros utilise the value of \arraycolsep at that point they are evaluated, rather than the value at the point when they are defined.)
In some sense, this is a very unsatisfactory situation -- my package and svmono are fighting for \arraycolsep, and whichever one loses will have a problem. Is there some way in which I can essentially say, "I want to use the following value of \arraycolsep for the macros defined in this package, without affecting other packages"?
{...}don't propagate outside the braces? – Mohan Sep 06 '12 at 16:50{}groups and environments (which are\begingroup \endgroupgroups internally) both limit the scope of length settings (and newcommand definitions) – David Carlisle Sep 06 '12 at 18:54