在具有多列的 lstlistings 标题中使用 lstinline?

在具有多列的 lstlistings 标题中使用 lstinline?

考虑一下这个MWE:

\documentclass{article}
\usepackage{multicol}
\usepackage{listings}

\begin{document}

\def\extra{extra}

\begin{lstlisting}[
  multicols=2,
  caption={
    [short] aaaa \extra, \lstinline{asf_sdf}
  },
]
LDPT_NULL = 0,
LDPT_API_VERSION,
LDPT_GOLD_VERSION,
LDPT_LINKER_OUTPUT,
\end{lstlisting}

它崩溃了:

! LaTeX Error: Something's wrong--perhaps a missing \item.

multicols如果有注释,或者如果multicols留下,并且有注释,它就不会崩溃\lstinline。编辑 - 而且,\protect\lstinline{asf_sdf}没有帮助。

我怎样才能一起使用所有这些命令?

答案1

文档listings(参见 5.8 小节)指出

已知多列选项对于某些键不起作用。

如果没有的话\lstinline,可以使用自定义宏:

在此处输入图片描述

\documentclass{article}

\usepackage{multicol}
\usepackage{listings}

\makeatletter
\newcommand\inlinecode[1]
  {\lst@basicstyle #1}
\makeatother

\begin{document}

\def\extra{extra}

\begin{lstlisting}[
  multicols=2,
  caption={
    [short] aaaa \extra, \inlinecode{asf\_sdf}
  },
]
LDPT_NULL = 0,
LDPT_API_VERSION,
LDPT_GOLD_VERSION,
LDPT_LINKER_OUTPUT,
\end{lstlisting}

\end{document}

相关内容