最适合在 xelatex/lualatex 中使用 minted 的 unicode 字体

最适合在 xelatex/lualatex 中使用 minted 的 unicode 字体

我有一堆 unicode 繁重(Julia)代码,我想用它们来绘图minted,但在显示 unicode 时遇到了麻烦。例如,请看以下代码

f(x) = x.^2 + π
const ⊗ = kron
const Σ = sum
# Calculate Σ_{j=1}^5 j^2
Σ([j^2 for j ∈ 1:5])

现在,将其放入 xelatex 文件中

% !TEX engine = xelatex
\documentclass[12pt]{article}
\usepackage[letterpaper]{geometry}
\usepackage{fontspec,unicode-math}
\usepackage{xunicode}
\setmonofont{Consolas} %Might be better ones?
\usepackage{minted}
\begin{document}
\begin{minted}{julia}
f(x) = x.^2 + π
const ⊗ = kron
const Σ = sum # Although `sum` may be just as good in the code.
# Calculate Σ_{j=1}^5 j^2
Σ([j^2 for j ∈ 1:5])
\end{minted}
\end{document}

如果你编译这个,你会发现 $\pi$ 和 $\Sigma$ 工作正常,但和\odot$\in$ 不工作。这是我需要选择一个更好的吗monofont?我需要其他包吗?等等。

答案1

你可以通过用合适的定义使角色活跃起来来填补空白

在此处输入图片描述

% !TEX engine = xelatex
\documentclass[12pt]{article}
\usepackage[letterpaper]{geometry}
\usepackage{fontspec,unicode-math}
\usepackage{newunicodechar}
\newunicodechar{∈}{\makebox[\fontcharwd\font`a]{$\in$}}
\newunicodechar{⊗}{\makebox[\fontcharwd\font`a]{$\otimes$}}
\setmonofont{Consolas} %Might be better ones?
\usepackage{minted}
\begin{document}
\begin{minted}{julia}
f(x) = x.^2 + π
const ⊗ = kron
const Σ = sum # Although `sum` may be just as good in the code.
# Calculate Σ_{j=1}^5 j^2
Σ([j^2 for j ∈ 1:5])
\end{minted}
\end{document}

答案2

如果您想避免定义字符,可以切换到具有这些字符的字体。 GNU FreeMono 字体是一个很好的选择,因为它是免费的,并且有超过 4,000 个字符。它的字符集比大多数等宽字体大得多,包括您之前需要的缺失的数学字符。您可以在此处下载:https://www.gnu.org/software/freefont/

这是使用 FreeMono 字体显示缺失字符的更新示例。

% !TEX engine = xelatex
\documentclass[12pt]{article}
\usepackage[letterpaper]{geometry}
\usepackage{fontspec,unicode-math}
\usepackage{xunicode}
\setmonofont{FreeMono} %switched to FreeMono
\usepackage{minted}
\begin{document}
\begin{minted}{julia}
f(x) = x.^2 + π
const ⊗ = kron
const Σ = sum # Although `sum` may be just as good in the code.
# Calculate Σ_{j=1}^5 j^2
Σ([j^2 for j ∈ 1:5])
\end{minted}
\end{document}

FreeMono 输出

相关内容