Setkeys für eine bestimmte Grafik verwenden – oder: Wie definiere ich Optionen für eine bestimmte Grafik in einem Befehl oder Makro?

Setkeys für eine bestimmte Grafik verwenden – oder: Wie definiere ich Optionen für eine bestimmte Grafik in einem Befehl oder Makro?

(Die Begründung meiner Frage steht am Ende!)

Frage: Wie kann ich Tasten für die Optionen includegraphicsin einem eigenen Befehl definieren, also nicht direkt in der Grafik, die sie verwendet? (Zum Beispiel, damit die gleichen Optionen mehrfach verwendet werden können, oder damit man sie einfach zentral definieren kann und nicht bei der Grafikeinbindung selbst.)

Beachten Sie, dass graphicxSie damit eineStandardfür diese Optionen, die für alle Grafiken verwendet werden, sofern Sie sie nicht durch die Angabe neuer überschreiben. Dies geschieht mit dem Befehl setkeys und sieht folgendermaßen aus:

\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}

Bildbeschreibung hier eingeben

Die erste Grafik, die Sie sehen, verwendet also dieneuStandard von 4cm/4cm, während die Anderen diese mit individuellen Werten (B/H) überschreiben:

  • A: 4cm/4cm, der neue Standard
  • B: 2cm/4cm, da die Höhe immer noch der neue Standard ist
  • C: 2cm/*, wobei * die Höhe im richtigen Verhältnis zur Breite ist
  • image: */*, also die Originalmaße der Grafik

Ich möchte jedoch die Setkeys-Definition nur für eine bestimmte Grafik verwenden! (Natürlich könnte ich einen neuen Standard festlegen und für jede andere Grafik widthund heightmit verwenden !, aber das ist offensichtlich keine akzeptable Lösung.) D. h. ichnichtIch möchte den Standard ändern lassen, aber ich möchte diese Definition nur in einer (beliebigen) Grafik meiner Wahl verwenden können! Ich möchte beispielsweise in der Lage sein, etwas wie

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

Ist das irgendwie möglich?

Motivation:

Ich möchte ein eigenes Paket (also eine Sty-Datei) für Beamer-Folien definieren, das flexibel genug sein sollte, damit die Benutzer es in den meisten Fällen nicht mehr anfassen müssen. Stattdessen sollten alle notwendigen Bearbeitungen/Individualisierungen in einer separaten Konfigurationsdatei vorgenommen werden. (Dort können Sie beispielsweise den Titel und den Autor für die Titelfolie definieren.)

Eines der Dinge, die dort konfiguriert werden sollten, ist die Größe der Grafik, die auf der Titelfolie erscheint.grundsätzlich, die sty-Datei sollte etwa Folgendes enthalten: \includegraphics[\OptionsSpecifiedInConfigFile]{\LogoSpecifiedInConfigFile}. Diese Optionen (wie width=2cm,height=3cm) können jedoch nicht einfach in einem Befehl (wie ) gespeichert werden \OptionsSpecifiedInConfigFile, daher benötige ich eine andere Lösung.

Mir ist klar, dass auch die Weitergabe von Optionen an mein Paket eine Option sein könnte (was ich ja bereits tue!), aber gerade für diese Optionen ist das meiner Meinung nach nicht sinnvoll.

Verwandte Beiträge von Stackoverflow:

(Sie haben mir zwar nicht bei der Lösung meines Problems geholfen, scheinen aber dennoch stark damit zusammenzuhängen, daher habe ich sie gepostet, für den Fall, dass andere sie für nützlich erachten.)

Ich danke Ihnen für Ihre Hilfe!

Antwort1

Wenn Sie für einige Fälle eine andere Vorgabe wünschen, können Sie einen neuen Befehl dafür definieren.

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

Wenn Sie die Optionen in einem speziellen Makro speichern möchten, müssen Sie das Makro expandieren, bevor es an\includegraphics

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

verwandte Informationen