我对我的列表使用以下设置:
\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。