是否可以使宏对 \\ 敏感?

是否可以使宏对 \\ 敏感?

我有以下宏:

   \newcommand{\INFERRULE}[3][]{%
   \ensuremath{\inferrule{\mathstrut #2}{\mathstrut #3}\ifx\\#1\\\else\enskip(#1)\fi}}

我想让它敏感,\\以便我可以编写如下命令:

   \[
   \INFERRULE[i \to j]{[i, i, j, k] \\ [i, k, j, j]}{[i, i, k, j]}
   \]

但是,我定义宏的方式忽略了\\。有办法修复它吗?

答案1

我不确定您是否仍然对答案感兴趣,但假设您的问题具有以下特点:

  • 您正在使用mathpartir\inferrule提供宏的包

  • 您希望拥有多线场所

这似乎很容易做到。mathpartir文档说

可以通过添加空行来强制换行\\\\

\inferrule {aa \\\\ bb} {dd \\ ee \\ ff}

由于您的\INFERRULE只是一个环绕,因此\inferrule您可以做同样的事情。这是一个工作示例:

\documentclass{article}
\usepackage{mathpartir}
\newcommand{\INFERRULE}[3][]{%
\ensuremath{\inferrule{\mathstrut #2}{\mathstrut #3}\ifx\\#1\\\else\enskip(#1)\fi}}
\begin{document}
\[
   \INFERRULE[i \to j]
        {[i, i, j, k] \\ [i, k, j, j]}
        {[i, i, k, j]}
\]
\[
    \INFERRULE[i \to j]
        {[i, i, j, k] \\\\ [i, k, j, j]}
        {[i, i, k, j]}
\]    
\end{document}

示例代码输出

相关内容