Chapterbib 和 Matlab-prettifier 的问题

Chapterbib 和 Matlab-prettifier 的问题

我正在尝试使用 Matlab-Prettifier 在 Latex 文档中插入 Maltab 代码。我正在按如下所示配置包:

\usepackage[framed]{matlab-prettifier}

\lstset{
  style              = Matlab-editor,
  basicstyle         =\ttfamily\scriptsize,
  escapechar         = ",
  literate           = {~} {$\smallsim$}{1},
  mlshowsectionrules = true,
}

然而,经过 Latex 编译后,在 Matlab 代码中第一次使用行继续符(...)时,出现了原始代码中没有的字符,如下图所示‘b@x’:

在此处输入图片描述

编译后没有产生任何警告。

当我删除 Chapterbib 包时,这种情况不再发生。Chapterbib 无需任何特殊配置即可使用。

有人知道我该怎么做才能解决这个问题吗?

在这里,我包含了一个基本的 Latex 文档,它产生了我上面描述的相同问题:

\documentclass{book}

\usepackage{chapterbib} 

\usepackage[framed]{matlab-prettifier}

\lstset{
  style              = Matlab-editor,
  basicstyle         =\ttfamily\scriptsize,
  escapechar         = ",
  mlshowsectionrules = true,
}

\begin{document}

\begin{lstlisting}
...
\end{lstlisting}

\end{document}

答案1

这看起来像是 listings 中的一个错误,在特定情况下会显示出来,但我对在没有 matlab-prettifier 和三个点(matlab 的特殊语法)的情况下制作 MWE 还不够了解。问题是 listings(在 中\lst@CalcLostSpaceAndOutput)输出了 scratch box 的内容\@tempboxa,可能没有在任何地方设置它,或者只在本地组中设置它。

示范

\documentclass{book}
\usepackage{matlab-prettifier}
\lstset{
  style = Matlab-editor,
}

\makeatletter \setbox\@tempboxa\hbox{oops!}\makeatother

\begin{document}

\begin{lstlisting}
...
\end{lstlisting}
\end{document}

作为解决方法插入

\makeatletter \setbox\@tempboxa\hbox{}\makeatother

在文档中,至少在开头,但可能在更多地方。

相关内容