newcommand 问题

newcommand 问题

我正在尝试创建一个代表比文本大一个单词的新命令。

\newcommand {\Large}{\Large} is that right?

然后我必须在其中集成 top 命令

\newcommand{\smindexx}[2]{#2 \index{#2}}

我使用smindexx如下\smindexx{\ITerm}{Test}并且测试应该比其他词更大。

我该怎么做,有人能给我点想法吗?

答案1

您的方法存在一些问题:

首先,\newcommand获取括号中的参数数量[2],然后将参数引用为#1#2。因此,你的第二个代码段应该是

\newcommand{\smindexx}[2]{#1 \index{#2}}

并会被调用

\smindexx{\ITerm}{Test}

所以这部分你是对的。

接下来,正如 David Carliste 所评论的那样,定义\Largeas\Large是多余的,可能会导致循环。此外,您不能使用\newcommandfor 现有命令,但需要\renewcommand

如果你只是想要测试,\Large你可以简单地嵌套命令:

\newcommand{\smindexx}[2]%
{%
    #2%
    \index{%
              \Large{#2}%
          }%
}

缩进是多余的,但我希望它能阐明思路。renewcommand 的部分\Large是不必要的。

答案2

我猜(但这只是一个猜测,因为问题的细节太少)你想要

\newcommand{\smindexx}[2]{{\Large#1}\index{#2}}

然后\smindexx{abc}{xyz}将在此点以大号文本排版 abc 并制作索引条目xyz

正如评论中澄清的那样,你实际上想要

\newcommand{\smindexx}[2]{{\Large#2}\index{#2}}

并重复使用#2两次丢弃#1

相关内容