LaTeX使用listings宏包插入代码时,将代码字体设为 Monaco

\documentclass{article}
\usepackage{listings}
\usepackage{fontspec}
\newfontfamily\monaco{Monaco}
\begin{document}
\begin{lstlisting}[language={[ANSI]C},
        numbers=left,
        numberstyle=\tiny\monaco,
        basicstyle=\small\monaco]
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>

#define SIZE 26

int
main (int argc, char *argv[])
{
  int array[SIZE];
  int i;
  char c;

  for (i = 0; i < SIZE; i++)
    array[i] = 0;

  while ((c = getchar ()) != EOF)
    {
      if (isupper (c))
        {
          array[c - 'A']++;
        }
    }
  for (i = 0; i < 26; i++)
    printf ("%c:%5d\n", (char) ('A' + i), array[i]);

  return 0;
}
\end{lstlisting}
\end{document}
\documentclass[UTF-8]{article}
\usepackage{listings}
\usepackage{color,xcolor}
\usepackage{fontspec}
\usepackage{xeCJK}
\setmonofont[Mapping={}]{Monaco}    %英文引号之类的正常显示,相当于设置英文字体
\setsansfont{Monaco} %设置英文字体 Monaco, Consolas,  Fantasque Sans Mono
\setmainfont{Monaco} %设置英文字体
\setCJKmainfont{微软雅黑}  %中文字体设置
%\setCJKsansfont{楷体} %设置中文字体
%\setCJKmonofont{} %设置中文字体

\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{
backgroundcolor=\color{white},   % choose the background color
basicstyle=\footnotesize\monaco, % size of fonts used for the code或改成\small\monaco稍大
numbers=left,                        % 设置行号
numberstyle=\tiny\monaco,            % 设置行号字体大小
columns=fullflexible,
breaklines=true,                 % automatic line breaking only at whitespace
captionpos=b,                    % sets the caption-position to bottom
tabsize=4,
commentstyle=\color{mygreen},    % 设置注释颜色
escapeinside={\%*}{*)},          % if you want to add LaTeX within your code
keywordstyle=\color{blue},       % 设置keyword颜色
stringstyle=\color{mymauve}\monaco,     % string literal style
frame=single,                        % 设置有边框
rulesepcolor=\color{red!20!green!20!blue!20},
% identifierstyle=\color{red},
language=c++,
}

\begin{document}

\begin{lstlisting}
inline int gcd(int a, int b) { 
    // 如果a<b,则递归得gcd(b,a%b)即gcd(b, a),即交换了位置,时间复杂度O(log max(a, b))
    return b==0?a:gcd(b,a%b)
}
inline int lcm(int a, int b) {
    return a/gcd(a,b)*b;
}
\end{lstlisting}

\end{document}

推荐阅读更多精彩内容