Minted+Inconsolata:直引号

Minted+Inconsolata:直引号

我用minted它来显示我的源代码,并使用 Inconsolata 包来设置输出字体。不幸的是,这会产生以下丑陋的结果(请注意引号的方向:

引号形状不正确的示例字符串

我觉得这是 LaTeX 使用智能引号的一次糟糕尝试,于是我尝试使用该upquote包。结果如下:

使用 Inconsolata 字体时错误地不显示引号的示例字符串

使用此 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 字体却不行:

带直引号的示例字符串,使用 tt 字体

我不确定发生了什么事。

为什么我不能同时拥有我想要的字体和合适的引号?有什么想法吗?

答案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 日起,inconsolataMichael 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合作取自upquotepygments这个答案

相关内容