etoolbox
我在使用 minted 包与's结合使用时遇到了问题iftoggle
。它应该与这个beamer
问题相关(或基本上是相同的错误):框架中的铸造环境导致错误但是那里提出的解决方案(使用框架fragile
)不能以这种方式应用于标准文档。
以下 MWE 在以下情况下会出现错误\toggletrue{test}
:
\documentclass{report}%
\usepackage{etoolbox}
\newtoggle{test}
\toggletrue{test}
\usepackage{minted}
\begin{document}
\iftoggle{test}{
\begin{minted}
test
\end{minted}
}{}
test
\end{document}
错误是
(./mwe.aux)
(/usr/local/texlive/2016/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
)
! Missing \endcsname inserted.
<to be read again>
\def
l.15 }
{}
我该如何解决这个问题?
答案1
您不能minted
在另一个命令的参数中包含环境。
对于这种特殊情况,你可以这样做
\iftoggle{test}{\iftrue}{\iffalse}
\begin{minted}
test
\end{minted}
\fi
完整示例
\documentclass{report}
\usepackage{minted}
\usepackage{etoolbox}
\newtoggle{test}
\toggletrue{test}
\begin{document}
\iftoggle{test}{\iftrue}{\iffalse}
\begin{minted}{text}
test
\end{minted}
\fi
test
\togglefalse{test}
\iftoggle{test}{\iftrue}{\iffalse}
\begin{minted}{text}
test
\end{minted}
\fi
test
\end{document}