作为后续问题另一个环境中的 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}}
和不一定是需要的,这取决于您的最终目标minipage
。center
\mintinline
您应该能够像处理其他宏一样处理\lstinline
它,而不会遇到任何问题。此外,在大多数情况下,只要您不使用#
和%
字符,您就应该能够像处理其他宏一样处理它。