Récupérer la hauteur d'une figure asylatex

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Récupérer la hauteur d'une figure asylatex

Messagepar alekhine » Mardi 02 Mars 2010, 17:04

Bonjour,

Est-il possible de récupérer la hauteur (et la largeur tant qu'on y est) d'une figure asymptote créée dans un fichier latex dans un environnement asy ?

Merci.
Dernière édition par alekhine le Mardi 02 Mars 2010, 18:32, édité 1 fois.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [asylatex] hauteur figure

Messagepar GMaths » Mardi 02 Mars 2010, 18:19

alekhine a écrit:Est-il possible de récupérer la hauteur (et la largeur tant qu'on y est) d'une figure asymptote créer dans un fichier latex dans un environnement asy ?

Pour ?

Tu ne peux pas fixer la hauteur avec un size(0,hauteurchoisie) ?
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar alekhine » Mardi 02 Mars 2010, 18:47

Pour créer une minipage de la même hauteur que la figure afin d'écrire du texte à côté. Par exemple :

Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[ headheight=14pt, margin=2.8cm]{geometry}
\usepackage{graphics,asymptote}

\begin{document}
\begin{minipage}[][172.20335pt][t]{0.45\linewidth}
  Texte à côté de la figure (genre un magnifique énoncé d'exercice).
\end{minipage}
\hfill
\begin{minipage}[]{0.5\linewidth}
  \begin{center}
\begin{asy}
unitsize(0.65cm);
path chemin=(0,0)..(2,1)..(5,4)..cycle;
filldraw(chemin,red,1bp+black);
\end{asy}
  \end{center}
\end{minipage}
\end{document}


Pour la hauteur, je l'ai récupérée dans le log

GMaths a écrit:Tu ne peux pas fixer la hauteur avec un size(0,hauteurchoisie) ?


Si je veux créer des figures "en vraie grandeur" je ne maîtrise pas la hauteur finale.
Et puis ce serait pour pouvoir créer une commande, et donc récupérer automatiquement cette hauteur.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar GMaths » Mardi 02 Mars 2010, 19:04

alekhine a écrit:Et puis ce serait pour pouvoir créer une commande, et donc récupérer automatiquement cette hauteur.


Il y a une chose que je ne comprends : la quantité de texte va être variable... donc :

Qu'espères-tu obtenir... si tu as moins de texte à mettre que de "place disponible" dans ta minipage de hauteur fixée ?
Qu'espères-tu obtenir... si tu as plus de texte à mettre que de "place disponible" dans ta minipage de hauteur fixée ?
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar alekhine » Mardi 02 Mars 2010, 19:17

GMaths a écrit:Qu'espères-tu obtenir... si tu as moins de texte à mettre que de "place disponible" dans ta minipage de hauteur fixée ?

Qu'espères-tu obtenir... si tu as plus de texte à mettre que de "place disponible" dans ta minipage de hauteur fixée ?


Dans les deux cas j'aimerais que le texte débute en haut de la figure. Quitte à ce qu'il dépasse en bas s'il y a plus de texte que la hauteur de la figure.

Mais je me rend compte avec ta question que ça ne marcherait que si le texte est plus court que la hauteur de la figure :(
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar GMaths » Mardi 02 Mars 2010, 19:23

alekhine a écrit:Dans les deux cas j'aimerais que le texte débute en haut de la figure.

Cela, c'est possible sans chercher à calculer la hauteur... donc je ne vois pas ce que la hauteur de la figure va t'apporter... puisque tout va dépendre de la quantité de texte que tu décideras de mettre dans la minipage et de celle que tu décideras de mettre à la suite de la minipage.

Je te conseille de proposer des exemples qui ne font pas ce que tu veux... et on pourra alors te dire comment faire.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar alekhine » Mardi 02 Mars 2010, 19:27

Donc je précise ma question :
comment faire pour qu'avec deux minipages côte à côte, l'une contenant du texte et l'autre une figure, le texte débute en haut de la figure.
Car si on ne passe pas d'options aux deux minipages, le texte est centré verticalement par rapport à la figure.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar alekhine » Mardi 02 Mars 2010, 19:31

Voilà ce que je ne veux pas :

Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[ headheight=14pt, margin=2.8cm]{geometry}
\usepackage{graphics,asymptote}

\begin{document}
\begin{minipage}{0.45\linewidth}
  Texte à côté de la figure (genre un magnifique énoncé d'exercice).
\end{minipage}
\hfill
\begin{minipage}{0.5\linewidth}
  \begin{center}
\begin{asy}
unitsize(0.65cm);
path chemin=(0,0)..(2,1)..(5,4)..cycle;
filldraw(chemin,red,1bp+black);
\end{asy}
  \end{center}
\end{minipage}
\end{document}
Fichiers joints
hauteur_figure.pdf
(28.79 Kio) Téléchargé 82 fois
Dernière édition par alekhine le Mercredi 03 Mars 2010, 20:37, édité 1 fois.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar GMaths » Mardi 02 Mars 2010, 19:32

alekhine a écrit:Donc je précise ma question :
comment faire pour qu'avec deux minipages côte à côte, l'une contenant du texte et l'autre une figure, le texte débute en haut de la figure.
Car si on ne passe pas d'options aux deux minipages, le texte est centré verticalement par rapport à la figure.

Il fallait commencer par cela. :-)

Tu écris ceci, en remplaçant les points par le texte et l'image...

Code: Tout sélectionner
\setlength{\largeurimage}{5cm}
\alignevert[T]{%[c]ou[b]ou[t]ou[T]
  \begin{minipage}{\textwidth-\largeurimage-.5cm}
  •
  \end{minipage}%
}\hfill
\alignevert[T]{%
  \begin{minipage}{\largeurimage}
  •
  \end{minipage}%
}


en ayant défini dans ton fichier perso :

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}
\makeatother


Et après, on dit : merci à pg. :-)
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar alekhine » Mardi 02 Mars 2010, 19:48

Il faut que je regarde de plus près car pour l'instant LaTeX m'envoie balader pour une accolade en trop.

Code: Tout sélectionner
 Argument of \ProcessAsymptoteLine has an extra }.
<inserted text>
                \par
l.63 }


