![如何在 bussproofs 证明树中显示用 lstlisting 格式化的代码?](https://linux22.com/image/301863/%E5%A6%82%E4%BD%95%E5%9C%A8%20bussproofs%20%E8%AF%81%E6%98%8E%E6%A0%91%E4%B8%AD%E6%98%BE%E7%A4%BA%E7%94%A8%20lstlisting%20%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%9F.png)
我希望将格式化为 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}