根据一个参数的值具有不同定义的 Newcommand

根据一个参数的值具有不同定义的 Newcommand

我正在写一些统计笔记,并且经常需要输入零假设和替代假设,所以我觉得有一个命令可以帮我完成这些工作

基本上,我希望得到这样的东西:如果我输入,\hnull[55]{g}它会给我H_a^{}:\: \mu\,\geq\,55;但是如果我输入,\hnull[55]{l}它会给我H_a^{}:\: \mu\,\leq\,55;对于,\hnull[55]{n}我会得到H_a^{}:\: \mu\,\neq\,55。理想情况下,我希望如果可选参数为空,它会\mu_0^{}在原处打印。

我一直在查看文档,并尝试使用,xparse但我发现的例子检查(可选)参数是否为空,而不是它是否等于某个东西。

\documentclass[a4paper,11pt]{book}

\usepackage{relsize}
\usepackage{xparse}

\DeclareDocumentCommand \hnull { o m } {%
  \IfNoValueTF {#1} {%
    \mathlarger{H}_0^{}:\:\mu #2 \mu_0^{}%
  }{%
    \mathlarger{H}_0^{}:\:\mu #2 #1%
  }%
}

\begin{document}

\[\hnull[55]{\leq}\]
\[\hnull{\geq}\]
\[\hnull{\neq}\]
\[\hnull{\leq}\]

\end{document}

g但这对我的问题来说不是一个优雅的解决方案,只需输入而不是会更好\geq

答案1

这很简单,不需要检查第一个参数:

\documentclass[a4paper,11pt]{book}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\hnull}{ O{\mu_0} m }
 {%
  H_0:\mu\hnullsymbol{#2}#1%
 }

\ExplSyntaxOn
\NewDocumentCommand{\hnullsymbol}{m}
 {
  \str_case:nnF { #1 }
   {
    {g}{\geq}
    {l}{\leq}
    {n}{\neq}
   }
   { #1 }
 }
\ExplSyntaxOff

\begin{document}

\begin{gather*}
\hnull[55]{l} \\
\hnull{g} \\
\hnull{n} \\
\hnull[33]{=} \\
\hnull{<}
\end{gather*}

\end{document}

在我看来,这\mathlarger没有任何用处,而且额外的空格只会使内容更难读。

在此处输入图片描述

答案2

以下条件取决于您选择的gl和,n以及。如果您提供一个空的强制参数(或没有匹配任何内容),则结果为。\geq\leq\neq=

在此处输入图片描述

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\DeclareDocumentCommand \hnull { o m } {%
  \tl_set:Nx \l_tmpa_tl {
    \str_case:nnF { #2 }
      {
        { g } { \geq }
        { l } { \leq }
        { n } { \neq }
      }
      { = }
  }
  \IfValueTF {#1} {
    H \c_math_subscript_token 0:\:\mu \l_tmpa_tl #1
  }{
    H \c_math_subscript_token 0:\:\mu \l_tmpa_tl \mu \c_math_subscript_token 0
  }
}
\ExplSyntaxOff

\begin{document}

$\hnull[55]{l}$

$\hnull{g}$

$\hnull{n}$

$\hnull{l}$

$\hnull{}$

\end{document}

相关内容