我在使用源代码和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
和fi
fl
仅产生外部列表(无论如何都不应该发生,但这是另一个问题)。
\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
也可以使用关键字。
\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}