
パッケージのドキュメントからgraphicx
:
keyval
パッケージ内で使用されるキーのほとんどは、パッケージによって提供されるgraphicx
コマンドを使用して設定することもできます。\setkeys
keyval
たとえば、現在のドキュメントに含まれるすべてのファイルをテキスト行の幅の 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}
出力あり
これは およびwidth
キーには機能しますheight
が、scale
キーには機能しないことに注意してください。これ自体は問題ではありません (scale
キーを個別に処理する方法があります)。ただし、他のどのキーに特別な処理が必要かを知りたいのです。そこで、私の質問は次のとおりです。
コマンドのどのキー\includegraphics
をグローバルに設定できませんか?
答え1
素晴らしいドキュメントですね:-)
一般的にキーの設定はマクロ定義を作成するだけなので、事前に設定できないものは\includegraphics
キーを処理する前に初期化されるものになります。コードを見ると(奇妙なことにドキュメントよりも明らかになっています)、関連する初期化は
\@tempswafalse
そして、そのブールフラグを使用するキーは と だけangle
ですscale
。
フラグの理由は、ほとんどのグラフィックス インクルード バックエンドがイメージを「ネイティブに」拡大縮小できるため、拡大縮小が単独で使用されると、バックエンド ドライバー コードに渡されますが、イメージがすでに回転されていて、回転されたイメージが拡大縮小されると、\includegraphics
基本的に基本的なイメージ インクルードの周囲に が挿入されるからです \scalebox{}{\rotatebox{...
。おそらく、スケールの例が機能するように別の方法で処理できたかもしれませんが、それはずっと昔のことです:-)
少し異なる理由clip
も記載する必要があります。
http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=graphics/2890