Ridimensiona l'immagine verso il basso, ma non verso l'alto in lattice
-
02-07-2019 - |
Domanda
Ho un comando che include un comando includeegraphics: posso passare un'immagine al mio comando e farà una formattazione standard per me prima di includere effettivamente l'immagine. Alcune delle immagini che sto includendo tramite questo comando sono più piccole di \ textwidth, mentre altre sono più grandi. Vorrei ridimensionare le immagini più grandi fino a \ textwidth, senza ridimensionare le immagini più piccole - questo significa che non posso semplicemente
\includegraphics[width=\textwidth]{img}
C'è un modo per specificare una maxwidth? Oppure, posso ottenere la larghezza dell'immagine in qualche modo in modo da poter fare qualcosa del genere
\ifthenelse{\imagewidth > \textwidth}{%
\includegraphics[width=\textwidth]{img}}{%
\includegraphics{img}}
Soluzione
Per ottenere la larghezza dell'immagine puoi usare questo codice:
\newlength{\imgwidth}
\settowidth{\imgwidth}{\includegraphics{img}}
Puoi usarlo nel preambolo del documento per creare un nuovo comando per impostare automaticamente la larghezza:
\usepackage{graphicx}
\usepackage{calc}
\newlength{\imgwidth}
\newcommand\scalegraphics[1]{%
\settowidth{\imgwidth}{\includegraphics{#1}}%
\setlength{\imgwidth}{\minof{\imgwidth}{\textwidth}}%
\includegraphics[width=\imgwidth]{#1}%
}
e quindi, nel tuo documento:
\scalegraphics{img}
Spero che questo aiuti!
Altri suggerimenti
Mi piace un parametro aggiuntivo per ridimensionare facoltativamente l'immagine verso il basso o verso l'alto, quindi la mia versione di \ scalegraphics è simile a questa:
\newcommand\scalegraphics[2][]{%
\settowidth{\imgwidth}{\includegraphics{#2}}%
\setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
\includegraphics[width=\imgwidth]{#2}%
}
Il pacchetto Adjustbox
è utile per questo. Di seguito troverai un breve esempio. Consente quanto segue (oltre a tagliare, ritagliare, aggiungere margini e ridimensionamento 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}
Se si utilizza l'opzione del pacchetto export
, la maggior parte delle sue chiavi può essere utilizzata direttamente con \ includegraphics
. Per esempio, la chiave che ti interessa, larghezza massima
.
Se ciò che si desidera limitare non è un'immagine ma un file .tex
autonomo, è possibile modificare leggermente il \ scalegraphics
di ChrisN in
\newlength{\inputwidth}
\newcommand\maxwidthinput[2][\linewidth]{%
\settowidth{\inputwidth}{#2}%
\setlength{\inputwidth}{\minof{\inputwidth}{#1}}%
\resizebox{\inputwidth}{!}{#2}
}
e quindi usalo in questo modo
\maxwidthinput{\input{standalone}}
\maxwidthinput[0.5\textwidth]{\input{standalone}}
E ovviamente, adjustbox
come suggerito da ted funzionerà anche:
\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}
Dopo alcuni minuti di ricerca tra i manuali CTAN e i risultati di Google, penso di poter tranquillamente affermare che ciò che vuoi fare è impossibile o molto difficile. La mia unica raccomandazione è di avere due comandi, uno per immagini piccole e uno per immagini grandi o uno con un'opzione.
Potrebbe esserci un modo, ma lascio ad altri S.O. Procedure guidate LaTeX per fornire una risposta migliore.
Modifica: sbaglio, vedi sopra.