`\includegraphics` 的哪些参数不能预先设置?

`\includegraphics` 的哪些参数不能预先设置?

从包的文档中graphicx

keyval包中使用的大多数键也可以使用该包提供的graphicx命令进行设置。\setkeyskeyval

例如,假设您希望将当前文档中包含的所有文件缩放为文本行宽度的 75%,那么可以发出以下命令:

\setkeys{Gin}{width=0.75\textwidth} 

这是与“图形包含”相关的键 ‘Gin’的名称。除了可选参数中实际给出的任何其他键设置外,所有后续命令(在同一组或环境中)都将像已指定一样运行。keyval\includegraphics[width=0.75\textwidth]

我尝试使用它来创建一个参数,该参数使用pgfkeys包接受键并将其无法识别的键传递给\includegraphics命令。这是一个玩具工作示例:

\documentclass[convert]{standalone}
\usepackage{graphicx,pgfkeys}

\newcommand{\mykeyset}[1]{\pgfqkeys{/me}{#1}}

\mykeyset{graphic options/.code={}}
\mykeyset{set graphic option/.style={graphic options/.append code=#1}}

%Set up a handler for unknown keys
\mykeyset{.unknown/.code = %
    {%
        \edef\unknownkey{\pgfkeyscurrentname}%
        \mykeyset{set graphic option/.expand once = {\expandafter\setkeys\expandafter{\expandafter G\expandafter i\expandafter n\expandafter}\expandafter{\unknownkey=#1}}}%
    }%
}

\newcommand{\myincludegraphics}[2][]{\begingroup%
    \mykeyset{#1}%
    \mykeyset{graphic options}%
    \includegraphics{#2}%
    \endgroup%
}

\begin{document}
\myincludegraphics[width = 5cm, height = 8cm]{example-image}
\myincludegraphics[scale=0.5]{example-image}
\myincludegraphics{example-image}
\end{document}

带输出

在此处输入图片描述

请注意,这适用于widthheight键,但不适用于scale键。这本身不是问题——我有一种scale单独处理键的方法——但我想知道哪些其他键需要特殊处理。因此,我的问题是:

哪些命令键\includegraphics不能被全局设置?

答案1

非常出色的文档不是吗:-)

一般来说,设置键或多或少只是进行宏定义,因此您无法提前设置的键是在\includegraphics处理键之前初始化的键。查看代码(奇怪的是比文档更有启发性),唯一相关的初始化是

   \@tempswafalse

并且使用该布尔标志的键只是anglescale

标记的原因是大多数图形包含后端可以“本机”缩放图像,因此如果单独使用缩放,它将被传递给后端驱动程序代码,但如果图像已经旋转,然后旋转后的图像被缩放,则\includegraphics本质上会在基本图像包含周围插入一个 \scalebox{}{\rotatebox{...。也许可以以不同的方式处理它,以便您的缩放示例可以工作,但那是很久以前的事了:-)

对于略有不同的原因clip也应列出,请参阅

http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=graphics/2890

相关内容