Forum Programmation.autre calculer des valeurs dans LaTeX

Posté par .
Tags : aucun
2
4
mar.
2011

bonjour,

je cherche à savoir s'il y a un moyen simple (inclu de base dans texlive par exemple), pour calculer des valeurs.

Par exemple, je dois insérer automatiquement des images (de tailles variables) dans les paragraphes d'un document LaTeX, et wrapfigure met des espaces beaucoup trop gros, car il semble nécessaire d'indiquer la largeur de l'image dans wrapfigure. Par rapport au reste de mon contexte, j'ai remarqué que si je divisais par 1,6 la largeur des images incluses, les marges étaient convenables. Seulement, je souhaite inclure le calcul automatiquement dans le code latex, par exemple ainsi :

\setlength{\intextsep}{3mm} \begin{wrapfigure}{l}{40/1.6} \includegraphics[width=40mm]{mon_image.jpg} \end{wrapfigure}

et ça coince au 40/1.6

(le code LaTeX est automatiquement généré, c'est pourquoi il n'est pas vraiment acceptable d'entrer cela à la main)

Si vous avez d'autres idées pour inclure des images dans ce style, je suis preneur :

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Aenean quis mi ut elit interdum imperdiet quis non ante.
Sed imperdiet, sapien quis    +------------------------+
viverra rhoncus, tellus dui   |                        |
dictum nisl, at porta purus   |                        |
ipsum ac turpis. Fusce auctor |         FIGURE         |
ullamcorper adipiscing. Nunc  |          HERE          |
non quam ac orci egestas con- |                        |
sequat ut eget quam. Cras     |                        |
blandit condimentum ornare.   +------------------------+
Curabitur aliquam, nulla sit amet iaculis tristique, mi
nulla auctor magna, sit amet imperdiet ante arcu a libero.

On parle souvent de picins qui semble plus facile, et capable de calculer les bonnes marges, mais il n'est pas disponible de base dans texlive (pas libre)

  • # Un piste?

    Posté par . Évalué à 2.

    Bonjour,

    J'ai un peu de mal à comprendre ce que tu vises au juste, mais voici quelques pistes que m'inspirent ton cas:

    • Il n'y a pas d'unité dans ton 40/1.6, ce qui pour une longeur est probablement un problème, mais c'est peut-être une erreur de recopie?

    • de base, Latex ne permet das de faire des calculs, mais il permet d'appliquer un coeffiscient lors de la référence à une longueur.

    • dans ton cas, je pourrais te proser ceci:

      \newlength{\matailledimages}
      \setlength{\matailledimages}{40mm}
      
      [...]
      
      \begin{wrapfigure}{l]{0.625\matailledimages} % 1/1.6 = 0.625
      \includegraphics[width=\matailledimages}{ton_image.jpg}
      \end{wrapfigure}
    • Sinon, tu peux aussi t'inspirer de ceci, non exhaustif en l'état:

      \newlength{\matailledimages}
      \setlength{\matailledimages}{0.4\textwidth}  % default=40% of text width
      \addtolength{\matailledimages}{-\intextsep}  % soustrait la marge de separation
    • [^] # Re: Un piste?

      Posté par . Évalué à 3.

      merci, j'ai trouvé une solution, comme indiqué plus bas. Effectivement, il faut préciser les unités.
      Ton astuce pourrait sans doute fonctionner également, à condition que setlength puisse être modifié pour chaque image différente du document (pas testé)

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

  • # Calc

    Posté par . Évalué à 4.

    Je n'ai pas vérifié que ça collait à ton problème, mais le package "calc" permet de faire des opérations dans la plupart des situations.

    • [^] # Re: Calc

      Posté par . Évalué à 2.

      merci, indirectement ça m'a aidé :)

      j'avais vu plusieurs paquets pour faire de l'arithmétique, mais je ne sais plus si j'étais tombé sur calc. J'avais essayé fp sans succès.

      en faisant une recherche sur calc, je suis tombé ici, qui donne des exemples concrets d'utilisation de fp : http://stackoverflow.com/questions/1219121/is-there-a-calculator-with-latex-syntax/4595039#4595039

      On peut donc faire ainsi :

      \setlength{\intextsep}{3mm} \FPsub\result{40}{15}  \begin{wrapfigure}{l}{\FPprint\result mm} \includegraphics[width=40mm]{image.jpg}   \end{wrapfigure}

      L'avantage est donc que l'on peut faire un calcul depuis une valeur initiale unique (ici la valeur est 40, et le calcul est 40 - 15, j'ai d'ailleurs vu par la suite qu'il ne fallait pas faire une division par 1.6 comme je pensais initialement, une soustraction étant plus adapté dans ce cas)

      J'utilise cela pour textallion, pour rajouter une image de 40 mm de large, enveloppée à gauche dans le paragraphe suivant, il suffit de rajouter la syntaxe [image.jpg][40]{~~~~} et cela est transformé automatiquement en code comme copié plus haut.

      Dans la source ça donne : http://code.google.com/p/textallion/source/diff?spec=svn94c0f819fd54c53ab43dfe59cfc8ce954162fd8f&r=94c0f819fd54c53ab43dfe59cfc8ce954162fd8f&format=side&path=/core/textallion.t2t

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

Suivre le flux des commentaires

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