2010-10-20 22 views
4

Je veux faire un code de colonne double en latex mais avec la légende au-dessus des deux colonnes. Ex:Configurer la légende sur l'environnement de listes en utilisant multicol (latex)

Program 1 : some text here for the caption 

1 //col 1    7 //col2 
2 void main (void)  8 void foo(void) 
3 {     9 { 
4  //just a test 10  int c; 
5  return 0;  11  c = 0; 
6 }     12 } 

J'utilise annonces. Pour accomplir la mise en page ci-dessus, j'ai coupé dans deux listes à l'intérieur d'une table. Il y a quelques problèmes avec cette approche, je dois diviser manuellement le code et regarder le résultat dans le PDF.

Je voudrais utiliser l'option [multicol = 2], mais avec ceci, la pile de légende seulement sur la première colonne. Est-ce que quelqu'un maintenant comment surmonter (si possible?)

Program 1 : some text 7 //col2 
    here for the caption 8 void foo(void) 
1 //col 1    9 { 
2 void main (void)  10  int c; 
3 {     11  c = 0; 
4  //just a test  12 } 
5  return 0;   
6 }      

Juste au-dessous est le code non travail

\documentclass{article} 
\usepackage{listings} 
\usepackage{multicol} 
\begin{document} 

\lstset{ 
    language=C, 
    breaklines=true, 
    prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}, 
} 

\begin{lstlisting}[stepnumber=1,multicols=2,caption=Caption test to confirm that multicol does not like large captions] 
void MudaDigito(char val) 
{ 
    if (pos == 0) 
    { 
    v0 = val; 
    } 
    if (pos == 1) 
    { 
    v1 = val; 
    } 
    if (pos == 2) 
    { 
    v2 = val; 
    } 
    if (pos == 3) 
    { 
    v3 = val; 
    } 
} 
\end{lstlisting} 

\ end {document}

+1

Ne serait-il fonctionner si vous pouvez simplement ajouter un titre (peut-être une section ou tout simplement du texte en gras) juste avant d'afficher votre liste? Donc, il serait indépendant du paquet annonces. – nbz

+0

@nEm: bonne suggestion, et une option dans certains cas, bien que vous n'ayez pas à utiliser les fonctions de numérotation des légendes de LaTeX. J'ai également expérimenté avec inclure une section centrée et la légende et les résultats étaient décevants visuellement puisque la légende est restée en format 2column. –

Répondre

2

i eu le même problème. J'ai trouvé une solution. Ce n'est pas propre mais ça marche. Juste en dessous est le code de travail.


\documentclass{article} 
\usepackage{listings} 
\usepackage{multicol} 
\newcommand{\listingcaption}[1]% 
{% 
\refstepcounter{lstlisting}\hfill% 
Listing \thelstlisting -- #1\hfill%\hfill% 
}% 
\begin{document} 
\lstset{ 
    language=C, 
    breaklines=true, 
    prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}, 
} 
\listingcaption{Caption test to confirm that multicol does not like large captions\label{list1}} 
\begin{lstlisting}[stepnumber=1,multicols=2] 
void MudaDigito(char val) 
{ 
    if (pos == 0) 
    { 
    v0 = val; 
    } 
    if (pos == 1) 
    { 
    v1 = val; 
    } 
    if (pos == 2) 
    { 
    v2 = val; 
    } 
    if (pos == 3) 
    { 
    v3 = val; 
    } 
} 
\end{lstlisting} 
See listing \ref{list1} 
\end{document} 
+0

Note: que les légendes qui en résultent n'apparaissent pas dans le tableau des listes. (Du moins pas si vous utilisez classicthesis) –

+1

Ne fonctionne pas pour moi. La légende est montrée dans le texte et pas avec la liste elle-même. Je veux que la liste soit affichée comme float = t. – Mahdi