2008-09-23 66 views
12

我有一個命令,其中包含一個includegraphics命令 - 我可以將圖像傳遞給我的命令,並且它會在實際包含圖像之前爲我執行一些標準格式。我通過這個命令包含的一些圖像小於\ textwidth,而其中一些更大。我想縮放較大的圖像降低到\文本寬度,而不是縮放較小的圖像了 - 這意味着我不能只是做向下縮放圖像,但不在乳膠

\includegraphics[width=\textwidth]{img} 

是否有指定maxwidth的方法嗎?或者,我可以得到圖像的寬度不知何故,所以我可以做這樣的事情

\ifthenelse{\imagewidth > \textwidth}{% 
    \includegraphics[width=\textwidth]{img}}{% 
    \includegraphics{img}} 

回答

16

以獲取圖像的寬度,你可以使用此代碼:

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

我希望這有助於!

+0

我不' t知道了多少次我看着\ settowidth,並決定它不會在圖像上出於某種原因 - 謝謝! – 2008-09-23 21:14:40

-3

通過CTAN手冊和谷歌搜索結果搜索幾分鐘後,我想我可以有把握地說,你想要做的是什麼要麼不可能要麼很辛苦。我唯一的建議是你有兩個命令,一個用於小圖像,另一個用於大型,或者一個命令帶有選項。

可能有辦法,但我把它留給其他S.O. LaTeX嚮導提供了更好的答案。

編輯:我錯了,見上文。

+0

我得出了同樣的結論 - 雖然除了如何獲得圖像的寬度外,我已經弄清楚了所有的事情,所以我真的希望能夠克服最後的障礙 – 2008-09-23 18:16:42

1

我喜歡任意縮放圖像向上或向下一點額外的參數,所以我的\ scalegraphics版本是這樣的:

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

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} 

如果你使用它的大部分按鍵可直接與\includegraphics使用的export封裝選項,例如鑰匙與你有關的,max width