为什么 \index{} 中的 \verb|""| 会导致错误?

为什么 \index{} 中的 \verb|""| 会导致错误?
\documentclass{article}
\usepackage{index}
\makeindex
\begin{document}
\begin{figure}
  \centering
  \fbox{Diagram placeholder}
  \caption{\index{quote (\verb|""|)}ok}
\end{figure}
\printindex
\end{document}

LaTeX 提示错误:\@caption 的参数有一个多余的 }。哪里出了问题?

答案1

你肯定不想要\verb那里:

\documentclass{article}
\usepackage{makeidx}

\makeindex

\begin{document}

Text\index{quote (\texttt{""})}

\begin{figure}
\centering

\fbox{Diagram placeholder}

\caption[ok]{\index{quote (\string\texttt{""})}ok}

\end{figure}

\printindex

\end{document}

为什么\string?因为\index当它是另一个命令的参数时,无法逐字读取其参数。

还要注意,需要“短标题”参数,否则当标题出现在图形列表中时,条目也会被索引。

为什么不呢\protect\verb?因为\verb可以绝不进入另一个命令的参数。


实际上,\verb 可以工作:

\documentclass{article}
\usepackage{makeidx}
\makeindex
\begin{document}

\index{quote (\verb+""+)}

\begin{figure}
\centering

\fbox{Diagram placeholder}

\caption{\index{quote (\string\verb+""+)}ok}

\end{figure}

\printindex

\end{document}

给出相同的结果,但是从一开始就是错误的。

相关内容