当 breaklines=true 时“其他关键字”的样式不一致

当 breaklines=true 时“其他关键字”的样式不一致

当设置为时,使用 key 定义的某些关键字的otherkeywords格式不符合预期。这是我的 MWE:breaklinestrue

\documentclass[12pt, a4paper]{article}
\usepackage{listings}
\lstset{
  basicstyle=\itshape\ttfamily, 
  keywordstyle=\upshape,
}
\lstdefinestyle{syntax}{
  language=[ANSI]C,
  otherkeywords={(,)},
  breaklines=true,
}

\begin{document}
\begin{lstlisting}[style=syntax]
  const ( int | float ) text
\end{lstlisting}
\end{document}

结果看起来像这样(但很好地等宽......):

const ( int | 浮点数 文本

如果我设置 breaklines=false,它看起来就像预期的那样:

const ( int | float )文本

我是否忽略了一些显而易见的东西?至于版本,Windows 上为“这是 pdfTeX,版本 3.1415926-2.4-1.40.13 (MiKTeX 2.9)”(在工作中,他们强迫我...)。

答案1

基于https://tex.stackexchange.com/a/149203/36296

\documentclass{article}
\usepackage{listings}
\usepackage{etoolbox}

\lstset{
    basicstyle=\itshape\ttfamily, 
    keywordstyle=\upshape,
}

\lstdefinestyle{syntax}{
    language=[ANSI]C,
    breaklines=true,
    otherkeywords={(,)},
}

\makeatletter
\patchcmd{\lsthk@SelectCharTable}{)}{`}{}{} 
\makeatother 

\begin{document} 
    \begin{lstlisting}[style=syntax]        
const ( int | float ) text 
    \end{lstlisting}               
\end{document}

在此处输入图片描述

相关内容