J'ai créé une boite (avec tcolorbox) qui contient divers logos, tous dimensionnés à la main (car tous avec des proportions différentes).

Ces petits réglages à la main sont fastidieux, et j'aimerais redimensionner ce cadre globalement; autrement dit: existe-t-il une fonction «scale» capable de réaliser cette mise à l'échelle globale d'une série de commandes \includegraphics.

Elles sont actuellement séparées par des \hfill et parfois dans des \raisebox , mais il est facile de réduire le code par une simple succession de \includegraphics.

Le résultat actuel est visible ici: http://www.arasm-aos.fr/spip.php?page=article&id_article=67 , sous le titre «Partenaires»

(l'objectif serais d'en réduire la hauteur pour libérer de la place)

Posée 28 Fév '18, 20:31

joseph-tux's gravatar image

joseph-tux
42722450
Taux d'acceptation : 4%

Modifiée 28 Fév '18, 20:34


Des tentatives de solutions via le package tcolorbox, qui ne répondent finalement pas bien au problème.

1/ Si c'est toute la boite qui est à réduire, une possibilité est via l'option scale du package tcolorbox (voir § 10.7 de la documentation). Cela requiert, pour la boite, de ne pas utiliser le skin standard (mais par exemple le skin enhanced, qui a besoin de la librairie skins). Le contenu, mais aussi la boite, sont tous les deux réduits. Voir test 1.

2/ Si le contenu de la boite est à réduire, mais que la boite doit avoir une hauteur fixée, on peut utiliser l'option fit de tcolorbox. Cela requiert la librairie fitting (voir § 20.2 de la documentation). Voir test 2 (sans le fit algorithm=areasize, il réduit le texte mais pas les images... voir la documentation pour d'autres options de fit algorithm qui conviendraient peut-être mieux). Edit : en fait, cela ne conserve pas nécessairement les proportions des images (la doc dit d'ailleurs "The aspect ratio cannot be fully garanteed.").

Exemple (avec une image figure.jpg) :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{graphicx}
\usepackage{tcolorbox}
\tcbuselibrary{skins, fitting}

\begin{document}

\begin{tcolorbox}[title = Etat initial]
\includegraphics[width=5cm]{figure} \includegraphics[width=3cm]{figure}
\includegraphics[width=3cm]{figure} \includegraphics[width=3cm]{figure}
\includegraphics[width=4cm]{figure}
\end{tcolorbox}

\begin{tcolorbox}[title = Test 1, enhanced, scale=0.5]
\includegraphics[width=5cm]{figure} \includegraphics[width=3cm]{figure}
\includegraphics[width=3cm]{figure} \includegraphics[width=3cm]{figure}
\includegraphics[width=4cm]{figure}
\end{tcolorbox}

\begin{tcolorbox}[title= Test 2, fit to height=5cm, fit algorithm=areasize]
\includegraphics[width=5cm]{figure} \includegraphics[width=3cm]{figure}
\includegraphics[width=3cm]{figure} \includegraphics[width=3cm]{figure} 
\includegraphics[width=4cm]{figure}
\end{tcolorbox}
\end{document}
Lien permanent

Publiée 28 Fév '18, 22:46

Mathieu2L's gravatar image

Mathieu2L
316314
Taux d'acceptation : 75%

Modifiée 06 Mar '18, 02:44

C'est presque ça! cela réduit la box et toutes les images qu'elle contient ! Il ne manque que la possibilité de réduire la boite en hauteur et pas en largeur, tout en réduisant les images dans les 2 directions (les passages à la ligne sont automatiques)

Cette solution peut déjà bien dépanner dans l'urgence.

Une autre solution qu'elle m'inspire serait de mettre chaque icône dans une tcolorbox avec pour chacune un facteur d'échelle identique, les adaptations étant alors plus rapide ensuite.

(01 Mar '18, 02:46) joseph-tux joseph-tux's gravatar image

Je ne suis pas sur de bien comprendre. Est-ce bien ceci que vous voulez : réduire toutes les images d'un coup dans les deux directions, pour qu'elles conservent leur proportion (ce qui réduit la hauteur et la largeur occupées), tout en conservant la largeur initiale de la boite. On est d'accord dans ce cas qu'il restera "plein de place" vide sur la largeur... mais si j'ai bien compris, une image remontera alors automatiquement sur la ligne précédente si elle a la place de s'y mettre ? Si oui, une possibilité serait avec l'option fit de tcolorbox. Voir réponse modifiée (test 2).

(01 Mar '18, 17:26) Mathieu2L Mathieu2L's gravatar image

@Mathieu2L C'est exactement ce que je voulais. je vais explorer votre solution dés que possible (en attendant, vim m'a permis d'ajuster assez rapidement l'ensemble des logos. Pour éviter une dernière ligne trop aérée, il m'a ensuite suffit de placer une ligne vide (un retour à la ligne) devant une ou deux instructions \includegraphics ) Je reviendrais vous informer de mon expérience avec "fit"

Le résultat est visible ici

(05 Mar '18, 18:16) joseph-tux joseph-tux's gravatar image

Jusqu'ici, échecs:

Pour agrandir la boite avec fit, le contenu ne change pas, même disposition et mêmes dimensions des logos.

Pour rétrécir en hauteur, la disposition de change pas, mais les logos sont ajustés en hauteur, ce qui donne une déformation par étirement horizontal.

L'option scale proportionne toute la boite et son contenu, sans déformation, mais évidemment, la largeur est rétrécie en proportion, et c'est bien là mon problème: déformer la boite en hauteur, pas en largeur et ajuster chaque image en proportion (de la surface, i.e de la hauteur et de la largeur).

(05 Mar '18, 21:52) joseph-tux joseph-tux's gravatar image

Je me rend compte que ma question serait plutôt:

comment créer une commande \includegraphics qui ajusterait automatiquement ses dimensions pour remplir tout l'espace disponible (variable selon la tcolorbox), ou bien pour répondre à un facteur d'échelle commun ?

(05 Mar '18, 21:58) joseph-tux joseph-tux's gravatar image

Réponse au commentaire "échecs". Effectivement :

  • fit pour agrandir la boite ne donne rien de concluant ;

  • fit pour rétrécir produit un résultat... mais je n'avais pas remarqué qu'il ne conservait pas exactement les proportions (la doc dit d'ailleurs "The aspect ratio cannot be fully garanteed."). En revanche, dans le test que je fais, la disposition des images changent.

  • pour scale, on est d'accord.

(06 Mar '18, 02:36) Mathieu2L Mathieu2L's gravatar image

Autre piste, qui répond au "facteur d'échelle commun" (mais j'ignore comment il interagira avec le dimensionnement manuel de vos images).

On peut redimensionner globalement plusieurs \includegraphics. Par exemple : que donne \setkeys{Gin}{scale=0.5} dans votre tcolorbox ?

(voir docu du pakage: Here Gin is the name used for the keyval keys associated with 'Graphics inclusion'. All following \includegraphicscommands (within the same group or environment) will act as if [scale=0.5] had been speci ed, in addition to any other key settings actually given in the optional argument.)

(06 Mar '18, 02:41) Mathieu2L Mathieu2L's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.