有没有办法将代码列表拆分到多个页面中,当它们包含在 longtable 中时?例如,以下代码:
\documentclass{article}
\usepackage{listings}
\usepackage{longtable}
\begin{document}
\begin{longtable}{ll}
\textbf{Language} & \textbf{Code}\\\hline
C++ &
\begin{lstlisting}[language=C++]
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
\end{lstlisting}
\end{longtable}
\end{document}
第一页大部分空白。当然,listings 可以将代码拆分到多个页面,longtable 也可以拆分到多个页面。这是两者结合的情况。
答案1
\documentclass{article}
\usepackage{listings}
\newenvironment{codes}
{\list{}{\labelwidth0pt
\leftmargin2cm
\itemindent-\leftmargin
\renewcommand\makelabel[1]{%
\makebox[0pt][r]{\textbf{##1} }}}}
{\endlist}
\begin{document}
\begin{codes}
\item[C++]
\begin{lstlisting}[language=C++]
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
int a7;
int a8;
int a9;
\end{lstlisting}
\end{codes}
\end{document}