在 \ifthenelse 中使用 minted 时出现 FancyVerb 错误

在 \ifthenelse 中使用 minted 时出现 FancyVerb 错误

我是 LaTeX 新手,想用 minted 添加一些代码,只有当 \boolean 变量为真时才会渲染这些代码。这是我的代码:

\documentclass{article}

\usepackage {minted}
\usepackage {ifthen}

\newboolean{printCode}
\setboolean{printCode}{true}

\begin{document}
\ifthenelse{\boolean{printCode}}{
\begin{minted}{c}
// comment
int i = 1;
\end{minted}
}{}
\end{document}

这会导致错误:

! FancyVerb Error:
  Extraneous input ` // comment int i = 1; \end {minted} ' between \begin{minte
d}[<key=value>] and line end
.
\FV@Error ... {FancyVerb Error:
\space \space #1
}

l.15 }{}

当我删除 \ifthenelse 部分时,它工作正常。此外,如果 printCode 为 false,它也可以工作(不会打印代码)。所以问题是:我在这里做错了什么?

谢谢!Ingo。

答案1

您不能将minted环境作为其他命令的参数:这是对每种“逐字”事物的限制,因此verbatimlstlistingminted

您可以使用更基本的语法来避免该参数:

\documentclass{article}

\usepackage {minted}
\usepackage {ifthen}

\newboolean{printCode}
\setboolean{printCode}{true}

\begin{document}
Text to be printed so there's output even if the \verb|\setboolean|
line is commented out.

\ifprintCode
\begin{minted}{c}
// comment
int i = 1;
\end{minted}
\fi

\end{document}

相关内容