以下是一个例子:
\documentclass{article}
\usepackage[sharp]{easylist} % use # symbol to denote a list
\usepackage{minted}
\begin{document}
\begin{easylist}[enumerate]
# Profile Python
\begin{minted}{python}
import math
\end{minted}
\end{easylist}
\end{document}
为了使其工作,我可以使用其他符号代替\usepackage[at]{easylist}
。sharp
但我很好奇,因为错误消息无法真正告诉我为什么它不起作用。有人知道为什么我不能使用吗#
?
错误信息是:
_./main.out.pyg:2:
Use of \FV@PYG doesn't match its definition.
\PYG #1#2->\FV@PYG {
#1}{\FancyVerbBreakStart #2\FancyVerbBreakStop }
l.2 \PYG{k+kn}{import} \PYG{n+nn}{math}
更新:
请参阅@egreg 的回答下面(和评论!)寻找解释。
解决上述问题的方法是使用\Activate
.\Deactivate
提供的命令easylist
:
\documentclass{article}
\usepackage[sharp]{easylist} % use # symbol to denote a list
\usepackage[cache=false]{minted}
\title{useless}
\begin{document}
\begin{easylist}[enumerate]
# Deactivate it first,
\Deactivate
\begin{minted}{python}
import math
\end{minted}
\Activate
# then activate it again.
# Good!
\end{easylist}
\end{document}
答案1
选项sharp
使#
变成活动字符。由 生成的文件pygmentize
包含宏定义,而宏定义又使用#
,并且由于位于 内easylist
,因此该字符不再是参数说明符。
因此,所有需要使用的带有参数的辅助宏都minted
无法按预期工作。
使用其他字符可能会导致其他问题;我尝试了该at
选项,但@
不起作用minted
。例如
\documentclass{article}
\usepackage[at]{easylist} % use # symbol to denote a list
\usepackage{minted}
\begin{document}
\begin{easylist}[enumerate]
@ Profile Python
\begin{minted}{python}
@classmethod
\end{minted}
\end{easylist}
\end{document}
将不会打印@
。
此外,minted
不会尊重列表中的当前缩进。
以下是比较:
\documentclass{article}
\usepackage{easylist}
\usepackage{minted}
\begin{document}
\begin{enumerate}
\item Profile Python
\begin{minted}{python}
# This program prints Hello, world!
print('Hello, world!')
\end{minted}
\begin{enumerate}
\item Indented
\begin{minted}{python}
# This program prints Hello, world!
print('Hello, world!')
\end{minted}
\end{enumerate}
\end{enumerate}
\begin{easylist}[enumerate]
§ Profile Python
\begin{minted}{python}
# This program prints Hello, world!
print('Hello, world!')
\end{minted}
§§ Indented
\begin{minted}{python}
# This program prints Hello, world!
print('Hello, world!')
\end{minted}
\end{easylist}
\end{document}