Question

J'ai une macro qui font figures côte à côte, ci-dessous. Il utilise subfloats, et il va dans une figure.

\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}
}

Malheureusement, celui-ci utilise les compteurs de figure, pas ceux Listings. Il apparaît également dans la mauvaise table des matières, et utilise le mot « figure » au lieu de « Listes » dans la légende, les références à elle, etc. Est-il un moyen de remédier à cette situation?

Je préférerais un moyen simple, comme l'ajout du mot « Annonce » quelque part ...

Était-ce utile?

La solution

Au lieu d'utiliser le flotteur intégré de lstlistings, les envelopper dans un flotteur personnalisé:

\begin{mylisting}
\begin{lstlisting}
int x = 1;
\end{lstlisting}
\end{mylisting}

Ensuite, utilisez le même flotteur (MyListing) pour l'utilisation de subfloat:

\newcommand{\listbylist}[6][showlines=true]{
  \begin{mylisting}
    \subfloat[ ]{
      ...
    }
    \hfill{}
    \subfloat[ ]{
      ...
    }
    \hfill{}
    \caption[#5]{#6}
    \label{#4}
  \end{mylisting}
}

Cela doit tous être mis en place dans le préambule:

\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}

Autres conseils

Vous pouvez jeter un oeil à la documentation subfloat. Je suis sûr qu'il ya un appel macro qui rend compte de subfloat dans l'environnement « figure ». Vous pouvez essayer de redéfinir l'environnement « figure » à l'encontre de « listes » -. Si cela a du sens du tout

OK, c'est la mauvaise réponse, mais je l'ai fait presque y arriver comme ça. Il n'a pas seulement ajouter des légendes à droite \listof.

Près de là. Il pourrait probablement être mieux fait, mais presque fonctionne. Tout ce qui reste est de faire la légende apparaît dans le fichier Lol, pas le fichier .loc. Je vais poser une question à ce sujet, puis corriger cette réponse.

En fait, ce juste le dos contre « figure », et des copies sur le comptoir « des annonces ». Après la figure, il les remet.

% 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}
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top