我正在尝试使用 XeLaTeX 排版引擎和皮格门特斯语法高亮器。XeLaTex 使我能够使用操作系统可用的所有字体;Pygments 帮助我为代码着色。
我在 Pygments 生成的 LaTeX 文件中添加了以下两行。
\usepackage{fontspec}
\setmainfont{Monaco}
我原本期望看到最终的 PDF 文件带有 Monaco 字体的彩色代码,但没有看到。如何编辑 Pygments 生成的 latex 文件以指定我想要的字体?
摩纳哥字体如下所示:
但我得到了类似这样的信息(XeLaTex 生成的 PDF 文件的屏幕截图):
[此问题已解决,感谢@TorbjørnT 的评论。]
答案1
选择字体时,fontspec
您必须针对不同的字体系列使用不同的命令,例如“普通”衬线字体、无衬线字体、等宽字体。典型的设置可能是
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont{Inconsolata}
这将使用Linux 自由人作为文档的标准衬线字体,Linux 生物基因作为无衬线字体,以及因科索拉塔作为等宽字体。
代码清单使用的字体系列是等宽字体\ttfamily
,因此\setmonofont
它会影响代码清单。因此,你应该使用
\setmonofont{Monaco}
一个小附录:如果你要写一个包含多个列表的文档,你可以考虑使用minted
包,它使用 Pygments。(另一个提供语法高亮代码列表的包是listings
。
而不是由
pygmentize -f latex -O full -l python code.py > code.tex
你可以拥有如下文件
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{python}
def(hallais):
print("Hello TeX.sx!")
\end{minted}
\end{document}
或者你可以输入一个包含代码的文件来代替minted
环境,例如,
\inputminted[linenos=true]{python}{demo.py}
这需要在启用的情况下进行编译-shell-escape
,例如,
xelatex -shell-escape filename.tex
请参阅minted
手册以了解更多详细信息。