![Minted 软件包在使用 inconsolata 为 python 文档字符串添加三重“”时会抛出字体警告](https://linux22.com/image/304201/Minted%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%9C%A8%E4%BD%BF%E7%94%A8%20inconsolata%20%E4%B8%BA%20python%20%E6%96%87%E6%A1%A3%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E4%B8%89%E9%87%8D%E2%80%9C%E2%80%9D%E6%97%B6%E4%BC%9A%E6%8A%9B%E5%87%BA%E5%AD%97%E4%BD%93%E8%AD%A6%E5%91%8A.png)
对于minted
代码列表,我已将字体设置为 inconsolata 并收到警告:
LaTeX Font Warning: Font shape `T1/zi4/m/it' undefined
当使用 Inconsolata 字体和 Python 文档字符串时——例如:
def foo():
""" Docstring
"""
return 0
如果不存在文档字符串,则不会发出警告。
最小示例:
\documentclass[
12pt,
paper=a4
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{libertine}
\usepackage[libertine,cmintegrals,cmbraces,vvarbb]{newtxmath}
\usepackage{inconsolata}
\usepackage{minted}
\begin{document}
Some Text.
\inputminted{Python}{some_code.py}
\end{document}
编辑:尽管您已解决问题,警告仍然出现。可能是因为我定义了自己的环境:
\documentclass[
12pt,
paper=a4
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{libertine}
\usepackage[libertine,cmintegrals,cmbraces,vvarbb]{newtxmath}
\usepackage{inconsolata}
\usepackage{minted}
\usepackage{etoolbox}
\AtBeginEnvironment{minted}{\let\itshape\relax}
\newmintedfile[Python]{python}{
fontsize=\small,
%bgcolor=mintedback,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framerule=1pt,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
}
\begin{document}
Some Text.
\Python{test.py}
\end{document}
答案1
您无法避免该警告,因为 Python 的 Pygments 词法分析器对三重引号字符串选择了斜体。
如果我不加载inconsolata
,则输出为
Inconsolata 字体没有斜体/倾斜形状,因此发出警告并使用直立字体。您可能应该使用具有斜体形状的等宽字体。
您可以通过选择斜体的等宽字体或提供缺失的字体替代来避免警告。
请注意,这filecontents*
只是为了使示例自成一体。
\begin{filecontents*}{\jobname.py}
def foo():
""" Docstring
"""
return 0
\end{filecontents*}
\documentclass[
12pt,
paper=a4
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{libertine}
\usepackage[libertine,cmintegrals,cmbraces,vvarbb]{newtxmath}
\usepackage{inconsolata}
\usepackage{minted}
\makeatletter
% there's no italic/slanted for Inconsolata
\@namedef{T1/zi4/m/it}{<->ssub*zi4/m/n}
\@namedef{T1/zi4/b/it}{<->ssub*zi4/b/n}
\@namedef{T1/zi4/bx/it}{<->ssub*zi4/b/n}
\@namedef{T1/zi4/m/sl}{<->ssub*zi4/m/n}
\@namedef{T1/zi4/b/sl}{<->ssub*zi4/b/n}
\@namedef{T1/zi4/bx/sl}{<->ssub*zi4/b/n}
\makeatother
\newmintedfile[Python]{python}{
fontsize=\small,
%bgcolor=mintedback,
fontfamily=tt,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framerule=1pt,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
}
\begin{document}
Some Text.
\begin{minted}{python}
def foo():
""" Docstring
"""
return 0
\end{minted}
\Python{\jobname.py}
\end{document}