因此,我创建了一个新的宏\newcommand{\n}{\lstinline|\n|}
,但出于某种原因,当我使用它时,我得到的只是粗体“n”字母,而不是漂亮的\n
。有什么想法吗?
答案1
正如 Ulrike 已经发布的,您不能在宏参数或替换文本中使用逐字宏或环境。要使\n
排版\n
为逐字,您可以使用:
\newcommand{\n}{\texttt{\string\n}}
或者使用verbdef
包:
\verbdef\n|\n|
答案2
实际上,您可以使用 lstinline 来定义自定义命令。我定义了一些简短的命令来包含特定形式语言的片段,如下所示:
\newcommand\foo[1]{\lstinline[language=foo]{#1}}
foo
如果未定义语言,则必须先使用以下命令进行定义
\lstdefinelanguage{foo}{ ... }
然后,您可以在代码中使用如下自定义命令。某些特殊字符(如{
、}
和 )^
必须进行转义:
Blabla \foo{this is syntax highlighted} blabla,
bla \foo{This contains \{ braces \}}.
答案3
\lstinline
是一个逐字命令。它必须执行大量\catcode
-magic 才能禁用命令并解析其参数。您不能在另一个命令中使用它。
https://texfaq.org/FAQ-verbwithin。