2008-09-23 18 views
12

Tengo un comando que incluye un comando includegraphics - Puedo pasar una imagen a mi comando, y me hará un formato estándar antes de incluir realmente la imagen. Algunas de las imágenes que estoy incluyendo a través de este comando son más pequeñas que \ textwidth, mientras que algunas son más grandes. Me gustaría escalar las imágenes más grandes hasta \ textwidth, aunque no escalar las imágenes más pequeñas - esto significa que no puedo acaba de hacerEscala la imagen hacia abajo, pero no hacia arriba en latex

\includegraphics[width=\textwidth]{img} 

¿Hay una manera de especificar un maxwidth? O bien, puedo conseguir el ancho de la imagen de alguna manera lo que puede hacer algo como

\ifthenelse{\imagewidth > \textwidth}{% 
    \includegraphics[width=\textwidth]{img}}{% 
    \includegraphics{img}} 

Respuesta

16

para obtener el ancho de la imagen que puede utilizar este código:

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

usted podría utilizar esto en el preámbulo del documento para crear un nuevo comando para configurar automáticamente el ancho:

\usepackage{graphicx} 
\usepackage{calc} 

\newlength{\imgwidth} 

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

y luego, en su documento:

\scalegraphics{img} 

¡Espero que esto ayude!

+0

No lo sé Sé cuántas veces miré \ settowidth y decidí que no funcionaría en las imágenes por alguna razón. ¡Gracias! –

+0

Recomendaría también agregar keepaspectrati o como uno de los argumentos para includgraphics. Como su nombre lo dice, mantiene la relación de aspecto de la imagen cuando se escala a una especificada con. Por ejemplo, \ includegraphics [width = \ imgwidth, keepaspectratio] {# 1} – mxg

-3

Después de unos minutos de búsqueda a través de manuales CTAN y los resultados de Google, creo que puedo decir con seguridad que lo que quiere hacer es ya sea imposible o muy difícil. Mi única recomendación es que tenga dos comandos, uno para imágenes pequeñas y otro para grande, o un comando con una opción.

Puede haber una manera, pero lo dejo a otros S.O. Asistentes LaTeX para proporcionar una mejor respuesta.

Editar: Estoy equivocado, ver más arriba.

+0

Llegué a la misma conclusión, aunque he obtenido todo resuelto, excepto cómo obtener el ancho de la imagen, así que realmente espero poder superar el último obstáculo. –

1

me gusta un parámetro adicional para ampliar opcionalmente la imagen hacia abajo o hacia arriba un poco, por lo que mi versión de \ scalegraphics se parece a esto:

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

El paquete adjustbox es muy útil para esto. A continuación encontrará un breve ejemplo. Permite a los siguientes (además de triming, recorte, añadiendo márgenes y escalado relativo:.

\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 se utiliza la opción export paquete de la mayor parte de sus teclas se pueden utilizar directamente con \includegraphics por ejemplo la clave relevante para usted, max width

Cuestiones relacionadas