我正在尝试使用 为 Python 代码创建一个环境minted
,但我总是得到FancyVerb error
。这是我的代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{minted}
\usepackage{color, colortbl}
\definecolor{Gray}{gray}{0.9}
\newenvironment{code}[1][python]
{
\begin{table}[ht]
\begin{tabular}{p{0.8\textwidth}}
\rowcolor{Gray}
\begin{minted}{#1}
}
{
\end{minted}
\end{tabular}
\end{table}
}
\begin{document}
\begin{code}
print("This is some code example")
\end{code}
\end{document}
我读过这篇文章这回答说这是这种包的问题,不能与一起使用\newenvironment
。有什么办法吗?我不介意完全改变方法,但我想要的结果是能够有一个根据所需语言格式化文本的代码环境(在我的情况下是python,但最好我也希望能够将其重用于其他语言)。
答案1
我建议采用不同的方法,即使用tcolorbox
。
\documentclass{article}
\usepackage[many]{tcolorbox}
\tcbuselibrary{minted,skins}
%\usepackage{minted}
\definecolor{Gray}{gray}{0.9}
\newtcblisting{code}[1][python]{
colback=Gray,
listing engine=minted,
minted language=#1,
listing only,
skin=tile,
width=0.8\textwidth
}
\BeforeBeginEnvironment{code}{\begin{table}[htp]}
\AfterEndEnvironment{code}{\end{table}}
\begin{document}
\begin{code}
print("This is some code example")
\end{code}
\begin{code}[C]
print("This is some code example")
\end{code}
\end{document}
让框更紧密地包围代码并不困难,请参阅的详尽手册tcolorbox
。
例如,如果我将代码更改为
\newtcblisting{code}[1][python]{
colback=Gray,
listing engine=minted,
minted language=#1,
listing only,
skin=tile,
sharp corners,
width=0.8\textwidth,
top=2pt,bottom=2pt,left=2pt,right=2pt,
}
\BeforeBeginEnvironment{code}{\begin{table}[htp]}
\AfterEndEnvironment{code}{\end{table}}
结果是