代码:

代码:

我在使用源代码listings。我想取消连字粗体 (Java) 关键字。我已经尝试使用literate-option,但它没有按预期工作。这是我当前的代码:

代码:

\documentclass{minimal}

\usepackage[default]{sourcecodepro}
\usepackage{listings}

\lstset{%
  language=Java,
  keywordstyle=\bfseries,
  literate={fl}{f{}l}{2},
  morekeywords={float}
}

\begin{document}

\begin{lstlisting}
  float f;
  int i;
\end{lstlisting}

\end{document}

结果:

结果

答案1

fifl仅产生外部列表(无论如何都不应该发生,但这是另一个问题)。

\documentclass{article}

\usepackage[default]{sourcecodepro}
\usepackage{listings}

\lstset{%
  language=Java,
  keywordstyle=\bfseries,
  morekeywords={float}
}

\begin{document}

\texttt{ff fi fl ffi ffl} % bad

\begin{lstlisting}
  float f;
  int i;
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

使用替换周围的附加组可以解决问题。

源代码

顺便提一句:你不应该使用minimal

\documentclass{article}

\usepackage[default]{sourcecodepro}
\usepackage{listings}

\lstset{%
  language=Java,
  keywordstyle=\bfseries,
  literate={fl}{{f{}l}}2,
  morekeywords={float}
}

\begin{document}

\begin{lstlisting}
  float f;
  int i;
\end{lstlisting}

\end{document}

更新:通过禁用连字符microtype也可以使用关键字。

f 连字

\documentclass{article}

\usepackage[default]{sourcecodepro}
\usepackage{listings}
\usepackage{microtype}
\DisableLigatures[f]{encoding = *, family = tt }

\lstset{%
  language=Java,
  keywordstyle=\bfseries,
  morekeywords={float}
}

\begin{document}

\begin{lstlisting}
  float f;
  int i;
\end{lstlisting}

floating away

\end{document}

相关内容