
從包的文檔中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