Welche Argumente von `\includegraphics` können nicht im Voraus festgelegt werden?

Welche Argumente von `\includegraphics` können nicht im Voraus festgelegt werden?

Aus der Dokumentation des graphicxPakets:

Die meisten der keyvalim Paket verwendeten Schlüssel können auch mit dem vom Paket bereitgestellten graphicxBefehl festgelegt werden .\setkeyskeyval

Angenommen, Sie möchten beispielsweise, dass alle in das aktuelle Dokument aufzunehmenden Dateien auf 75 % der Breite der Textzeilen skaliert werden. In diesem Fall könnten Sie den folgenden Befehl eingeben:

\setkeys{Gin}{width=0.75\textwidth} 

Hier ‘Gin’ist der Name, der für die keyvalTasten verwendet wird, die mit „Grafikeinbindung“ verknüpft sind. Alle folgenden \includegraphicsBefehle (innerhalb derselben Gruppe oder Umgebung) verhalten sich so, als wären sie [width=0.75\textwidth]angegeben worden, zusätzlich zu allen anderen Tasteneinstellungen, die tatsächlich im optionalen Argument angegeben sind.

Ich versuche, damit ein Argument zu erstellen, das Schlüssel mit dem pgfkeysPaket akzeptiert und die, die es nicht erkennt, an einen \includegraphicsBefehl weiterleitet. Hier ist ein funktionierendes Beispiel:

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

mit Ausgang

Bildbeschreibung hier eingeben

widthBeachten Sie, dass dies für die Tasten und funktioniert height, aber nicht für die scaleTaste. Das ist an sich kein Problem – ich habe eine Methode, um die scaleTaste separat zu behandeln –, aber ich würde gerne wissen, welche anderen Tasten eine besondere Behandlung erfordern. Daher meine Frage:

Welche Tastenkombinationen für den \includegraphicsBefehl können nicht global festgelegt werden?

Antwort1

Geniale Dokumentation, nicht wahr? :-)

Im Allgemeinen ist das Setzen von Schlüsseln mehr oder weniger nur das Erstellen von Makrodefinitionen. Diejenigen, die Sie nicht im Voraus setzen können, sind diejenigen, die initialisiert werden, \includegraphicsbevor die Schlüssel verarbeitet werden. Wenn man sich den Code ansieht (seltsamerweise aufschlussreicher als die Dokumentation), ist die einzige relevante Initialisierung

   \@tempswafalse

und die Schlüssel, die dieses Boolesche Flag verwenden, sind einfach angleund scale.

Der Grund für das Flag ist, dass die meisten Backends zur Grafikeinbindung das Bild „nativ“ skalieren können. Wenn also die Skalierung allein verwendet wird, wird sie an den Backend-Treibercode weitergegeben. Wenn das Bild jedoch bereits gedreht wurde und dann das gedrehte Bild skaliert wird, \includegraphicswird im Wesentlichen ein \scalebox{}{\rotatebox{...um die grundlegende Bildeinbindung herum eingefügt. Vielleicht hätte es anders gehandhabt werden können, damit Ihr Skalierungsbeispiel funktioniert, aber das ist schon lange her:-)

Aus leicht unterschiedlichen Gründen clipsollten auch aufgeführt werden, siehe

http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=graphics/2890

verwandte Informationen