Pregunta

Tengo un comando que incluye un comando de inclusión de gráficos: puedo pasar una imagen a mi comando y realizará un formato estándar antes de incluir la imagen.Algunas de las imágenes que incluyo mediante este comando son más pequeñas que extwidth, mientras que otras son más grandes.Me gustaría reducir la escala de las imágenes más grandes a extwidth, sin aumentar la escala de las imágenes más pequeñas; esto significa que no puedo simplemente hacer

\includegraphics[width=\textwidth]{img}

¿Hay alguna manera de especificar un ancho máximo?¿O puedo obtener el ancho de la imagen de alguna manera para poder hacer algo como

\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}
¿Fue útil?

Solución

Para obtener el ancho de la imagen puedes usar este código:

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

Podrías usar esto en el preámbulo del documento para crear un nuevo comando para establecer 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!

Otros consejos

Me gusta un parámetro adicional para, opcionalmente, reducir o aumentar un poco la imagen, por lo que mi versión de \scalegraphics se ve así:

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

El adjustbox El paquete es útil para esto.A continuación encontrará un breve ejemplo.Permite lo siguiente (además de recortar, recortar, agregar márgenes y escala relativa):

\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 usas el export opción de paquete la mayoría de sus claves se pueden usar directamente con \includegraphics.Por ejemplo, la clave relevante para usted, max width.

Si lo que quieres restringir no es una imagen sino una imagen independiente .tex archivo, puedes modificar ligeramente el de ChrisN. \scalegraphics a

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

y luego usarlo así

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

Y por supuesto, adjustbox como lo sugiere ted funcionará también:

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

Después de unos minutos de buscar en los manuales de CTAN y en los resultados de Google, creo que puedo decir con seguridad que lo que quieres hacer es imposible o muy difícil.Mi única recomendación es que tengas dos comandos, uno para imágenes pequeñas y otro para imágenes grandes, o un comando con una opción.

Puede que haya una manera, pero se lo dejo a otros S.O.Asistentes de LaTeX para dar una mejor respuesta.

Editar:Me equivoco, ver arriba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top