与“breqn”包一起编译后,符号“-”未显示在任何“清单”中

与“breqn”包一起编译后,符号“-”未显示在任何“清单”中

编译后,每个列表环境中的“-”符号都消失了。我发现“listings”包一定与“breqn”包有某种冲突。下面是一个最小的工作示例。尝试注释/取消注释\usepackage{breqn},然后编译。

\documentclass[12pt,a4paper,openany]{report}
\usepackage{listings}
\usepackage{color}
\usepackage{breqn}

\begin{document}

\begin{lstlisting}
arm-none-eabi-as -mcpu=arm926ej-s -c -Wall -ostartup.o startup.s
\end{lstlisting}

\end{document}

我真的很想同时使用这两种方法,但前提是有人能告诉我,为什么会出现这个错误以及如何修复它。

答案1

如果没有更好的方法,您可以在列表中进行本地重置:

\documentclass[12pt,a4paper,openany]{report}
\usepackage{listings}
\usepackage{color}

%fix for \begin{lstlisting}
\edef\savedmiuscode{\mathcode`\noexpand\-\the\mathcode`\-\relax}
\let\oldlstlisting\lstlisting
%\show\savedmiuscode
\def\lstlisting{\savedmiuscode\oldlstlisting}

%fix for \lstinputlisting{}    
\edef\savedmiuscode{\mathcode`\noexpand\-\the\mathcode`\-\relax}
\let\oldlstinputlisting\lstinputlisting
%\show\savedmiuscode
\def\lstinputlisting{\savedmiuscode\oldlstinputlisting}

\usepackage{breqn}



\begin{document}



\begin{lstlisting}
arm-none-eabi-as -mcpu=arm926ej-s -c -Wall -ostartup.o startup.s
\end{lstlisting}

\end{document}

相关内容