下面有一个并排数字的宏。它使用子浮点数,所以它在图中。
\newcommand{\listbylist}[6][showlines=true]{
\begin{figure}
\subfloat[ ]{
\lstinputlisting[showlines=true,#1]{#2}
\label{#4:A}
}
\hfill{}
\subfloat[ ]{
% by setting the frame to leftline, we avoid a box into oblivion
% turn off numbers
\lstinputlisting[showlines=true,frame=leftline,#1,numbers=none]{#3}
\label{#4:B}
}
\hfill{}
\caption[#5]{#6}
\label{#4}
\end{figure}
}
不幸的是,这使用了图计数器,而不是列表计数器。它也显示在错误的目录中,并在标题中使用“图”而不是“列表”,引用它等等。有没有办法纠正这个问题?
我更喜欢一种简单的方法,比如在某处添加“清单”这个词......
答案 0 :(得分:2)
不使用lstlistings的内置浮点数,而是将它们包装在自定义浮点数中:
\begin{mylisting}
\begin{lstlisting}
int x = 1;
\end{lstlisting}
\end{mylisting}
然后对子浮点用法使用相同的float(mylisting):
\newcommand{\listbylist}[6][showlines=true]{
\begin{mylisting}
\subfloat[ ]{
...
}
\hfill{}
\subfloat[ ]{
...
}
\hfill{}
\caption[#5]{#6}
\label{#4}
\end{mylisting}
}
这需要在序言中设置:
\newfloat{mylisting}{tbphH}{lopbl}[chapter]
\floatname{mylisting}{Listing}
\newsubfloat{mylisting}
\newcommand{\listofmylistings}{\listof{mylisting}{List of Listings}}
% if you use the hyperref package
\providecommand*\theHmylisting{\themylisting}
答案 1 :(得分:0)
您可能需要查看子浮点文档。我确信有一个宏调用会在“数字”环境中使子浮点计数。您可以尝试重新定义与“列表”相对应的“数字”环境 - 如果这有任何意义的话。
答案 2 :(得分:0)
\listof
添加标题。几乎就在那里。它 可能会做得更好,但这几乎有效。剩下的就是让标题出现在.lol文件中,而不是.loc文件中。我会问一个关于这个的问题,然后解决这个问题。
基本上,这只是备份“数字”计数器,并复制“清单”计数器。在数字之后,它将它们放回去。
% Need a counter to save the value to
\newcounter{pbsavefigurecounter}
\newcommand{\listbylist}[6][showlines=true]{
{% scope
% Change ``Figure'' to ``Listing''
\renewcommand{\figurename}{Listing}
% save the figure counter
\setcounter{pbsavefigurecounter}{\value{figure}}
% copy the listings counter to the figure counter
\setcounter{figure}{\value{lstlisting}}
\begin{figure}
\subfloat[ ]{
\lstinputlisting[nolol,showlines=true,#1]{#2}
\label{#4:A}
}
\hfill{}
\subfloat[ ]{
% by setting the frame to leftline, we avoid a box into oblivion
% turn off numbers
\lstinputlisting[nolol,showlines=true,frame=leftline,#1,numbers=none]{#3}
\label{#4:B}
}
\hfill{}
% \float@caption{lol}[#5]{#6}
\label{#4}
\end{figure}
% Update the listings counter
\setcounter{lstlisting}{\value{figure}}
% Restore the figure counter
\setcounter{figure}{\value{pbsavefigurecounter}}
% Change ``Listing'' back to ``Figure''
\renewcommand{\figurename}{Figure}
}
}