带有可选上标的新命令

带有可选上标的新命令

在我的论文中我需要经常使用偏微分分数,例如

\frac{\partial^\alpha x}{\partial y^\alpha }}

因此我定义了命令

\newcommand{\partialfrac}[3][]{\frac{\partial^ #1 #2}{\partial #3 ^ #1}}

这应该等于第一个使用

\partialfrac[\alpha]{x}{y}

如果我定义可选的 #1 输入,那么这种方法就可行。如果愿意,我希望能够跳过上标(通常不会写 ^1...),但如果我省略可选输入,则会收到错误。有没有办法以某种方式告诉 latex “跳过”上标?

谢谢

答案1

可扩展的测试是:

\ifx\\#1\\%
  % #1 is empty
\else
  % #1 is not empty
\fi

^#1如果#1包含多个标记,也会失败。此问题已由 修复^{#1}

\documentclass{article}

\newcommand*{\partialfrac}[3][]{%
  \frac{%
    \partial \ifx\\#1\\\else^{#1}\fi #2%
  }{%
    \partial #3 \ifx\\#1\\\else^{#1}\fi
  }%
}

\begin{document}
\[
  \partialfrac{a}{b} = \partialfrac[\alpha]{x}{y}
\]
\end{document}

结果

答案2

我认为仍有空间xparse-based 版本。感谢\IfNoValueTF测试,可以检查可选的第一个参数是否存在:

\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand{\partialfrac}{o m m}{%
\IfNoValueTF{#1}{%
 \frac{\partial #2}{\partial #3}%
}{%
 \frac{\partial^{#1}#2}{\partial #3^{#1}}%
}%
}

\begin{document}
\[
  \partialfrac{a}{b} = \partialfrac[\alpha]{x}{y}
\]
\end{document}

结果:

在此处输入图片描述

答案3

用于etoolbox测试可选参数并采取相应行动。

\newcommand{\partialfrac}[3][]{\frac{\partial\ifblank{#1}{}{^ #1} #2}
      {\partial #3 \ifblank{#1}{}{^ #1}}}

(未经测试)

答案4

很抱歉我提出了这个问题:我在打开它之前尝试了 1 个小时,然后在 2 分钟后找到了解决方案......

\newcommand{\partialfrac}[3][]{\frac{\partial^{#1}#2}{\partial#3^{#1}}}

按预期工作。

非常感谢

相关内容