在 minted 2.0a³ 的新环境中使用 minted

在 minted 2.0a³ 的新环境中使用 minted

作为后续问题另一个环境中的 Lstinline 宏,我也想做同样的事情minted,但是受到以下因素的阻碍:

我使用了使用 minted 定义新环境minted但这似乎对最新版本(2.0 alpha 3 版)不太适用。\mintinline在最新版本中运行良好。我宁愿不要在这两者之间做出选择。

有任何已知的解决方法吗?

\documentclass[10pt]{article}
\makeatletter
\IfFileExists{minted.sty}{%
\usepackage{minted}
\usemintedstyle{euryris}
\usepackage{lineno}
\def\gobble##1{}
\renewcommand\DeleteFile[1]{}
\newenvironment{MyEnvironment}{% works fine in v1.7 ?
  \VerbatimEnvironment
  \minted@resetoptions
  \setkeys{minted@opt}{}
  \begin{center}
    \begin{minipage}{\linewidth}    
      \begin{VerbatimOut}{\jobname.pyg}}
{%
      \end{VerbatimOut}
      \minted@pygmentize{python}
      \DeleteFile{\jobname.pyg}
    \end{minipage}
    \end{center}}
}{}
\makeatother
\begin{document}

\section{Environment}
Have some python code:
\begin{MyEnvironment}
print(x**2)
\end{MyEnvironment}
...as the pleasure is all mine.

\section{Inline code}
Some serious inline code right here:~\mintinline{python}{print(x**2)}. Some seriously ugly \jobname.pyg to the right % works fine in v2.0 ?
\end{document}

我也希望嵌入\mintinline另一个宏。不确定是否lstinline可以使用相同的方法?

答案1

根据您正在做的事情,您可能需要查看\newminted\newmintinline宏。它们允许您使用自己的默认参数创建自定义版本。

如果你确实需要创建自己的包含的环境minted,那么这种方法可行且更简单,因为它不会进入内部minted

\newenvironment{MyEnvironment}{%
  \VerbatimEnvironment
  \begin{center}%
    \begin{minipage}{\linewidth}%
      \begin{minted}{python}}
{%
      \end{minted}%
    \end{minipage}%
  \end{center}}

和不一定是需要的,这取决于您的最终目标minipagecenter

\mintinline您应该能够像处理其他宏一样处理\lstinline它,而不会遇到任何问题。此外,在大多数情况下,只要您不使用#%字符,您就应该能够像处理其他宏一样处理它。

相关内容