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.

Using the lettre document class, I want to place the enclosures automatically at the bottom of the page, like this :

image

This is the default behavior :

image

This is the code I used to get the first picture (with the enclosures at the bottom) :

\documentclass[romand]{lettre}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[francais]{babel}

\name{Mister Z}


\begin{document}

\begin{letter}{Company X\\
Mister Y\\
Address\\
Town}

\conc{Business contract}

\opening{Dear Sir,}

Lorem ipsum dolor sit amet, % and so on..

\closing{Kind regards,}
\vspace{60mm} % This is what I want to be automatic (adaptative)
\encl{Contract}

\end{letter}

\end{document}

I'd like to replace \vspace{60mm} by something which would automatically take all free space like \vfill. But \vfill does not do what I want here, I think this is because the letter is written inside the letter environment, which probably does not take the whole page. I tried to find a solution by looking at the lettre.cls file, but with no success.

share|improve this question
    
Welcome to TeX.SX. A tip: If you indent lines by 4 spaces, then they're marked as a code sample. You can also highlight the code and click the "code" button ({}). –  Claudio Fiandrino Oct 17 '12 at 9:33
add comment

1 Answer

up vote 2 down vote accepted

Your strategy is correct, but the lettre class does a couple of tricky/not nice things. The class adds \stopletter (defined as \vskip0ptplus1filll) at the end of the letter. That is a filll with 3 l's which swamps all the other stretchable glue. If you replace \vspace{60mm} with \vskip0ptplus1filll then you enclosure will be halfway to the bottom of the page since you add some 3-l stretch instead of the 2-l stretch of \vfill. If you also redefine \stopletter to not add space, then the enclosure will be at the bottom of the page. Putting it all together gives

\documentclass[romand]{lettre}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[francais]{babel}

\name{Mister Z}


\def\stopletter{}%

\begin{document}

\begin{letter}{Company X\\
Mister Y\\
Address\\
Town}

\conc{Business contract}

\opening{Dear Sir,}

Lorem ipsum dolor sit amet, % and so on..

\closing{Kind regards,}
\vskip0ptplus1filll
\encl{Contract}

\end{letter}

\end{document}
share|improve this answer
    
thanks a lot ! :) –  Ben Oct 18 '12 at 6:21
    
In order to not having to add this in each letter, I added these 3 lines in my "institute" (.ins) file (the one called by \institute{}) : \def\stopletter{} \let\enclold\encl \renewcommand\encl[1]{\vskip0ptplus1filll\enclold{#1}} –  Ben Oct 18 '12 at 6:48
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.