在重新定义的命令中传递可选参数

在重新定义的命令中传递可选参数

我正在设计一些东西,其中将所有实际图像放在一起比写作部分花费更多的时间,因此我使用包装器命令将\includegraphics图像替换为测试方块,除非指定的文件存在,这样我就可以随时检查其他格式。

\newcommand{\includegraphicsmaybe}[1]{\IfFileExists{../Images/#1}{\includegraphics[width=\linewidth,valign=t]{#1}}{\includegraphics[width=\linewidth,valign=t]{test.jpg}}}

但是,我不知道如何将更多格式化参数传递给实际\includegraphics命令,例如旋转此命令(而不是旋转所有命令),或者其他任何情况。我该怎么做?

答案1

有趣的是,处理关键字的顺序似乎很重要,而width=\linewidth之前rotate不是一个好主意。另一方面,你可以输入width两次,第二次获胜。

\documentclass{scrartcl}
\usepackage[export]{adjustbox}
\usepackage{graphics}
\usepackage{duckuments}

\newcommand{\includegraphicsmaybe}[2][]{% #1 = optional keys, #2 = filename
  \IfFileExists{#2}%
    {\includegraphics[width=\linewidth,#1,valign=t]{#2}}%
    {\includegraphics[width=\linewidth,#1,valign=t]{example-image-duck}}}

\setlength{\parindent}{0pt}

\begin{document}
\includegraphicsmaybe[width=0.5\linewidth]{example-image}\hfill
\includegraphicsmaybe[rotate=90, width=0.5\linewidth]{example-image}

\includegraphicsmaybe{test.jpg}
\end{document}

相关内容