Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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"?

share|improve this question
add comment

1 Answer

up vote 8 down vote accepted

Presumably the springer class reduces the table padding as it is designed for end use in journal pages with narrow widh compared to the typical a4/letter draft size (at least that's the usual reason)

Any environment based on tabular will use the current value of \tabcolsep if you want your own environments to have a different parameter the easiest way is to go

\newlength\mytabcolsep
\setlength\mytabcolsep{5in}

\newenvironment{myenvironment}
{\tabcolsep\mytabcolsep.....\begin{tabular}....}
{\end{tabular}.....}

That way the effective value of \tabcolsep is changed just within environments that you define. (If there are any nested tabular environments they would pick up the new value as well, if that is a problem your environment could just use \tabcolsep\mytabcolsep and then restore the original value before processing the user-supplied environment body.

share|improve this answer
    
That sounds perfect -- thank you. What is responsible for the change to \tabcolsep being local? Is it simply that changes to lengths inside environments don't propagate outside those environments? Or is it that changes inside {...} don't propagate outside the braces? –  Mohan Sep 6 '12 at 16:50
4  
both of those things. {} groups and environments (which are \begingroup \endgroup groups internally) both limit the scope of length settings (and newcommand definitions) –  David Carlisle Sep 6 '12 at 18:54
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.