Stufenbild nach unten, aber nicht bis in Latex
-
02-07-2019 - |
Frage
Ich habe einen Befehl, der einen include Befehl enthält - ich ein Bild zu meinem Befehl passieren kann, und es wird, bevor sie tatsächlich darunter das Bild für mich einige Standardformatierung tun. Einige der Bilder, die ich über diesen Befehl einschließlich kleiner als \ textwidth, während einige größer sind. Ich möchte die Bilder größer bis \ textwidth skalieren, die zwar nicht die kleineren Bilder Upscaling - das bedeutet, ich kann nicht einfach tun
\includegraphics[width=\textwidth]{img}
Gibt es eine Möglichkeit, eine maxwidth angeben? Oder kann ich die Breite des Bildes erhalten irgendwie so ich so etwas wie
tun können\ifthenelse{\imagewidth > \textwidth}{%
\includegraphics[width=\textwidth]{img}}{%
\includegraphics{img}}
Lösung
Um die Breite des Bildes erhalten können Sie diesen Code verwenden:
\newlength{\imgwidth}
\settowidth{\imgwidth}{\includegraphics{img}}
Sie können dies in der Präambel des Dokuments verwenden, um einen neuen Befehl zu erstellen, um automatisch die Breite festgelegt:
\usepackage{graphicx}
\usepackage{calc}
\newlength{\imgwidth}
\newcommand\scalegraphics[1]{%
\settowidth{\imgwidth}{\includegraphics{#1}}%
\setlength{\imgwidth}{\minof{\imgwidth}{\textwidth}}%
\includegraphics[width=\imgwidth]{#1}%
}
und dann, in Ihrem Dokument:
\scalegraphics{img}
Ich hoffe, das hilft!
Andere Tipps
Ich mag einen zusätzlichen Parameter für optional das Bild nach oben oder unten ein wenig Skalierung, so dass meine Version von \ Scalegraphics sieht wie folgt aus:
\newcommand\scalegraphics[2][]{%
\settowidth{\imgwidth}{\includegraphics{#2}}%
\setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
\includegraphics[width=\imgwidth]{#2}%
}
Die adjustbox
Paket ist sehr nützlich für diese. Im Folgenden finden Sie ein kurzes Beispiel finden. Es ermöglicht die folgende (neben triming, Clipping, das Hinzufügen Margen und relative Skalierung:
\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}
Wenn Sie die export
Paketoption meisten seiner Tasten können direkt mit \includegraphics
verwendet werden. Zum Beispiel ist der Schlüssel für Sie relevant sind, max width
.
Wenn das, was Sie einschränken wollen nicht ein Bild, sondern eine eigenständige .tex
-Datei können Sie leicht ChrisN des \scalegraphics
zu
\newlength{\inputwidth}
\newcommand\maxwidthinput[2][\linewidth]{%
\settowidth{\inputwidth}{#2}%
\setlength{\inputwidth}{\minof{\inputwidth}{#1}}%
\resizebox{\inputwidth}{!}{#2}
}
und dann verwenden, wie so
\maxwidthinput{\input{standalone}}
\maxwidthinput[0.5\textwidth]{\input{standalone}}
Und natürlich adjustbox
wie ted vorgeschlagen funktioniert auch:
\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}
Nach einigen Minuten des Suchens durch CTAN Handbücher und Google Ergebnisse, ich glaube, ich kann sicher sagen, dass Sie etwas zu tun ist entweder unmöglich oder sehr schwer. Meine einzige Empfehlung ist, dass Sie zwei Befehle, ein für kleine Bilder und einen für großen, oder einen Befehl mit einer Option.
Es kann ein Weg sein, aber ich überlasse es anderen S.O. LaTeX-Assistenten eine bessere Antwort zu geben.
Edit: Ich bin falsch, siehe oben
.