Et puis avec ça ce serait bien d'obtenir automatiquement la LARGEUR de l'image :roll:
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar GMaths » Mardi 02 Mars 2010, 19:58

J'ai le problème : cela fonctionnerait avec des figures tikz... et pas avec l'environnement asy ?
Je vais tester aussi... (mais seulement un peu... car je suis débordé)
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [asylatex] hauteur figure

Messagepar OG » Mardi 02 Mars 2010, 22:32

Bonsoir

C'est normal (réponse de prof). L'environnment asy est basé sur comments et est très chatouilleux, il n'accepte pas d'être en argument. Mis à part cela, j'ai recopié, adapté la solution de subfloat sans du tout comprendre (le prof en action donc). Comme je suis tex-incompétent, je n'arrive pas à faire passer l'argument t,T,c,b de \begin{machin}{t} blabla \end{machin} à alignevert (alignevert m'écrit option b unknow, using b instead, quel comique !, une histoire de cattruc ?)

Un expert TeX pourra certainement améliorer et faire un \begin{machin}[t,T,b ou c].
En attendant, j'ai défini 4 {t,T,c,b}alignevert environnements

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}
\newsavebox{\sfe@box}
\newenvironment{balignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[b]%
{\usebox{\sfe@box}}}
\newenvironment{Talignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[T]%
{\usebox{\sfe@box}}}
\newenvironment{talignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[t]%
{\usebox{\sfe@box}}}
\newenvironment{calignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[c]%
{\usebox{\sfe@box}}}
\makeatother


Code: Tout sélectionner
\begin{calignevert}
\begin{minipage}{\textwidth-\largeurimage-.5cm}
Voici le texte de l'exercice,
Voici le texte de l'exercice, Voici le texte de l'exercice, Voici le
texte de l'exercice, Voici le texte de l'exercice, 
\end{minipage}
\end{calignevert}
\hfill H
\begin{Talignevert}
\begin{minipage}{4cm}
\begin{asy}
size(4cm,0);
draw(unitcircle);
\end{asy}
\end{minipage}
\end{Talignevert}


O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [asylatex] hauteur figure

Messagepar GMaths » Mercredi 03 Mars 2010, 12:38

Merci Olivier de t'être penché sur le problème.

J'ai lu, pas testé (je le ferai plus tard)... et vais retourner à mes copies (urgentes !) pour laisser éventuellement des spécialistes $\TeX$ répondre à ta demande.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Hauteur d'une figure asylatex

Messagepar OG » Mercredi 03 Mars 2010, 13:44

