是否可以索引感叹号?

是否可以索引感叹号?

我正在排版一本关于使用 R 编程语言的手册。与其他一些语言一样,! 用作“非”的逻辑运算符。我希望这个符号出现在索引中,但它不会出现。似乎 Latex 将其解释为标点符号并忽略它。

我尝试将其包含在 \code{} 块中(我们为手册定义的 texttt 命令),但这会导致索引中添加一个空行。(见下文)我还尝试了 \fun{$!$},但文档无法编译,并且我收到 .ind 文件的错误消息:
第 4 行“缺少 $ 插入”
第 5 行“缺少 $ 插入”

我也在寻找可以使用的替代符号,但 Latex 似乎只包含\textexclamdown,而没有\textexclamup

\documentclass{report}

\RequirePackage{imakeidx}

%===----- Functions for indexing and typesetting -----=====
\newcommand{\fun}[1]{\texttt{#1}\index{#1}}
\newcommand{\FUN}[1]{\texttt{#1}\index{#1|textbf}}
\newcommand{\code}[1]{\texttt{#1}}

\makeindex

\begin{document}
\SweaveOpts{concordance=TRUE}

\chapter{Logical operators}

In this section, we would like to introduce you to some of the logical operators used in the R programming language. These include the \FUN{\&} operator, the \FUN{!} operator, and the \fun{\textbar{}} operator. (Note that \FUN{\code{!}} produces an empty space in the index.)

<<>>=
nums1 <- c(1,4,2,8,11,100,8)

# Subset of nums1, where value is exactly 8 or 11:
nums1[nums1 == 8 | nums1 == 11]

# Subset nums1 where number is NOT equal to 100
nums1[nums1 != 100]
@

Here is a table that summarizes the logical operators: 

\begin{table}[!htbp]
\caption{Logical operators.} \label{table:logicops}
\begin{center}
\begin{tabular}{l l}
Operator                & Meaning \\ \hline
\fun{\textgreater{}}    & greater than\\
\fun{\textless{}}       & less than\\
\fun{\&}                & AND\\
\fun{==}                & equal to\\
\fun{\textbar{}}        & OR\\
\fun{\%in\%}            & is an element of\\
\fun{!}                 & NOT\\
\end{tabular}
\end{center}
\end{table}


\newpage
\printindex

\end{document}

在此先感谢您的帮助!

答案1

字符!@|需要在索引上下文中进行转义。为了makeindex理解您是想提及它们而不是使用它们,您必须用 '引用' 它们"。以下应该可以解决问题:

\index{"!} % or, in this case: \fun{"!}

答案2

我尝试了一下,问题似乎源于您的\fun命令,因为我添加了一个来$x$查看它是否会打印,但只打印了 x。此外,添加空格{ ! }而不是似乎{!}会破坏格式。我把它留在里面,这样你就能看到它了。删除命令\fun也会将其从索引中完全删除,但我想你自己可能已经解决了这个问题。

\documentclass{report}

\usepackage{imakeidx}

%\RequirePackage{imakeidx}

%===----- Functions for indexing and typesetting -----=====
\newcommand{\fun}[1]{\texttt{#1}\index{#1}}
\newcommand{\FUN}[1]{\texttt{#1}\index{#1|textbf}}
\newcommand{\code}[1]{\texttt{#1}}

\makeindex

\begin{document}
%\SweaveOpts{concordance=TRUE}

\chapter{Logical operators}

\begin{table}[!htbp]
\caption{Logical operators.} \label{table:logicops}
\begin{center}
\begin{tabular}{l l}
Operator                & Meaning \\ \hline
\fun{\textgreater{}}    & greater than\\
\fun{\textless{}}       & less than\\
\fun{\&}                & AND\\
\fun{==}                & equal to\\
\fun{\textbar{}}        & OR\\
\fun{\%in\%}            & is an element of\\
\fun{ ! x }                 & NOT\\
\end{tabular}
\end{center}
\end{table}

输出

我希望这会有所帮助,我以前从未亲自使用过索引。

我在编译时还遇到了其他问题,所以我注释掉了除表格之外的所有内容。这可能是我的编译器的问题,所以我把那部分留给你 :)

相关内容