ラテックスでは画像を縮小しますが、拡大はしません

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

  •  02-07-2019
  •  | 
  •  

質問

includegraphics コマンドを含むコマンドがあります。コマンドに画像を渡すと、実際に画像を含める前に標準的な書式設定が行われます。このコマンドで含める画像の中には extwidth より小さいものもありますが、大きいものもあります。小さい画像を拡大せずに、大きい画像を extwidth まで縮小したいのですが、これは単に行うことができないことを意味します

\includegraphics[width=\textwidth]{img}

最大幅を指定する方法はありますか?または、何らかの方法で画像の幅を取得して、次のようなことを行うことはできますか?

\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}
役に立ちましたか?

解決

画像の幅を取得するには、次のコードを使用できます。

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

これをドキュメントのプリアンブルで使用して、幅を自動的に設定する新しいコマンドを作成できます。

\usepackage{graphicx}
\usepackage{calc}

\newlength{\imgwidth}

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

そして、文書内で次のようにします。

\scalegraphics{img}

これがお役に立てば幸いです!

他のヒント

私はオプションで画像を少し縮小または拡大するための追加パラメーターが気に入っているので、私のバージョンの \scalegraphics は次のようになります。

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

adjustbox パッケージはこれに役立ちます。以下に短い例を示します。これにより、次のことが可能になります (トリミング、クリッピング、マージンの追加、および相対的なスケーリングの他に:

\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}

を使用する場合は、 export パッケージ オプションのキーのほとんどは直接使用できます。 \includegraphics. 。たとえば、あなたに関連するキー、 max width.

拘束したいのが画像ではなくスタンドアロンの場合 .tex ファイルを少し変更することができます。 \scalegraphics

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

そしてそれを次のように使用します

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

そしてもちろん、 adjustbox ted が提案したように、同様に機能します。

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

CTAN マニュアルと Google の結果を数分間検索した結果、あなたがやりたいことは不可能か非常に難しいと言えると思います。私が唯一お勧めするのは、小さい画像用と大きい画像用の 2 つのコマンドを用意するか、1 つのコマンドにオプションを付けることです。

何か方法があるかもしれませんが、他のS.O.に任せます。LaTeX ウィザードを使用すると、より適切な答えが得られます。

編集:私は間違っています。上記を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top