J'ajoute que comme l'environnement asy est basé sur comments, qu'il ne faut absolument pas indenter \begin{asy} et \end{asy}.

Bon courage à Gaëtan pour ses copies.
O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Hauteur d'une figure asylatex

Messagepar GMaths » Vendredi 05 Mars 2010, 18:08

GMaths a écrit:Merci Olivier de t'être penché sur le problème.

J'ai lu, pas testé (je le ferai plus tard)...

Je viens de le faire avec ce qui suit.

Code: Tout sélectionner
% !TEX TS-program = pdflatex
% !TEX encoding = Latin1
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper,%
            landscape=false,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            headheight=15pt,%
            includeheadfoot]{geometry}
\usepackage{graphics,asymptote}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parindent}{0pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}
\newsavebox{\sfe@box}
\newenvironment{balignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[b]%
{\usebox{\sfe@box}}}
\newenvironment{Talignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[T]%
{\usebox{\sfe@box}}}
\newenvironment{talignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[t]%
{\usebox{\sfe@box}}}
\newenvironment{calignevert}{%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup\alignevert[c]%
{\usebox{\sfe@box}}}
\makeatother

\begin{document}

\setlength{\largeurimage}{4cm}
\begin{Talignevert}
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{Talignevert}
\hfill
\begin{Talignevert}
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(unitcircle,red);
\end{asy}
\end{minipage}
\end{Talignevert}

\begin{enumerate}
\item
\setlength{\largeurimage}{4cm}
\begin{Talignevert}%
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{Talignevert}
\hfill
\begin{Talignevert}
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(polygon(7),blue);
\end{asy}
\end{minipage}
\end{Talignevert}
\item Cela fonctionne bien, non ?
\end{enumerate}
\end{document}


Cela fonctionne, merci...
... et effectivement si un expert de TeX pouvait nous trouver un truc pour retrouver la syntaxe initiale... ce serait sympa.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Hauteur d'une figure asylatex

Messagepar fp » Samedi 06 Mars 2010, 10:44

GMaths a écrit:
GMaths a écrit:Merci Olivier de t'être penché sur le problème.

J'ai lu, pas testé (je le ferai plus tard)...

Je viens de le faire avec ce qui suit.

...

Cela fonctionne, merci...
... et effectivement si un expert de TeX pouvait nous trouver un truc pour retrouver la syntaxe initiale... ce serait sympa.



Je suis loin d'être un expert, mais je propose ceci :

Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper,%
            landscape=false,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            headheight=15pt,%
            includeheadfoot]{geometry}
\usepackage{graphics,asymptote}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parindent}{0pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}

\newsavebox{\sfe@box}
\newenvironment{alignementvert}[1][c]{%
\ifx#1b\gdef\place{0}\else\ifx#1c\gdef\place{1}\else\ifx#1t\gdef\place{2}\else\ifx#1T\gdef\place{3}\fi\fi\fi\fi%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup%
\ifcase\place
\alignevert[b]{\usebox{\sfe@box}}%
\or
\alignevert[c]{\usebox{\sfe@box}}%
\or
\alignevert[t]{\usebox{\sfe@box}}%
\or
\alignevert[T]{\usebox{\sfe@box}}%
\fi}
\makeatother


\begin{document}

\setlength{\largeurimage}{4cm}
\begin{alignementvert}[b]
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[b]
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(unitcircle,red);
\end{asy}
\end{minipage}
\end{alignementvert}

\begin{enumerate}
\item
\setlength{\largeurimage}{4cm}
\begin{alignementvert}[T]%
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[T]
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(polygon(7),blue);
\end{asy}
\end{minipage}
\end{alignementvert}
\item Cela fonctionne bien, non ?
\end{enumerate}
\end{document}


FP
fp
Giga-utilisateur
 
Messages: 752
Inscription: Mercredi 24 Février 2010, 08:04
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Hauteur d'une figure asylatex

Messagepar GMaths » Samedi 06 Mars 2010, 10:59

fp a écrit:Je suis loin d'être un expert, mais je propose ceci :

Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper,%
            landscape=false,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            headheight=15pt,%
            includeheadfoot]{geometry}
\usepackage{graphics,asymptote}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parindent}{0pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}

