garamond 和 beramono 之间的冲突

garamond 和 beramono 之间的冲突

多年来,我在我的书中使用 Garamond 作为普通文本,使用 Beramono 作为打字机样式。在我的新笔记本电脑、新 Cygwin 上pdfTeX 3.14159265-2.6-1.40.17,这些字体会产生冲突。列表中的关键字不再是粗体。如果我跳过 Garamond,关键字会变成粗体,但这样一来,我的文本字体就不对了。

\documentclass[]{article}                           
\usepackage[dutch]{babel}                           

\usepackage[urw-garamond,ttscaled=false]{mathdesign}
\usepackage[T1]{fontenc}                            
\usepackage[scaled=0.77]{beramono}                  

\usepackage[]{listings}                             

\lstset{                                            
  language=C,                                       
  basicstyle={\ttfamily\small},                     
  keywordstyle={\bfseries},                         
  commentstyle={\itshape},                          
  showstringspaces=false                            
}                                                   

\begin{document}                                    
This is normal text.                                
\begin{lstlisting}[]                                
#include <stdio.h>                                  

int main(void)                                      
{                                                   
  printf("Hello World\n);                           

  return 0;                                         
}                                                   
\end{lstlisting}                                    
This is normal text.                                
\end{document}

int#include应该void加粗,但实际上并没有。我希望有人知道哪里错了。

答案1

使用urw-garamond选项,mathdesign重新定义\bfdefaultmb而不是b(或bx)。事实上,你会收到一个警告

LaTeX Font Warning: Font shape `T1/fvm/mb/n' undefined
(Font)              using `T1/fvm/m/n' instead on input line 21.

如果您只需要里面的等宽粗体字体listings,最简单的解决方法是选择正确的字体系列。

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[dutch]{babel}

\usepackage[urw-garamond,ttscaled=false]{mathdesign}
\usepackage[scaled=0.77]{beramono}

\usepackage[]{listings}

\lstset{
  language=C,
  basicstyle=\ttfamily\small,
  keywordstyle=\fontseries{b}\selectfont,
  commentstyle=\itshape,
  showstringspaces=false,
}                                                   

\begin{document}

This is normal text.
\begin{lstlisting}[]
#include <stdio.h>

int main(void)
{
  printf("Hello World\n);

  return 0;
}
\end{lstlisting}
This is normal text.

\end{document}

在此处输入图片描述

通过定义合适的字体替换可以获得更完整的解决方案:

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[dutch]{babel}

\usepackage[urw-garamond,ttscaled=false]{mathdesign}
\usepackage[scaled=0.77]{beramono}

\usepackage[]{listings}

\makeatletter
\input{t1fvm.fd}
\DeclareFontShape{T1}{fvm}{mb}{n}{<->ssub * fvm/b/n}{}
\DeclareFontShape{T1}{fvm}{mb}{sl}{<->ssub * fvm/b/sl}{}
\DeclareFontShape{T1}{fvm}{mb}{it}{<->ssub * fvm/b/sl}{}
\makeatother

\lstset{
  language=C,
  basicstyle=\ttfamily\small,
  keywordstyle=\bfseries,
  commentstyle=\itshape,
  showstringspaces=false,
}                                                   

\begin{document}

This is normal text.
\begin{lstlisting}[]
#include <stdio.h>

int main(void)
{
  printf("Hello World\n);

  return 0;
}
\end{lstlisting}
This is normal text.

\end{document}

相关内容