LaTeX-定义使用特定字体的单词列表 问题

LaTeX-定义使用特定字体的单词列表 问题,latex,Latex,我正在写一篇关于申请的文章/文件。在这个文档中有很多code-单词,我想用不同的字体突出显示它们。目前我的工作是: {\fontfamily{cmtt}\selectfont SOME-KEY-WORD} 每次都需要做一些工作 问题 我正在寻找一种方法来声明一个单词列表,以便在文本中使用特定的字体。 我知道我可以使用listings软件包并定义将在listings环境中突出显示的morekeywords,但我需要在文本中使用它 我想到了这样的事情: \defineList{\fontfamil

我正在写一篇关于申请的文章/文件。在这个文档中有很多
code
-单词,我想用不同的字体突出显示它们。目前我的工作是:

{\fontfamily{cmtt}\selectfont SOME-KEY-WORD}
每次都需要做一些工作

问题 我正在寻找一种方法来声明一个单词列表,以便在文本中使用特定的字体。 我知道我可以使用listings软件包并定义将在listings环境中突出显示的
morekeywords
,但我需要在文本中使用它

我想到了这样的事情:

\defineList{\fontfamily{cmtt}}{
    SOME-KEY-WORD-1,
    SOME-Key-word-2,
    ...
}
Hello, \somekeyword{} is the magic word!
编辑 我忘了说我已经试过了:

\def\somekeyword{\fontfamily{cmtt}\selectfont some\_key\_word\normalfont}
这比第一次尝试要好一点,但我仍然需要在文本中使用
\somekeyword

编辑2 我找到了一个解决办法:

\newcommand{\cmtt}[1]{{\fontfamily{cmtt}\selectfont #1\normalfont}}

它比“编辑”好一点,但仍然不是完美的解决方案。

每次出现一个单词时,在不提供任何TeX线索的情况下进行替换可能会很困难,并且超出了我的技能范围(尽管我有兴趣看到有人提出解决方案)

但是为什么不简单地为每个单词创建一个宏呢

\newcommand\somekeyword{\fontfamily{cmtt}\selectfont SOME-KEY-WORD}
这样使用:

\defineList{\fontfamily{cmtt}}{
    SOME-KEY-WORD-1,
    SOME-Key-word-2,
    ...
}
Hello, \somekeyword{} is the magic word!
遗憾的是,尾随的
{}
是必要的,以防止吃掉后面的空格;即使是内置的
\LaTeX
命令也需要它们

如果您有很多这样的话,并且担心可维护性,您甚至可以创建一个宏来创建宏:

\newcommand\declareword[2][]{%
  \expandafter\newcommand%
    \csname\if\relax#1\relax#2\else#1\fi\endcsname%
    {{\fontfamily{cmtt}\selectfont #2}}%
}
\declareword{oneword}          % defines \oneword
\declareword{otherword}        % defines \otherword
\declareword[urlspy]{urls.py}  % defines \urlspy
...

可选参数表示命令的名称,以防单词本身包含像
这样的字符,而这些字符不能用于命令名称。

宏的工作方式与
\def\someKeyWord
相同,对吗?因此,我仍然需要将每次出现的someKeyWord替换为
\someKeyWord
,或者我是否错误地使用了宏的功能?是的,您仍然需要更改文本。就像我说的,这是没有办法的(我知道)。我尝试了你的解决方案。例如,如果短语中有“.”,则会遇到问题:
urls.py
。我在EDIT2中展示的解决方案似乎没有问题。是的,如果“word”包含在宏名称中无效的字符,它将不起作用。我将进行编辑以添加解决方法。如果要突出显示“普通”单词,我将尝试使用此方法。如果要突出显示这些单词可能包含特殊内容,请查看
chickenize
包symbols@samcarter_is_at_topanswers.xyz我来看看。谢谢。看来
chickenize
包只适用于lunaTex。为什么需要自定义
\cmtt
宏?为什么不改用
\texttt{foo}
?或者
\verb | foo |
如果内容脆弱?其想法是创建一个单词/短语列表,该列表将自动以另一种字体设置样式。