LaTeXの:どのようにオプション1のデフォルトとして必要な引数を使用するには?
-
22-08-2019 - |
質問
私は2つの引数、それらのいずれかのオプションでLaTeXのコマンドを作成しようとしています。通常、私は
としてこれを行うと思います\newcommand{\whatever}[2][default]{first #1 second #2}
default
は、最初の引数のデフォルト値です。しかし、このコマンドのために、私は第二引数の値が最初の引数のデフォルト値として使用したい - つまり、私が欲しい
\whatever{blah}
\whatever{foo}
\whatever[lol]{rofl}
と同等であると
\whatever[blah]{blah}
\whatever[foo]{foo}
\whatever[lol]{rofl}
誰もがこれを行う方法を知っていますか?必要であれば、私は無地のTeXに落下することができます。
解決
それは、広く使用されていないのですが、
LaTeXのカーネルは、これを行うための作り付けの方法があります。ここでは例があります:
\makeatletter
\newcommand\@foo[2][]{[1: #1, 2: #2.] }
\newcommand\foo{\@dblarg\@foo}
\makeatother
\foo{same}
\foo[hello]{world}
あなたが\makeatletter
または.sty
ファイルの中にこれをやっている場合は、もちろん、.cls
コマンドがドロップすることができます。
他のヒント
醜いハックます:
\usepackage{ifthen}
...
\newcommand{\whatever}[2][uniquenonesense]{
...
\ifthenelse{\equal{#2}{uniquenonesense}}{#1}{#2}
...
}
おそらくあなたはきれいな何かをしたかったが、それは私が持っているものです。
あなたのセマンティクスに応じて、uniquenonesense
は空である可能性があります。
\newcommand{\haha}[2]{\backslash whatever \left[ #1 \right]
\left[ #1 \right] }
\begin{document}
$\haha{blah}{blah}$\\
$\haha{stupid}{Idiot}$
\end{document} % This works very well.
所属していません StackOverflow