
De la documentación del graphicx
paquete:
La mayoría de las
keyval
claves utilizadas en elgraphicx
paquete también se pueden configurar mediante el comando\setkeys
proporcionado por elkeyval
paquete.Por ejemplo, supongamos que desea que todos los archivos que se incluirán en el documento actual se escalen al 75% del ancho de las líneas de texto, entonces se podría ejecutar el siguiente comando:
\setkeys{Gin}{width=0.75\textwidth}
Este
‘Gin’
es el nombre utilizado para laskeyval
claves asociadas con 'Inclusión de gráficos'. Todos\includegraphics
los comandos siguientes (dentro del mismo grupo o entorno) actuarán como si[width=0.75\textwidth]
se hubieran especificado, además de cualquier otra configuración clave proporcionada en el argumento opcional.
Estoy intentando usar esto para crear un argumento que acepte claves usando el pgfkeys
paquete y pase las que no reconoce a un \includegraphics
comando. Aquí hay un ejemplo de funcionamiento de un juguete:
\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}
con salida
Tenga en cuenta que esto funciona para las claves width
y height
, pero no para la scale
clave. Esto no es un problema en sí mismo (tengo un método para manejar la scale
clave por separado), pero me gustaría saber qué otras claves requieren un tratamiento especial. De ahí mi pregunta:
¿Qué claves del \includegraphics
comando no se pueden configurar globalmente?
Respuesta1
Documentación brillante, ¿no? :-)
En general, configurar claves consiste más o menos en hacer definiciones de macros, por lo que las que no puede configurar de antemano son las que se inicializan \includegraphics
antes de que procese las claves. Mirando el código (extrañamente más revelador que la documentación), la única inicialización relevante es
\@tempswafalse
y las claves que usan ese indicador booleano son justas angle
y scale
.
El motivo de la bandera es que la mayoría de los back-ends de inclusión de gráficos pueden escalar la imagen "de forma nativa", por lo que si la escala se usa por sí sola, se pasa al código del controlador del back-end, pero si la imagen ya se ha girado y luego se gira La imagen se escala, \includegraphics
esencialmente inserta una \scalebox{}{\rotatebox{...
inclusión alrededor de la imagen básica. Quizás podría haberse manejado de otra manera para que su ejemplo de escala funcione, pero fue hace mucho tiempo :-)
Por razones ligeramente diferentes clip
también deben enumerarse, consulte
http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=graphics/2890