2010-06-30 35 views
3

En utilisant LaTeX, j'ai besoin de montrer un extrait de code à l'intérieur d'une table. Voici un exemple de ce que je suis en train de faire:LaTeX: supprimer la marge gauche de la liste à l'intérieur d'une table

\begin{document} 
Par exemple : 
\begin{center} 
\begin{tabular}{lp{5cm}l} 
\hline 
Méthode & Description & Exemple d'utilisation\\ 
\hline 
\texttt{isLetter()}& Indique si le caractère est une lettre de l'alphabet. & 
\begin{lstlisting}[numbersep=0pt] 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
\end{lstlisting} \\ 
\hline 
\texttt{toUpper()}& Retourne le même caractère mais en majuscules. & toto \\ 
\hline 
\end{tabular} 
\end{center} 
\end{document} 

Voici le résultat que je reçois:

http://img693.imageshack.us/img693/1709/latexcodetable.png.

Comme vous pouvez le voir, il y a une marge sur la gauche du code. Je suppose que cette marge est là pour la numérotation, mais je n'ai pas besoin de numérotation et je voudrais m'en débarrasser. J'ai essayé de changer quelques options (numbersep, xleftmargin) mais aucun ne fonctionne comme je souhaite.

MISE À JOUR

Voici le document montrant le problème:

\documentclass[a4paper,11pt]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern,textcomp} 
\usepackage[frenchb]{babel} 
\usepackage{listings} 

\begin{document} 
    \begin{enumerate} 
    \item Par exemple : 
     \begin{center} 
     \begin{tabular}{lp{5cm}l} 
     \hline 
     Méthode & Description & Exemple d'utilisation\\ 
     \hline 
     \texttt{isLetter()}& Indique si le caractère est une lettre de l'alphabet. & 
     \begin{lstlisting}[numbersep=0pt] 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
// IsLetter vaut vrai 
QChar MyChar2('&'); 
IsLetter = MyChar2.isLetter(); 
// IsLetter vaut faux 
     \end{lstlisting}\\ 
     \hline 
     \texttt{toUpper()}& Retourne le même caractère mais en majuscules. & toto \\ 
     \end{tabular} 
     \end{center} 
    \end{enumerate} 
\end{document} 

Je peux en déduire que le problème est que la table est un élément d'une énumération.

Existe-t-il un moyen de résoudre ce problème?

+0

Malheureusement, je ne suis pas en mesure de reproduire votre erreur. J'ai testé avec l'article-documentclass et l'extrait que vous avez fourni, mais il n'y avait pas de retrait. De toute façon, vous pouvez essayer d'écrire '\ noindent \ begin {lstlisting}' ce qui évite l'indentation du paragraphe (doit être utilisé au début). – tux21b

+0

Même ici, pas de retrait. Pouvons-nous voir votre préambule? –

+0

@ tux21 et @Joseph Wright: J'ai mis à jour ma question. Mon premier extrait de code n'a pas montré que ma table faisait partie d'un élément d'une énumération. C'est la source du problème, mais je ne sais pas comment le résoudre. –

Répondre

2

Oui, la marge vient en effet de l'énumération. Mais heureusement, la documentation du paquet des notes de paquet annonce:

resetmargins = true | false (valeur par défaut: false)

Si cela est vrai, indention des environnements de liste comme enumerate ou détaillez est remis à zéro, à savoir non utilisé.

Par conséquent, ce qui suit devrait aider:

\begin{lstlisting}[numbersep=0pt,resetmargins=true] 

Cordialement,
Christoph

+0

génial! ça fonctionne bien maintenant. Merci beaucoup ! –

7

Le problème est dû à l'environnement de la table. Par défaut, le latex insère un petit espace devant une rangée. Cela peut être évité en utilisant le code @{} avant la spécification de la première colonne.

\begin{tabular}{@{}lp{5cm}l} 
... 
\end{tabular} 

Pour plus d'informations sur @{} voir this link.

Votre exemple complet de code sera alors

\documentclass[a4paper,11pt]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern,textcomp} 
\usepackage[frenchb]{babel} 
\usepackage{listings} 

\begin{document} 
    \begin{enumerate} 
    \item Par exemple : 
     \begin{center} 
     \begin{tabular}{@{}lp{5cm}l} 
     \hline 
     Méthode & Description & Exemple d'utilisation\\ 
     \hline 
     \texttt{isLetter()}& Indique si le caractère est une lettre de l'alphabet. & 
     \begin{lstlisting}[numbersep=0pt] 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
// IsLetter vaut vrai 
QChar MyChar2('&'); 
IsLetter = MyChar2.isLetter(); 
// IsLetter vaut faux 
     \end{lstlisting}\\ 
     \hline 
     \texttt{toUpper()}& Retourne le même caractère mais en majuscules. & toto \\ 
     \end{tabular} 
     \end{center} 
    \end{enumerate} 
\end{document} 
+0

@midtiby: merci beaucoup pour le conseil, je ne connaissais pas '@ {}'.Cela ne résout pas mon problème réel (mais tux21b le fait). Merci ! –