研究了一下verbatim.sty,发现verbatim环境默认使用ttfamily的字体,因此只要重定义
\verbatim@font宏使verbatim默认使用rmfamily或sffamily字体,通过\setromanfont或
\setsansfont设置相应字体族为中文字体即可。
\documentclass[a4paper]{article}
\usepackage{fontspec,xunicode,xltxtra,verbatim}
\setsansfont[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}
\setromanfon[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}
%设置字体时也可以直接用字体名,以下三种方式等同:
%\setromanfont[BoldFont={黑体}]{宋体}
%\setromanfont[BoldFont={SimHei}]{SimSun}
%\setromanfont[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}
%但是不推荐使用第一种方式,对于中文名称的字体,使用该方式会导致不能将
%roman、sans族字体设置为同一种字体,比如将romanfont和sanfont都设置为"宋体"
%将导致编译错误。但是用另外两种方式却没问题,也许是fontspec包的bug吧。推
%荐直接指定字体文件名的第三种方式。
\begin{document}
Can you see some CJK characters in the verbatim?
\makeatletter
\def\verbatim@font{\sffamily\small} %如果使用roman字体族,将sffamily改成rmfamily
\makeatother
\begin{verbatim}
some ascii characters!
你能看到中文字符嘛!
\end{verbatim}
\end{document}
ps: 此文由本人最初发表于水木清华TeX版