Использование setkeys для определенного графического объекта — или: как определить параметры для определенного графического объекта в команде или макросе?

Использование setkeys для определенного графического объекта — или: как определить параметры для определенного графического объекта в команде или макросе?

(Мотивация моего вопроса приведена в конце!)

Вопрос: Как можно определить ключи для опций includegraphicsв отдельной команде, т. е. не непосредственно в графике, которая их использует? (Например, чтобы одни и те же опции можно было использовать несколько раз или чтобы вы могли просто определить их централизованно, а не при самом включении графики.)

Обратите внимание, что graphicxпозволяет вам определитьстандартныйдля этих опций, которые используются для всех графиков, если вы не переопределите их, указав новые. Это делается с помощью команды setkeys и выглядит следующим образом:

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

введите описание изображения здесь

Таким образом, первый рисунок, который вы видите, используетновыйстандарт 4см/4см, тогда как другие переопределяют их индивидуальными значениями (ш/в):

  • A: 4см/4см, новый стандарт
  • B: 2 см/4 см, поскольку высота все еще является новым стандартом
  • C: 2см/*, где * — высота в прямом отношении к ширине
  • изображение: */*, т.е. исходные размеры графика

Однако я хотел бы использовать определение setkeys только для определенной графики! (Конечно, я мог бы установить новый стандарт и использовать для каждой другой графики widthи heightс !, но это, очевидно, неприемлемое решение.) То есть, я делаюнетхочу изменить стандарт, но я хотел бы иметь возможность использовать это определение только в любой графике по моему выбору! Например, я хотел бы иметь возможность что-то вроде

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

Возможно ли это как-то?

Мотивация:

Я хотел бы определить свой собственный пакет (т. е. файл sty) для слайдов прожектора, который должен быть достаточно гибким, чтобы в большинстве случаев людям, использующим его, не приходилось его больше трогать. Вместо этого все необходимое редактирование/индивидуализация должны быть сделаны в отдельном файле конфигурации. (Где вы можете, например, определить заголовок и автора для титульного слайда.)

Одна из тех вещей, которые следует настроить, — это размер графики, которая отображается на титульном слайде. Таким образом,в принципе, файл sty должен содержать что-то вроде: \includegraphics[\OptionsSpecifiedInConfigFile]{\LogoSpecifiedInConfigFile}. Однако эти параметры (например, width=2cm,height=3cm) нельзя просто сохранить в команде (например, \OptionsSpecifiedInConfigFile), поэтому мне требуется другое решение.

Я знаю, что передача опций моему пакету также может быть вариантом (что я уже делаю!), но делать это конкретно для этих опций, как мне кажется, не имеет смысла.

Похожие посты stackoverflow:

(Они не помогли мне решить мою проблему, но все равно кажутся весьма взаимосвязанными, поэтому я опубликовал их на случай, если другие сочтут их полезными.)

Спасибо за помощь!

решение1

Если вам нужно другое значение по умолчанию для некоторых случаев, вы можете определить новую команду для этого.

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

Если вы хотите сохранить параметры в специальном макросе, вам необходимо развернуть макрос перед его передачей\includegraphics

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

Связанный контент