在/ ifthenelse块中使用铸造的包包含代码在LATEX中不起作用

时间:2019-09-11 22:18:24

标签: latex

我正在尝试生成一般文档,并(使用\ ifthenelse)使用不同的pdf版本。当我尝试使用铸造好的包包含代码块时,会生成不带代码的pdf。

如果我在\ ifthenelse块之外尝试,则包含该代码。街区内部是唯一不工作的地方。 \ lstset也是如此。

\documentclass{article}

\usepackage{minted}

\usepackage{xcolor}

\usepackage{ifthen}


\begin{document}

...

\newboolean{xcpp}

\setboolean{xcpp}{true}

\ifthenelse{xcpp}{

Test

\begin{listing}[ht] 
\begin{minted}{cpp}
int main() {
    int i=0;
    for (i=1; i<10; i++){
        int j=10;
        std::cout<<i<<" j: "<<j<<std::endl;
    }
    std::cout<<"\ni al salir del ciclo: "<<i; 
    return 0;
}
\end{minted}
\caption{Minimal working example}
\label{listing:1}
\end{listing}
}{}

\end{document}

1 个答案:

答案 0 :(得分:0)

易碎的内容(例如代码)在另一个宏的参数内总是很棘手-但是,除了尝试解决此问题外,还有一个简单的解决方法:

\documentclass{article}

\usepackage{minted}
\usepackage{xcolor}

\begin{document}

\newif\ifxcpp
\xcpptrue % <- comment this line to switch between the two versions

\ifxcpp
    \begin{listing}[ht] 
    \begin{minted}{cpp}
    int main() {
        int i=0;
        for (i=1; i<10; i++){
            int j=10;
            std::cout<<i<<" j: "<<j<<std::endl;
        }
        std::cout<<"\ni al salir del ciclo: "<<i; 
        return 0;
    }
    \end{minted}
    \caption{Minimal working example}
    \label{listing:1}
    \end{listing}
\else
    something else
\fi

\end{document}