选择\textwidth 或\texheight 根据标准

选择\textwidth 或\texheight 根据标准

我有不同长宽比的图片。我想在插入的每张图片中保留长宽比。

作为一个选择,\includegraphics我会有

height = 0.6\textheight

如果调用\textwidth该选项时图像的宽度大于 0.7* ,并且height = 0.6\textheight

width = 0.7\textwidth

如果调用\textwidth该选项时图像的宽度小于或等于 0.7* 。height = 0.6\textheight

有可能得到自动地

PS我希望我的问题有意义。

答案1

进行必要的测试以确保不超出文本宽度:

\documentclass{article}
\usepackage{graphicx}

\newsavebox{\svendbox}

\newcommand{\svendincludegraphics}[2][]{%
  \sbox{\svendbox}{\includegraphics[height=0.6\textheight,#1]{#2}}%
  \ifdim\wd\svendbox>0.7\textwidth
    \ifdim\wd\svendbox>\textwidth
      \resizebox{\textwidth}{!}{\usebox{\svendbox}}%
    \else
      \usebox{\svendbox}%
    \fi
  \else
    \resizebox{0.7\textwidth}{!}{\usebox{\svendbox}}%
  \fi
}

\begin{document}

\noindent
\svendincludegraphics{example-image}

\noindent
\svendincludegraphics[angle=90]{example-image}

\end{document}

如您所见,您还可以为指定附加键\includegraphics

在此处输入图片描述

答案2

这是一个解决方案。它实现了 Zarko 在其评论中所建议的功能。

\newbox\mybox
\def\myincludegraphics#1{
    \setbox\mybox\hbox{\includegraphics{#1}
    \ifdim\wd\mybox>0.7\textwidth\relax
        \includegraphics[height=0.6\textheight]{#1}
    \else
        \includegraphics[width=0.7\textwidth]{#1}
    \fi
}

答案3

我的回答晚了,但无论如何,让我详细说明一下我的评论。这比其他的更粗鲁,但我们在这里:

\documentclass{article}
\usepackage{graphicx}
\newsavebox\imagesize
\newlength\imagewidth
\newlength\widthtreshold
\setlength\widthtreshold{0.7\textwidth}

\begin{document}
\sbox\imagesize{\includegraphics[width=0.5\textwidth]{example-image}}
\settowidth\imagewidth{\usebox{\imagesize}}

\ifdim\imagewidth<\widthtreshold
    \includegraphics{example-image-a}
\else
    \includegraphics{example-image-b}
\fi

\medskip
\sbox\imagesize{\includegraphics[width=0.31\textwidth]{example-image}}
\settowidth\imagewidth{\usebox{\imagesize}}

\ifdim\imagewidth<\widthtreshold
    \includegraphics{example-image-a}
\else
    \includegraphics{example-image-b}
\fi
\end{document}

在此处输入图片描述

我没有向图像添加图像的大小(它们保持很小)。如果图像宽度短于0.7\textwidth显示的图像 A,否则显示图像 B。

相关内容