我正在写一些统计笔记,并且经常需要输入零假设和替代假设,所以我觉得有一个命令可以帮我完成这些工作
基本上,我希望得到这样的东西:如果我输入,\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
以下条件取决于您选择的g
、l
和,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}