如何定义具有可选键值参数的函数

如何定义具有可选键值参数的函数

我已经设置了一个名为快速图其目的是使用一行命令插入居中图像:

\newcommand{\quickfigure}[2] {
    \begin{figure}[H]
        \centering
        \includegraphics[width=0.6\linewidth]{#1}
        \caption{#2}
    \end{figure}
}

该函数使用如下;

\quickfigure{img/testImage.png}{Test image}

我希望此函数接受可选参数来定义图像的宽度和高度以及标签。希望语法类似于;

\quickfigure[width=0.6, label=img:test]{img/testImage.png}{Test image}

我该如何设置?我需要正确的方向。谢谢!

编辑:感谢大家的想法,这是我的解决方案;

\includepackage{keyval}
\includepackage{ifthen}

\newlength{\qf@width}
\define@key{quickfigure}{width}{\setlength\qf@width{#1}}
\define@key{quickfigure}{label}{\def\qf@label{#1}}

\newcommand{\quickfigure}[3][] {
    \setkeys{quickfigure}{width=0.6\linewidth,label=\@empty}
    \setkeys{quickfigure}{#1}
    \begin{figure}[H]
        \centering
        \includegraphics[width=\qf@width]{#2}
        \caption{#3}
        \ifthenelse{\equal{\qf@label}{}}{}{\label{\qf@label}}
    \end{figure}
}

答案1

或者你也可以这样做:

\documentclass{article}

\usepackage{graphicx,xparse}


\NewDocumentCommand\quickfigure{O{width=0.6\linewidth} m o m}{%
    \begin{figure}[H]
        \centering
        \includegraphics[#1]{#2}
        \caption{#4}\IfNoValueTF{#3}{\relax}{\label{#3}}%
    \end{figure}}

\begin{document}

\quickfigure{example-image-a}{Test image}

\quickfigure[width=20pt, height=100pt]{example-image-a}[img:test]{Test image}


\end{document}

两张图片

相关内容