Using LaTeX, I need to show some code snippet inside a table. Here is an example of what I'm trying to do:
\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}
Here is the result I get :
.
As you can see, there is a margin on the left of the code. I guess this margin is there for numbering, but I don't need numbering and would like to get rid of it. I've tried changing some options (numbersep
, xleftmargin
) but none is working as I wish.
UPDATE
Here is the full document demonstrating the problem :
\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}
I can deduce that the problem is because the table is in a item of an enumeration.
Is there a way to solve this ?
The problem is caused by the table environment. By default latex inserts a small space in front of a row. This can be avoided by using the code @{}
before the first column specification.
\begin{tabular}{@{}lp{5cm}l}
...
\end{tabular}
For more information about @{}
see this link.
Your full code example will then be
\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}
Yes, the margin is indeed coming from the enumeration. But luckily, the package documentation of the listing package notes:
resetmargins= true|false (default: false)
If true, indention from list environments like enumerate or itemize is reset, i.e. not used.
Therefore, the following should help:
\begin{lstlisting}[numbersep=0pt,resetmargins=true]
Regards,
Christoph
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With