我正在写一个文档,解释 LaTeX 的用法。显然,这个文档包含了很多 LaTeX 命令。
我定义了一个宏,它将接受一个参数(命令名称)并以 typewriterfont 打印它。为了让生活更轻松,我认为让宏添加反斜杠是一个聪明的想法。这对我来说很好:
多年后,我觉得是时候给文档添加索引了。我将命令添加\index
到宏中。我这样做了:
\newcommand{\cmd}[1]{%
\cmd@font{\textbackslash#1}%
% Don't forget to reset the font!
\normalfont\selectfont%
% Insert the command to the index, but preserve the backslash
\def\@cmd{#1}
\index{#1@\texttt{\@cmd}}%
}%
这个已经足够了,唯一的缺点是索引只列出了没有反斜杠的纯命令名称。愚蠢的我没能想出一个聪明的方法来添加反斜杠。
您可以在这里看到索引:
如果我通过在索引参数中添加反斜杠来更改宏,如下所示
\newcommand{\cmd}[1]{%
\cmd@font{\textbackslash#1}%
% Don't forget to reset the font!
\normalfont\selectfont%
% Insert the command to the index, but preserve the backslash
\def\@cmd{\#1}
\index{#1@\texttt{\@cmd}}%
}%
它不会打印反斜杠,但会打印#1
。这是灾难的示例图片 :-)
实现此功能应采用什么巧妙的方法?
这是明显的 MWE:
\documentclass{article}
\usepackage{makeidx}\makeindex
\makeatletter
\def\cmd@font{\normalfont\ttfamily\selectfont}
\newcommand{\cmd}[1]{%
\cmd@font{\textbackslash#1}%
% Don't forget to reset the font!
\normalfont\selectfont%
% Insert the command to the index, but preserve the backslash
\def\@cmd{#1}
\index{#1@\texttt{\@cmd}}%
}%
\makeatother
\begin{document}
Command \cmd{index} will be used to create a word in the index file,
while \cmd{printindex} will will print the sorted index.
\printindex{}
\end{document}
答案1
您可以使用\textbackslash
。在 MWe 中使用它可生成索引:
这是您修改后的 MWE:
\documentclass{article}
\usepackage{makeidx}\makeindex
\makeatletter
\def\cmd@font{\normalfont\ttfamily\selectfont}
\newcommand{\cmd}[1]{%
\cmd@font{\textbackslash#1}%
% Don't forget to reset the font!
\normalfont\selectfont%
% Insert the command to the index, but preserve the backslash
\def\@cmd{#1}
\index{#1@\texttt{\textbackslash\@cmd}}%
}%
\makeatother
\begin{document}
Command \cmd{index} will be used to create a word in the index file,
while \cmd{printindex} will will print the sorted index.
\printindex{}
\end{document}
顺便说一句,你可能想切换到使用伊玛克它的工作原理几乎完全相同,通过\usepackage{imakeidx}
,但有许多改进,例如自动索引编译。