我希望将格式化为 Java 代码lstlisting
作为证明树中的结论bussproofs
。代码必须放在框中,以便两个代码片段可以并排显示在同一个结论中。我目前有以下不起作用的代码。它适用于纯文本而不是列表,但看起来很糟糕。我如何将 Java 的列表放入其中?
\documentclass[12pt, twoside]{scrreprt}
\usepackage{listings}
\usepackage{bussproofs}
\begin{document}
\begin{prooftree}
\AxiomC{more proof}
\UnaryInfC{
\parbox{.5\textwidth}{
\begin{lstlisting}[language=Java]
//nicely formated code
\end{lstlisting}
}
\parbox{.5\textwidth}{
\begin{lstlisting}[language=Java]
//more nicely formated code
\end{lstlisting}
}
}
\end{prooftree}
\end{document}
答案1
在这种情况下,您不能lstlisting
在另一个命令的参数中使用\UnaryInfC
。通常的技巧是在框中准备列表,并在参数中使用该框:
\documentclass[12pt, twoside]{scrreprt}
\usepackage{listings}
\usepackage{bussproofs}
\newsavebox{\lstA}
\newsavebox{\lstB}
\begin{document}
\begin{prooftree}
\AxiomC{test}
\UnaryInfC{A}{B}
\end{prooftree}
\begin{prooftree}
\begin{lrbox}{\lstA}
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Java]
//nicely formatted code
\end{lstlisting}
\end{minipage}
\end{lrbox}
\begin{lrbox}{\lstB}
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Java]
//different formatted code
\end{lstlisting}
\end{minipage}
\end{lrbox}
\AxiomC{more proof}
\UnaryInfC{\usebox{\lstA}}{\usebox{\lstB}}
\end{prooftree}
\end{document}