可以禁用此行为吗?或者是否有需要在 python 词法分析器中更改特定的行?
一个最小的工作示例
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{XITS}
\setmonofont{Consolas}
\usepackage{minted}
\setminted[python]{
linenos=true,
breaklines=true,
encoding=utf8,
fontsize=\footnotesize,
frame=lines
}
\begin{document}
\section{Some code in this section}
\begin{minted}{python}
def add(α, β):
return α + β
\end{minted}
\end{document}
编辑:我正在使用 xelatex
答案1
这似乎是 Python 词法分析器中的一个错误。如果你不需要环境\fcolorbox
内部minted
,这里有一个 hack:
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{XITS}
\setmonofont{Source Code Pro} % I don't have Consolas
\usepackage{minted}
\setminted[python]{
linenos=true,
breaklines=true,
encoding=utf8,
fontsize=\footnotesize,
frame=lines
}
\usepackage{etoolbox}
\makeatletter
\AtBeginEnvironment{minted}{\dontdofcolorbox}
\def\dontdofcolorbox{\renewcommand\fcolorbox[4][]{##4}}
\makeatother
\begin{document}
\section{Some code in this section}
\begin{minted}{python}
def add(α, β):
return α + β
\end{minted}
\end{document}
\end{document}
以下也有补丁\inputminted
:
\begin{filecontents*}{\jobname.py}
def add(α, β):
return α + β
\end{filecontents*}
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{XITS}
\setmonofont{Source Code Pro} % I don't have Consolas
\usepackage{minted}
\setminted[python]{
linenos=true,
breaklines=true,
encoding=utf8,
fontsize=\footnotesize,
frame=lines
}
\usepackage{etoolbox,xpatch}
\makeatletter
\AtBeginEnvironment{minted}{\dontdofcolorbox}
\def\dontdofcolorbox{\renewcommand\fcolorbox[4][]{##4}}
\xpatchcmd{\inputminted}{\minted@fvset}{\minted@fvset\dontdofcolorbox}{}{}
\xpatchcmd{\mintinline}{\minted@fvset}{\minted@fvset\dontdofcolorbox}{}{} % see https://tex.stackexchange.com/a/401250/
\makeatother
\begin{document}
\section{Some code in this section}
\begin{minted}{python}
def add(α, β):
return α + β
\end{minted}
\inputminted{python}{\jobname.py}
\end{document}
答案2
我建议你尝试使用不突出的铸造风格\PYG{err}
\usemintedstyle{xcode}
当然,如果你的红框是由于某些\PYG{err}
答案3
只是为了完整性,因为我还不能发表评论:
egreg 的 Answer 中的 hack 也可以应用于\mintinline
命令
\xpatchcmd{\mintinline}{\minted@fvset}{\minted@fvset\dontdofcolorbox}{}{}
问候
答案4
我遇到了类似的问题,但无法禁用所有 minted 环境的错误突出显示。我想出了以下对我有用的 @egreg 修改版本。
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{XITS}
\setmonofont{Source Code Pro} % I don't have Consolas
\usepackage{minted}
\setminted[python]{
linenos=true,
breaklines=true,
encoding=utf8,
fontsize=\footnotesize,
frame=lines
}
\usepackage{etoolbox}
\makeatletter
\AtBeginEnvironment{noerr}{\dontdofcolorbox}
\def\dontdofcolorbox{\renewcommand\fcolorbox[4][]{##4}}
\makeatother
\newenvironment{noerr}{}
\begin{document}
\section{Some code in this section}
\begin{noerr}
\begin{minted}{python}
def add(α, β):
return α + β
\end{minted}
\end{noerr}
\end{document}
因此,我没有fcolorbox
在minted
环境中进行替换,而是创建了一个新环境noerr
,在其中fcolorbox
进行了替换。这样,我既可以minted
在环境中使用该环境noerr
来抑制高亮,也可以在外部使用该环境来获得高亮。
我目前没有\mintinline
或的对应版本\inputminted
。