LaTeX lstlisting не выделяет ключевые слова, когда базовый стиль ttfamily

Я работаю над документом LaTeX и использую lstlisting для отображения исходного кода Java. Моя настройка выглядит так:

\lstset{
  basicstyle=\ttfamily,
  keywordstyle=\bfseries,
  language=Java,
  frame=single,
  aboveskip=11pt,
  belowskip=11pt,
  breaklines=true,
  breakatwhitespace=false,
  showspaces=false,
  showstringspaces=false
}

Ключевые слова не выделяются жирным шрифтом при использовании ttfamily, но если я использую небольшой или не указываю базовый стиль, они выделяются отлично.

Что мне не хватает?

Ответы

Ответ 1

Шрифт по умолчанию в LaTeX, Computer Modern, не предоставляет смелую версию семейства телетайпов. Вы можете установить это как пакет bold-extra; см. этот раздел часто задаваемых вопросов для получения более подробной информации.

Ответ 2

Другим вариантом является замена шрифтов, которые вы используете для жирного шрифта, как описано здесь: http://www.macfreek.nl/mindmaster/LaTeX_Bold_Typewriter_Font

Просто поместив эту строку вверху моего документа, я работал на довольно стандартной сборке Ubuntu:

\DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}

Ответ 3

Существует альтернативный подход (немного простой IMHO) здесь с использованием шрифта Courier вместо стандартного компьютера Modern:

% Using Courier font
\renewcommand{\ttdefault}{pcr}
\begin{lstlisting}[basicstyle=\ttfamily\bfseries]
y:=2
\end{lstlisting}

Все кредиты идут в пользу Марко Даниэля!