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}}
War es hilfreich?

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

ändern
\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

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top