Question

J'ai une commande qui inclut une commande includegraphics. Je peux transmettre une image à ma commande. Elle effectuera un formatage standard avant l'inclusion de l'image. Certaines des images que j'inclus via cette commande sont plus petites que \ textwidth, alors que d'autres sont plus grandes. Je voudrais redimensionner les grandes images jusqu'à \ textwidth, sans les redimensionner - cela veut dire que je ne peux pas simplement faire

\includegraphics[width=\textwidth]{img}

Existe-t-il un moyen de spécifier une largeur maximale? Ou puis-je obtenir la largeur de l'image en quelque sorte afin que je puisse faire quelque chose comme

\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}
Était-ce utile?

La solution

Pour obtenir la largeur de l'image, vous pouvez utiliser ce code:

\newlength{\imgwidth}
\settowidth{\imgwidth}{\includegraphics{img}}

Vous pouvez l'utiliser dans le préambule du document pour créer une nouvelle commande permettant de définir automatiquement la largeur:

\usepackage{graphicx}
\usepackage{calc}

\newlength{\imgwidth}

\newcommand\scalegraphics[1]{%   
    \settowidth{\imgwidth}{\includegraphics{#1}}%
    \setlength{\imgwidth}{\minof{\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#1}%
}

et ensuite, dans votre document:

\scalegraphics{img}

J'espère que cela aide!

Autres conseils

J'aime bien un paramètre supplémentaire pour éventuellement réduire l'image vers le bas ou vers le bas, de sorte que ma version de \ scalegraphics ressemble à ceci:

\newcommand\scalegraphics[2][]{%
    \settowidth{\imgwidth}{\includegraphics{#2}}%
    \setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#2}%
}

Le package adjustbox est utile pour cela. Vous trouverez ci-dessous un court exemple. Cela permet:

\documentclass[a4paper]{article}


\usepackage[demo]{graphicx}
\usepackage[export]{adjustbox}

\begin{document}

\adjustbox{max width=\linewidth}{\includegraphics[width=.5\linewidth,height=3cm]{}}

\adjustbox{max width=\linewidth}{\includegraphics[width=2\linewidth,height=3cm]{}}

\includegraphics[width=2\linewidth,height=3cm,max width=\linewidth]{}
\end{document}

Si vous utilisez l'option de package export , la plupart de ses clés peuvent être utilisées directement avec \ includegraphics . Par exemple, la clé vous concernant, largeur maximale .

Si ce que vous voulez contraindre n'est pas une image mais un fichier .tex autonome, vous pouvez légèrement modifier le \ scalegraphics de ChrisN en

.
\newlength{\inputwidth}
\newcommand\maxwidthinput[2][\linewidth]{%   
    \settowidth{\inputwidth}{#2}%
    \setlength{\inputwidth}{\minof{\inputwidth}{#1}}%
    \resizebox{\inputwidth}{!}{#2}
}

et ensuite l'utiliser comme si

\maxwidthinput{\input{standalone}}
\maxwidthinput[0.5\textwidth]{\input{standalone}}

Et bien sûr, adjustbox suggéré par ted fonctionnera également:

\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}

Après quelques minutes de recherche dans les manuels CTAN et les résultats Google, je pense pouvoir dire en toute sécurité que ce que vous voulez faire est impossible ou très difficile. Ma seule recommandation est que vous ayez deux commandes, une pour les petites images et une pour les grandes, ou une commande avec une option.

Il y a peut-être un moyen, mais je le laisse à d'autres S.O. Les experts de LaTeX fourniront une meilleure réponse.

Édition: je me trompe, voir ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top