Pandoc 在索引中生成的 lstinline

Pandoc 在索引中生成的 lstinline

我正在使用 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,我洗耳恭听。

相关内容