我希望将我使用的超出页面文本宽度的图像缩小到文本宽度的一半。不大于文本宽度的图像不需要缩放。我有一个 markdown 文档,我正在使用 pandoc 将其转换为 html 和 pdf。
以下代码位于序言中。
\usepackage{graphicx}
\makeatletter
\def\maxwidth{
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi}
\makeatother
\let\Oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}}
我使用什么语法才能使 maxwidth = x * \linewidth 其中 x = .5(或其他数字)?这是代码块中的第 5 行。
答案1
如果你想调整大小到一半,\linewidth
如果它比那么宽,那么只需在前面\linewidth
添加一个0.5
\linewidht
然后条款:
\usepackage{graphicx}
\makeatletter
\def\maxwidth{%
\ifdim\Gin@nat@width>\linewidth
0.5\linewidth
\else
\Gin@nat@width
\fi}
\makeatother
\let\Oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}}
%
后面也应该有一个{
,否则你会在那里得到一个空格,这可能会引起麻烦。
请注意,该adjustbox
包添加了一个max width
键,并且还允许使用原始宽度的\width
广告\adjincludegraphics
有关此内容,请参阅我的回答包括图形最大宽度。
答案2
没有必要重新\includegraphics
定义
\makeatletter
\setkeys{Gin}{width=\ifdim\Gin@nat@width>\linewidth
0.5\linewidth
\else
\Gin@nat@width
\fi}
\makeatother
在序言中应该使所有图形包含都尊重该缩放比例。
答案3
以下重新定义\includegraphics
允许这样做:
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\makeatletter
\let\old@includegraphics\includegraphics
\renewcommand{\includegraphics}[2][,]{%
\setbox9=\hbox{\old@includegraphics[#1]{#2}}%
\ifdim\wd9>\textwidth
\old@includegraphics[#1,width=.5\textwidth]{#2}%
\else
\old@includegraphics[#1]{#2}%
\fi%
}
\makeatother
\begin{document}
\noindent\rule{\textwidth}{1pt} \par
\noindent\includegraphics[width=.8\textwidth,height=50pt]{example-image-a}\par
\noindent\includegraphics[width=1.1\textwidth,height=50pt]{example-image-a} \par
\noindent\rule[1ex]{.5\textwidth}{1pt}
\end{document}