我用minted
它来显示我的源代码,并使用 Inconsolata 包来设置输出字体。不幸的是,这会产生以下丑陋的结果(请注意引号的方向:
我觉得这是 LaTeX 使用智能引号的一次糟糕尝试,于是我尝试使用该upquote
包。结果如下:
使用此 MWE:
\documentclass{article}
\usepackage{minted}
\usepackage{inconsolata}
\usepackage{upquote}
\begin{document}
\begin{minted}{matlab}
disp('This string should have straight quotes!');
\end{minted}
\end{document}
删除 Inconsolata 包会产生印刷上可接受的结果,但是遗憾的是,Inconsolata 字体却不行:
我不确定发生了什么事。
为什么我不能同时拥有我想要的字体和合适的引号?有什么想法吗?
答案1
Inconsolata 字体没有直引号字符,如下行所示
Missing character: There is no ' in font ts1-inconsolata!
在您的.log
文件中。您可以使用 cmtt 字体并执行类似操作来解决此问题upquote
:
\documentclass{article}
\usepackage{minted}
\usepackage{inconsolata}
\begingroup
\makeatletter
\catcode`'=\active
\catcode``=\active
\g@addto@macro\@noligs
{\def'{{\fontencoding{TS1}\fontfamily{cmtt}\selectfont\textquotesingle}}%
\def`{{\fontencoding{TS1}\fontfamily{cmtt}\selectfont\textasciigrave}}%
}
\endgroup
\begin{document}
\begin{minted}{matlab}
disp('This string should have straight quotes!');
\end{minted}
\end{document}
也许应该把引号提高一点:
\documentclass{article}
\usepackage{minted}
\usepackage{inconsolata}
\begingroup
\makeatletter
\catcode`'=\active
\catcode``=\active
\gdef\raise@quotes#1{\raisebox{.1ex}{\fontencoding{TS1}\fontfamily{cmtt}\selectfont#1}}
\g@addto@macro\@noligs
{\def'{\raise@quotes{\textquotesingle}}%
\def`{\raise@quotes{\textasciigrave}}%
}
\endgroup
\begin{document}
\begin{minted}{matlab}
disp('This string should have straight quotes!');
\end{minted}
\end{document}
答案2
自 2013 年 6 月 14 日起,inconsolata
Michael Sharpe 开发了一个名为 的新版本的软件包inconsolata-zi4
,它提供了一种带有直引号的字体,可以在逐字环境中自动使用(使用upquote
)。(目前,新软件包有被取代 inconsolata
在 CTAN 上,因此更新时请小心;请参阅这个问题)使用新的软件包,它可以按预期工作:
\documentclass{article}
\usepackage{minted}
\usepackage[varqu]{zi4}% updated inconsolata with variant upquotes
\AtBeginDocument{% needed for pygmentize 1.6
\def\PYZsq{\textquotesingle}%
}
\begin{document}
\begin{minted}[fontfamily=zi4]{matlab}
disp('This string should have straight quotes!');
\end{minted}
\end{document}
(与最近的\def
合作取自upquote
pygments
这个答案。