我正在使用 Pandoc 生成一个大型文档,我想在索引键中使用内联代码。Pandoc\passthrough{\lstinline!foo!}
为这些内联代码片段生成,但它们似乎在索引中不起作用。
以下是一个示例文档:
\documentclass{memoir}
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{basicstyle=\ttfamily}
\usepackage{imakeidx}
\makeindex
\begin{document}
\passthrough{\lstinline!Code formatting!} outside index works.
\index{NAND gate@{\passthrough{\lstinline!NAND!} gate}}
\printindex
\end{document}
失败原因:
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 ...]
system returned with code 256
(_build/book.ind)
Runaway argument?
NAND \subsubitem gate}, 1^^M^^M\end{theindex}^^M
! File ended while scanning use of \lst@temp.
<inserted text>
\par
l.16 \end
{document}
?
如果不是 Pandoc,我可以用双引号来转义爆炸音,因为这似乎有效:
\index{NAND gate@\passthrough{\lstinline"!NAND"!} gate}
然而,坦白地说,这是疯狂的语法,因为它不需要包装用双引号引起来(我可以在自定义 Pandoc 过滤器中轻松做到这一点),但是前缀每个都!
单独用"
。我不相信使用 Pandoc 过滤器可以做到这一点。
我应该补充一点,我对使用什么索引系统完全没有偏好,所以如果有比更适合这种用例的系统imakeidx
,我洗耳恭听。