Ridimensiona l'immagine verso il basso, ma non verso l'alto in lattice

StackOverflow https://stackoverflow.com/questions/122348

  •  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}}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top