\newsavebox{\sfe@box}
\newenvironment{alignementvert}[1][c]{%
\ifx#1b\gdef\place{0}\else\ifx#1c\gdef\place{1}\else\ifx#1t\gdef\place{2}\else\ifx#1T\gdef\place{3}\fi\fi\fi\fi%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup%
\ifcase\place
\alignevert[b]{\usebox{\sfe@box}}%
\or
\alignevert[c]{\usebox{\sfe@box}}%
\or
\alignevert[t]{\usebox{\sfe@box}}%
\or
\alignevert[T]{\usebox{\sfe@box}}%
\fi}
\makeatother


\begin{document}

\setlength{\largeurimage}{4cm}
\begin{alignementvert}[b]
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[b]
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(unitcircle,red);
\end{asy}
\end{minipage}
\end{alignementvert}

\begin{enumerate}
\item
\setlength{\largeurimage}{4cm}
\begin{alignementvert}[T]%
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[T]
\begin{minipage}{\largeurimage}
\begin{asy}
size(4cm,0);
draw(polygon(7),blue);
\end{asy}
\end{minipage}
\end{alignementvert}
\item Cela fonctionne bien, non ?
\end{enumerate}
\end{document}


FP


Cela m'a l'air très bien : merci beaucoup.

Et je viens de réaliser que la minipage autour de l'environnement asy ne semble plus utile.
(Je ne sais plus quand et pourquoi... je l'avais ajoutée. Il faudra que je réessaie avec une figure tikz... et avec du texte au dessus et en dessous de la figure.)

Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper,%
landscape=false,%
hmargin={1cm,1cm},%
vmargin={1cm,1cm},%
headheight=15pt,%
includeheadfoot]{geometry}
\usepackage{graphics,asymptote}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parindent}{0pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% PLACEMENT VERTICAL DES IMAGES ET TABLEAUX %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Définition de la commande \alignevert (ajout du 28/03/09)
%%%% \alignevert[c]{objet} place le centre de l'objet au milieu d'un x
%%%% \alignevert[b]{objet} place le bas de l'objet sur la ligne de base
%%%% \alignevert[t]{objet} place le haut de l'objet sur la ligne de base
%%%% \alignevert[T]{objet} place le haut de l'objet au niveau du haut d'un H
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\largeurimage}
\setlength{\largeurimage}{5cm}
\makeatletter
\newlength{\temp@alignevert@length}
\newsavebox{\temp@alignevert@box}
\long\def\alignevert[#1]#2{%
\sbox{\temp@alignevert@box}{#2}%
\ifx#1c%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}/2*(-1)+0.5ex}%
\else\ifx#1t%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)}%
\else\ifx#1T%
\setlength{\temp@alignevert@length}{\heightof{\usebox\temp@alignevert@box}*(-1)+\heightof{I}}%
\else\ifx#1b%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\else\PackageWarning{alignevert}{option #1 unknown, using b instead}%
\setlength{\temp@alignevert@length}{\depthof{\usebox\temp@alignevert@box}}%
\fi\fi\fi\fi
\raisebox{\temp@alignevert@length}{\usebox\temp@alignevert@box}%
}

\newsavebox{\sfe@box}
\newenvironment{alignementvert}[1][c]{%
\ifx#1b\gdef\place{0}\else\ifx#1c\gdef\place{1}\else\ifx#1t\gdef\place{2}\else\ifx#1T\gdef\place{3}\fi\fi\fi\fi%
\setbox\sfe@box\hbox\bgroup\color@setgroup}%
{\color@endgroup\egroup%
\ifcase\place
\alignevert[b]{\usebox{\sfe@box}}%
\or
\alignevert[c]{\usebox{\sfe@box}}%
\or
\alignevert[t]{\usebox{\sfe@box}}%
\or
\alignevert[T]{\usebox{\sfe@box}}%
\fi}
\makeatother


\begin{document}

\setlength{\largeurimage}{4cm}
\begin{alignementvert}[b]
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[b]
\begin{asy}
size(4cm,0);
draw(unitcircle,purple);
\end{asy}
\end{alignementvert}

\begin{enumerate}
\item
\setlength{\largeurimage}{4cm}
\begin{alignementvert}[T]%
\begin{minipage}{\linewidth-\largeurimage-1cm}
\lipsum[0-1]
\end{minipage}
\end{alignementvert}
\hfill
\begin{alignementvert}[T]
\begin{asy}
size(4cm,0);
draw(polygon(9),orange);
\end{asy}
\end{alignementvert}
\item Cela fonctionne bien, non ?
\end{enumerate}
\end{document}
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 1 invité