\ttfamily 对我来说太粗了

\ttfamily 对我来说太粗了

我对我的列表使用以下设置:

\lstset{
  %basicstyle=\ttfamily\tiny, % small
  basicstyle=\ttfamily\scriptsize, % middle
}

但是列表中的字体对我来说太粗了。我尝试了很多方法,但还是无法改变它。

我想在我的列表中使用等宽(固定)字体,还有其他字体可以使用吗?

PS:我使用 xelatex 编译器编译我的 tex 文件。

编辑#2:

完整示例:

\documentclass[12pt,german,a4paper]{scrreprt}

\usepackage{xltxtra}
\usepackage{lmodern}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{listings}

\begin{document}
\lstset{
    basicstyle=\ttfamily\scriptsize, % bold and monospace
    %basicstyle=\scriptsize, % not bold and not monospace
}
\pagestyle{plain}
\begin{lstlisting}
cntNodes++;
nodes = (DG_NODE_ID *) realloc(nodes, cntNodes * sizeof (DG_NODE_ID));
if (nodes == NULL) {
    fprintf(stderr, "Error: No memory left!\n");
    return false;
} /* if */
\end{lstlisting}
\end{document}

答案1

缩小等宽字体或使用灵活的列或定义较小的字母空间(参见包 fontspec)。SourceCodePro 是 TL2012 的一部分。

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Calibri}
\setmonofont[Scale=0.95,
%             FakeStretch=0.8,
             Mapping=tex-text]{SourceCodePro-Regular.otf}
\newfontface\SmallMono[FakeStretch=0.8,
                       Mapping=tex-text]{SourceCodePro-Regular.otf}
\usepackage{listings}
\usepackage{lipsum}

\lstset{
  basicstyle=\ttfamily\small, % middle
  columns=flexible
}
\begin{document}

\lipsum[1]
\begin{lstlisting}
\directlua{securityproblem("\today")}
\end{lstlisting}

\lstset{
  basicstyle=\SmallMono\small,
  columns=flexible}
\begin{lstlisting}
\directlua{securityproblem("\today")}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

如果您添加\usepackage{times}序言,则会将您的等宽字体切换为 Courier,它比 Computer Modern 要细一些。

或者,如果您只添加\renewcommand{\ttdefault}{pcr}序言,这会将您的等宽字体切换为 Courier,但不会影响您的其他字体。

您也可以使用\lstset{basicstyle=\fontfamily{pcr}\selectfont\scriptsize}将字体暂时更改为 Courier。

相关内容