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 am trying to create a package that will use grid typesetting (in the humanities, so not much of a problem) but that should allow the user to freely set the \baselinestretch. I am using the memoir class as a basis.

In order to do so, I have defined some font sizes, and calculated the amount of space which I should add, for instance after a \Large heading, so as to preserve the vertical alignment; then I am setting the lengths accordingly. So, for instance:

\renewcommand{\baselinestretch}{1.1}\selectfont
\renewcommand*{\normalsize}{\fontsize{12}{14.5}\selectfont}
\renewcommand*{\Large}{\fontsize{17}{22}\selectfont}
\def\addto@Large{7.7pt}

\setlength{\beforechapskip}{\addto@Large}
\addtolength{\beforechapskip}{\baselineskip}

It works so far, but I would like to be able to change \baselinestretch at will. In order to do that, I basically need to define my \addto@Large command for a stretch factor of one (so that would be 7pt here), and then multiply it by the \baselinestretch factor.

Is it possible, and if so, how can I do that?

share|improve this question
1  
It is not really clear for me but to calculate length you can use dimexpr or glueexpr provide by e-TeX. –  Marco Daniel Jan 1 '12 at 23:08
    
The \addto@Large length seems to assume single-line headings. So, why not define a variant of \Large with "normalsized" line spacing (tex.stackexchange.com/questions/38613/…) and add multiples of \baselineskip before and after headings? –  lockstep Jan 1 '12 at 23:09
    
@lockstep Yes, I have seen this question and implemented the answer on some of the lengths I commonly use (for footnotes, e.g.), but thank you for mentioning it. –  ienissei Jan 1 '12 at 23:35
add comment

1 Answer

up vote 8 down vote accepted

You have several choices. For example define \addto@Large as a dimen parameter:

 \newdimen\addto@Large
 \addto@Large=7pt

 \setlength{\beforechapskip}{\baselinestretch\addto@Large}
 \addtolength{\beforechapskip}{\baselinestretch\baselineskip}

You can also do in one swoop, by using \dimexpr:

 \setlength\beforechapskip{\baselinestretch\dimexpr\addto@Large+\baselineskip\relax}

In this case \addto@Large can also be defined as you did; but it's best to have it as a dimen parameter.

share|improve this answer
    
Thank you for your answer. It works as described generally speaking, but it seems to break the vertical alignment by a small amount – both solutions seem to alter it, though differently. EDIT — My mistake, the problem comes from my code (probably). I got it to work eventually. –  ienissei Jan 1 '12 at 23:38
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.