newcommand 键值

newcommand 键值

对于 LaTeX 包编写者来说,这是一个完全新手的问题。有人可以分享一段代码或一个 MWE 来处理以下情况吗?我想定义一个依赖于键的新命令。类似于

\newcommand{\mycommand}#if key_value=1 {test} else {test2}

应该做类似的事情如下

\mycommand[key=1]

应该打印test,否则输出应该是test2

对于这个问题和其他新手问题,我向经验丰富的软件包编写者表示歉意。我只是被大量我一无所知的简单材料弄得不知所措。

答案1

有多个软件包可用于定义 key=value 语法。我将介绍它,keyval因为它是基本 latex 发行版的一部分,而且我对它有所了解。

如果你使用 LaTeX 编写以下内容:

\makeatletter % not needed in a .sty file

\RequirePackage{keyval}




\define@key{test}{key}{%
  \count@=#1\relax}

\define@key{test}{color}{%
  \def\thiscolor{#1}}


\newcommand{\mycommand}[1]{%
  \count@=0 % default
  \def\thiscolor{}% default
  \setkeys{test}{#1}%
  \ifodd\count@
    \typeout{key=\the\count@: Odd!}%
  \else
    \typeout{key=\the\count@: Even!}%
   \fi
   \typeout{the color is \thiscolor}}



\typeout{======}
\mycommand{key=1,color=red]}

\stop

您将看到两个密钥都已处理,并且进行了以下输入

======
key=1: Odd!
the color is red]
 )
No pages of output.

其工作原理是,软件包处理逗号分隔设置的拆分,但对于此处的每个键“key”和“color”,您必须定义一个命令来处理该值。此处,键是要保存的数字\count@,颜色被视为存储在中的文本\thiscolor,然后在处理键之后,这些值可以用作普通的 TeX 代码。

相关内容