Forum Linux.général Conseils pour réaliser une classe LaTeX

Posté par  .
Étiquettes : aucune
0
20
sept.
2007
Hello forum !
Je dois rédiger une classe LaTeX pour des documents ayant cette structure :

+-------------------------------------------------------------------+
| LOGO | |
| Lieu, le date |
| |
| Monsieur plop |
| à |
| Mme La Moule |
| bla | Objet : |
| blabla| Référence : |
| labla| |
| | |
| | |
| | |
+-------------------------------------------------------------------+


Les contraintes sont les suivantes : le logo est un jpeg qui ne doit figurer que sur la première page, au format jpeg, à un emplacement précis, avec une taille précise.
J'ai bien la commande \includegraphics qui me permet d'en préciser la taille, mais pas l'emplacement... Comment faire pour en forcer l'emplacement ?
Le lieu et l'identité de l'expéditeur sont connus et doivent être intégrés de la même façon que précédament, uniquement sur la première page, à un emplacement précis.
Enfin, tout ce qui est référencé à gauche comme bla, blabla, etc est un ensemble d'informations (service expéditeur avec coordonnées complètes, etc). Le texte complet fait dans les 30 lignes, doit être aligné à droite, dans une colonne qui s'arrête à 4.5cm du bord gauche de la page. Ces informations ne doivent être présentes que sur la première page également.
Si d'aventure le texte du courrier devait s'étendre sur plus d'une page, il faut que la marge de gauche soit à 4.5cm.
C'est pratiquement la seule chose que je sait régler grâce au package geometry.
Alors je me permet de vous demander des conseils pour arriver à mes fins. Par avance, merci pour votre aide.
P.S. J'ai bien regardé l'option twocolumn, mais on ne peut pas préciser la taille des colonnes, et le package multicol ne permet pas non plus de préciser la taille des colonnes utilisées. C'est bien dommage. Je pensais aussi tout coller dans un tableau, mais il me semble que c'est un peu comme les pages web, c'est porc....
Merci pour les pistes que vous pourrez me donner.
  • # Hum

    Posté par  . Évalué à 5.

    Bon, certaines de tes remarques me font penser que tu n’es pas très versé en LaTeX. Je vais donc rester dans les conseils généraux et les pistes :

    1. Lis la doc livrée avec LaTeX, va voir sur le CTAN, achète-toi un bouquin…

    2. Regarde les classes existantes. Il est souvent plus facile de paramétrer/modifier une classe que d’en écrire une.

    3. Pour le placement du logo, regarde la commande \put de l’environnement picture (sans doute à placer dans les entêtes, voir fancyhdr, il simplifie leur définition).

    4. Pour gérer des blocs de texte, regarde les minipages. Il faut comprendre le système de boîtes verticales et horizontales de TeX pour bien maîtriser tous les placements.

    5. Pour le bloc de blabla à gauche, tu peux aussi regarder la marginpar.
    • [^] # Re: Hum

      Posté par  . Évalué à 4.

      Ah, et, heu, bon courage !
      • [^] # Re: Hum

        Posté par  . Évalué à 2.

        Hello !
        Bon, déjà, merci pour ta réponse rapide, car même si elle ne m'éclaire pas, elle me donne au moins la possibilité de préciser un peu ma demande.
        Pour ton point 1), je ne précise pas que j'ai sous le coude deux ouvrages : "a not so short introduction to LaTeX" fournie avec le reste, et "LaTeX par la pratique" chez O'Reilly.
        Pour le 2) justement, il y a tellement de classes existantes, qu'il est difficile de s'y retrouver. Donc, ma demande, qui était certes mal formulée, visait plutôt à me faire orienter soit vers des classes toutes faites qui ressembleraient, soit vers des outils qui me permettraient d'arriver à mes fins.
        Pour le point 4, c'est finalement là-dessus que je me suis orienté, avec le package geometry, et quelques autres (cf.ci-dessous).
        Enfin, pour le coup du marginpar, j'y ai pensé, mais c'est assez moisi, et ça ne correspond pas vraiment à ce dont j'ai besoin, puisqu'on ne peut pas trop préciser de format pour ce qui va dans la marge (en tout cas, facilement).
        Du coup, pour l'instant, j'ai rédigé un document de travail dont la structure ressemble à ça :

        \documentclass{report}
        \usepackage[dvips]{graphicx}
        \geometry{a4paper, portrait,%
        left=56mm, right=1cm, top=2cm, bottom=1cm, headheight=0cm, headsep=5mm, footskip=3mm}
        \begin{document}
        \fontfamily{cmss}\fontseries{m}\selectfont
        \fontsize{11}{1}\selectfont
        \hspace{-46mm}\includegraphics[width=32mm]{logo.jpg}%
        \vspace{-32mm}%
        \begin{tabbing}
        \hspace{64mm}\=\textbf{Lieu, le \today}\\ \par
        \>\hspace{1ex}\\
        \>M. Plop \\
        \> à
        \end{tabbing}
        \vspace{2cm}
        \hspace{-49mm}
        \begin{minipage}[t]{32mm}
        \begin{flushright}
        \footnotesize
        \textbf{Tout le texte à coller dans la marge, aligné à droite, et en gras....}
        \end{flushright}
        \end{minipage}\hspace{15mm}
        \begin{minipage}[t]{140mm}
        Objet : \\
        Référence : \\
        \end{minipage}
        \end{document}


        L'aspect général est assez semblable au modèle wordquipue qu'on m'a fourni pour travailler.
        Le seul point qui me laisse perplexe, c'est l'espace vertical que je veux entre Lieu, le et M. Plop, à savoir :
        Je ne veux pas :
        Lieu, le
        M. Plop
        Je veux quelque chose du genre :
        Lieu, le

        M. Plop

        J'ai essayé plusieurs choses (utilisation de vspace, saut de ligne, marque de fin de paragraphe, etc.) sans succès pour l'instant. Je pense que c'est dû à l'utilisation de l'environnement tabbing, sans certitudes.
        Il ne me reste aussi qu'à coller tout ça dans un fichier de définition de classe. Je finirai ça demain, mais si vous avez d'autres outils à me conseiller, je suis preneur !
        J'espère avoir été plus clair.
        • [^] # Re: Hum

          Posté par  . Évalué à 2.

          Pour le point 2, il n’y a pas vraiment d’autre solution que de regarder la doc et les exemples des différents paquets, de voir ceux qui se rapprochent de ce que tu veux et de regarder si tu peux les comprendre suffisamment pour les modifier.

          Pour le marginpar, la taille est définissable par geometry, pour le style, tu peux l’emballer dans une commande (genre \textemarge{blabla} définie par \newcommand\textemarge[1]{\it…#1}). Ensuite, même si tu utilises une minipage (ce qui serait aussi fait par l’intermédiaire d’une commande : \newcommand\textemarge[1]{\begin{minipage}…#1\end{minipage}}), je te conseillerais de ne pas mettre Objet, Références dans des minipages, juste de positionner ta marge pour le texte normal et de déplacer le blabla dans la marge par une boîte de taille nulle :

          \newcommand\textemarge[1]{%
            \makebox[0pt][r]{%
              \parbox{4cm}{%
                #1%
              }%
            }%
          }
          \newcommand\objet[1]{Objet : #1}

          et de l’utiliser comme ça :
          \textemarge{blabla}
          \objet{…}
          \refs{…}


          Pour les [vh]space, utilise les versions avec * : elles ne seront plus « facultatives ».

          Autre chose, n’utilise pas tabbing (c’est vraiment primitif et difficile à lire/gérer). Fais des \parbox/minipage que tu déplaces à droite par des \hspace*. Fais une seule boîte pour l’auteur et le destinataire et change la longueur \parskip pour espacer les lignes.

          Enfin, même pour des tests, et même si ça ne doit servir qu’une fois par fichier, fais des commandes simples (genre \objet, \refs, \auteur, etc.) pour que tes fichiers soient clairs, faciles à lire, et que l’on repère facilement ce qui fait partie du texte et ce qui fait partie du code (ce qui peut/doit être changé pour faire une nouvelle lettre).
          • [^] # Re: Hum

            Posté par  . Évalué à 1.

            Mieux vaut tard que jamais....
            Merci pour ta réponse, Sylvain, car elle est argumentée et pleine de bon sens. J'ai suivi tes conseils, et j'ai réussi à rédiger ma classe. Elle est maintenant utilisable et en production.
            J'ai effectivement viré l'utilisation de l'environnement tabbing, mis le tout dans des minipage, y compris le texte de la marge.
            Un grand merci à toi, donc.
  • # usenet

    Posté par  . Évalué à 3.

    Je ne peux pas t'aider mais si tu as des questions sur latex je ne saurais trop te conseiller de poser ton problème sur fr.comp.text.tex ou il y a une paire de kador toujours prêt à aider

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.