我有以下代码:
{
\lstset{language=C,
basicstyle=\tiny,
tabsize=3,
frame=lines,
breaklines=true,
breakatwhitespace=true}
\lstinputlisting[float,caption={Caption1},label=txt:Netlink,lastline=69]{file.c}
}
{
\lstset{language=C,
basicstyle=\tiny,
tabsize=3,
frame=lines,
breaklines=true,
breakatwhitespace=true}
\ContinuedFloat
\lstinputlisting[float,caption={Caption 1 (cont.)},label=txt:Netlink,firstline=71]{code.c}
}
它会产生类似这样的结果:
Listing 1.1: Caption 1
The code
Listing 1.2: Caption 1 (cont.)
The code
我希望它就像你使用 \Continuedfloat
Listing 1.1: Caption 1
The code
Listing 1.1: Caption 1 (cont.)
The code
然后在列表列表上我希望它只显示一次。
我不知道该怎么做。任何帮助我都乐意。
编辑 1: (针对@GonzaloMedina)
这是包括 \lstlistoflistings 的结果
那里可能只有一个条目吗?
答案1
我定义了两个命令\savecount
和\contcap
。在代码的第一部分之后,调用\savecont
(这仅存储计数器的当前值lstlisting
)。对于后续部分,在组内调用\contcap
(这会产生适当的计数器值并使用特殊的标题格式来产生所需的“(Cont.)”文本):
\documentclass{article}
\usepackage{listings,caption}
\DeclareCaptionFormat{cont}{#1~(cont.)#2#3 }
\newcounter{tmp}
\newcommand\savecount{\setcounter{tmp}{\value{lstlisting}}}
\newcommand\contcap{%
\setcounter{lstlisting}{\value{tmp}}
\addtocounter{lstlisting}{-1}
\captionsetup[lstlisting]{format=cont}}
\lstset{language=C,
basicstyle=\tiny,
tabsize=3,
frame=lines,
breaklines=true,
breakatwhitespace=true
}
\begin{document}
\lstlistoflistings
\lstinputlisting[float,caption={the first part of a listing},label=txta:Netlink,lastline=2]{code.c}
\savecount
\begingroup
\contcap
\lstinputlisting[float,nolol,caption={the second part of a listing},label=txtb:Netlink,firstline=3,lastline=5]{code.c}
\endgroup
\begingroup
\contcap
\lstinputlisting[float,nolol,caption={the third part of a listing},label=txtc:Netlink,firstline=6]{code.c}
\endgroup
\end{document}
为了防止最终列表列表中出现多个条目,请使用nolol
键来表示延续。