Usando setkeys para um gráfico específico - ou: Como definir opções para um gráfico específico em um comando ou macro?

Usando setkeys para um gráfico específico - ou: Como definir opções para um gráfico específico em um comando ou macro?

(A motivação para a minha pergunta é dada no final!)

Pergunta: Como posso definir chaves para as opções de includegraphicsem um comando separado, ou seja, não diretamente no gráfico que as utiliza? (Por exemplo, para que as mesmas opções possam ser usadas várias vezes, ou para que você possa simplesmente defini-las centralmente, em vez de na própria inclusão gráfica.)

Observe que graphicxpermite definir umpadrãopara essas opções é usado para todos os gráficos, a menos que você os substitua especificando novos. Isso é feito com o comando setkeys e tem a seguinte aparência:

\documentclass{scrartcl}
\usepackage{graphicx}

\setkeys{Gin}{width=4cm,height=4cm}

\begin{document}   
  \hspace*{-3cm}
  \includegraphics{example-image-a}
  \includegraphics[width=2cm]{example-image-b}
  \includegraphics[width=2cm,height=!]{example-image-c}
  \includegraphics[width=!,height=!]{example-image}
\end{document}

insira a descrição da imagem aqui

Assim, o primeiro gráfico que você vê usa onovopadrão de 4cm/4cm, enquanto os demais os substituem por valores individuais (w/h):

  • A: 4cm/4cm, o novo padrão
  • B: 2cm/4cm, porque a altura ainda é o novo padrão
  • C: 2cm/*, onde * é a altura na relação correta com a largura
  • imagem: */*, ou seja, as medidas originais do gráfico

Eu, entretanto, gostaria de usar a definição setkeys apenas para um gráfico específico! (É claro que eu poderia definir um novo padrão e usá-lo para todos os outros gráficos widthe heightwith !, mas isso obviamente não é uma solução aceitável.) Ou seja, eu façonãoquero que o padrão seja alterado, mas gostaria de poder usar esta definição apenas em um (qualquer) gráfico de minha escolha! Por exemplo, eu gostaria de poder fazer algo como

\setkeys{MyKeys}{width=4cm,height=4cm}
..
\includegraphics[MyKeys]{example-image-X}

Isso é possível, de alguma forma?

Motivação:

Eu gostaria de definir meu próprio pacote (ou seja, um arquivo sty) para slides do beamer que deveria ser flexível o suficiente para que, na maioria dos casos, as pessoas que o utilizam não precisem mais tocá-lo. Em vez disso, toda edição/individualização necessária deve ser feita em um arquivo de configuração separado. (Onde você pode, por exemplo, definir o título e o autor do slide de título.)

Uma daquelas coisas que deve ser configurada aí é o tamanho do gráfico que aparece no slide de título. Por isso,em princípio, o arquivo sty deve conter algo como: \includegraphics[\OptionsSpecifiedInConfigFile]{\LogoSpecifiedInConfigFile}. No entanto, essas opções (como width=2cm,height=3cm) não podem ser simplesmente armazenadas em um comando (como \OptionsSpecifiedInConfigFile), então preciso de uma solução diferente.

Eu sei que passar opções para o meu pacote também pode ser uma opção (o que eu já faço!), mas fazer isso para essas opções em particular não faz sentido, acredito.

Postagens relacionadas ao stackoverflow:

(Eles não me ajudaram a resolver meu problema, mas ainda parecem altamente relacionados, então os publiquei caso outros os considerem úteis.)

Obrigado pela ajuda!

Responder1

Se você quiser um padrão diferente para alguns casos, você pode definir um novo comando para esse

\newcommand*{\myincludegraphics}[2][]{\includegraphics[width=4cm,height=4cm, #1]{#2}}

Se você quiser salvar as opções em uma macro especial você precisa expandir a macro antes que ela seja passada para\includegraphics

\newcommand*{\OptionsSpecifiedInConfigFile}{width=4cm,height=4cm}
\expandafter\includegraphics\expandafter[\OptionsSpecifiedInConfigFile]{example-image-a}

informação relacionada