在选项中使用 \ifthenelse

在选项中使用 \ifthenelse

我正在尝试创建一个\newcommand以宽度作为可选参数的图像。这是我当前有效的命令(但不使用该参数):

\newcommand{\introimg}[3]{
\begin{figure}
    \centering
    \includegraphics[width=0.9\textwidth]{Figures/#1}
    \caption{#3}
    \label{#2}
\end{figure}
}

现在,如果未指定选项,我将使用提供默认值的0.9可选参数进行替换。\ifthenelse\ifthenelse{\isempty{#4}}{0.9}{#4}

\newcommand{\introimg}[4]{
\begin{figure}
    \centering
    \includegraphics[width=\ifthenelse{\isempty{#4}}{0.9}{#4}\textwidth]{Figures/#1}
    \caption{#3}
    \label{#2}
\end{figure}
}

但这会产生错误:

Runaway argument? width=\ifthenelse {\isempty { Paragraph ended before \Gin@ii was complete.

我看到他们的示例中包含了许多示例%,但我在文档中没有看到这些示例,也不明白 for 的用途%。但我尝试复制他们的语法,但仍然出现错误。

答案1

您不需要使用条件。命令的可选参数是#1,因此您应该按以下方式定义命令:

\documentclass{article}
\usepackage[demo]{graphicx}
\newcommand{\introimg}[4][.9]{
\begin{figure}
    \centering
    \includegraphics[width=#1\textwidth]{Figures/#2}
    \caption{#3}
    \label{#4}
\end{figure}
}
\begin{document}
\introimg{Foo}{Caption}{Fig:foo}
\introimg[.7]{Foo}{Caption}{Fig:foo}
\end{document}

代码输出

答案2

使用真正的可选参数

\newcommand{\introimg}[4][0.9]{
\begin{figure}
    \centering
    \includegraphics[width=#1\textwidth]{Figures/#2}
    \caption{#4}
    \label{#3}
\end{figure}
}

被称为

\introimg{filename}{label}{caption}

或者

\introimg[0.5]{filename}{label}{caption}

相关内容