我怎样才能将图形(来自 \includegraphics)强制安装到 beamer 页面上?

我怎样才能将图形(来自 \includegraphics)强制安装到 beamer 页面上?

我正在尝试让 LaTeX 处理我的图形,以便它们保持纵横比,但在最大宽度和高度方面使图像仍然适合页面。 Pandoc 吐出应该执行此操作的 LaTeX 投影机代码,这看起来是正确的……但它不起作用。考虑:

\documentclass[14pt,aspectratio=169]{beamer}

\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother

\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}

\begin{document}

\begin{frame}{What are my lengths?}
  maxwidth = \the\maxwidth

  maxheight = \the\maxheight

  linewidth = \the\linewidth

  textheight = \the\linewidth

\end{frame}

\begin{frame}{Wide}
\fbox{\includegraphics{wide.png}}
\end{frame}


\begin{frame}{high}
\fbox{\includegraphics{high.png}}
\end{frame}

\end{document}

真正高大上的图片不太适合纳入tse,所以让我来描述一下它们:

$ file high.png wide.png 
high.png: PNG image data, 1000 x 10000, 8-bit colormap, non-interlaced
wide.png: PNG image data, 10000 x 1000, 8-bit colormap, non-interlaced

小问题是输出告诉我 maxwidth 和 maxheight 是 0pt。不重要,但我该如何打印它?

主要问题是高位数字没有缩小,而是低于应有的水平。这与\maxwidth和无关\maxheight,因为 得到的结果相同\setkeys{Gin}{width=8in,height=4in,keepaspectratio}

我如何哄骗投影仪中的图形保持其纵横比,但尝试尽可能地拉伸而不在 x 和 y 方向上溢出页面?(一如既往,感谢建议。)

高形象

答案1

我建议利用一些adjustbox的键:max widthmax height。它会按顺序测试尺寸,因此在某些情况下可能无法按预期工作。但是,编写自己的\includeimage{<img>}命令可以检查图像是横向还是纵向,并根据需要指定max widthmax height。由于您只指定要调整的单个长度,因此它将保持纵横比。

在此处输入图片描述

\documentclass{article}

\usepackage[export]{adjustbox}
\usepackage{xfp}

\newsavebox{\imgbox}

\newcommand{\includeimage}[1]{%
  \savebox{\imgbox}{\includegraphics{#1}}%
  \ifdim\fpeval{\wd\imgbox/\ht\imgbox}pt>1pt
    % Landscape image
    \includegraphics[max height=3em]{#1}%
  \else
    % Portrait image
    \includegraphics[max width=3em]{#1}%
  \fi
}

\setlength{\parindent}{0pt}

\begin{document}

\rule{5em}{1pt}% For reference

\includegraphics[width=5em,height=3em]{example-image}

\includegraphics[width=5em,max height=2em]{example-image} \rule{1pt}{2em}

\includegraphics[height=10em,max width=5em]{example-image}

\rule{5em}{1pt}% For reference

\bigskip

\includeimage{example-image} \rule{1pt}{3em}

\includeimage{example-image-9x16}

\rule{3em}{1pt}


\end{document}

以上输出中的规则仅供参考。

相关内容