以上所有内容都表明很难在 LaTeX 中创建一个好的、灵活的(或禁止重载的)函数!!! (在我看来,TeX 代码看起来像希腊语)
好吧,只是为了添加我最近(虽然不是那么灵活)的开发,这是我最近在我的论文文档中使用的,与
\usepackage{ifthen} % provides conditonals...
启动命令,“可选”命令默认设置为空白:
\newcommand {\figHoriz} [4] [] {
然后我让宏设置一个临时变量 \temp{},根据可选参数是否为空而有所不同。这可以扩展到任何传递的参数。
\ifthenelse { \equal {#1} {} } %if short caption not specified, use long caption (no slant)
{ \def\temp {\caption[#4]{\textsl{#4}}} } % if #1 == blank
{ \def\temp {\caption[#1]{\textsl{#4}}} } % else (not blank)
然后我针对这两种情况使用 \temp{} 变量运行宏。 (这里它只是将短标题设置为等于长标题,如果它不是由用户指定的)。
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
在这种情况下,我只检查 \newcommand{} 提供的单个“可选”参数。如果你要为 3 个“可选”参数设置它,你仍然需要发送 3 个空白参数...例如。
\MyCommand {first arg} {} {} {}
这很愚蠢,我知道,但这就是我将要使用 LaTeX 的程度——一旦我开始查看 TeX 代码,它就不是那么有意义了……我确实喜欢 Robertson 先生的 xparse 方法,也许我会试试...