2010-06-30 2 views
3

Использование LaTeX, мне нужно показать фрагмент кода внутри таблицы. Вот пример того, что я пытаюсь сделать:LaTeX: удалить левое поле листинга внутри таблицы

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

Вот результат я получаю:

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

Как вы можете видеть, слева от кода есть запас. Я предполагаю, что это поле для нумерации, но мне не нужна нумерация и хотелось бы избавиться от нее. Я попытался изменить некоторые параметры (numbersep, xleftmargin), но никто не работает, как я желаю.

UPDATE

Вот полный документ, демонстрирующий проблему:

\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

К сожалению, я не в состоянии воспроизвести вашу ошибку. Я протестировал с классом article-documentclass и предоставленным вами фрагментом, но не было никакого отступа. В любом случае, вы можете попытаться написать '\ noindent \ begin {lstlisting}', который избегает абзаца абзаца (должен использоваться в начале). – tux21b

+0

То же самое здесь, без отступа. Можем ли мы увидеть вашу преамбулу? –

+0

@ tux21 и @Joseph Wright: Я обновил свой вопрос. Мой первый фрагмент кода не показывал, что моя таблица была частью элемента в перечислении. Это источник проблемы, но я не знаю, как ее решить. –

ответ

2

Да, запас действительно идет из перечисления. Но, к счастью, пакет документации нот список пакетов:

resetmargins = истина | ложь (по умолчанию: ложь)

Если это правда, отступы из списка сред, таких как Перечислим или детализировать сбрасывается, т.е. не используется.

Таким образом, следующее должно помочь:

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

С уважением,
Christoph

+0

отлично! теперь он работает нормально. Большое спасибо ! –

7

Проблема вызвана окружением стола. По умолчанию латекс вставляет небольшое пространство перед строкой. Этого можно избежать, используя код @{} перед первой спецификацией столбца.

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

Для получения дополнительной информации о @{} см this link.

Ваш полный пример кода будет тогда

\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: Большое спасибо за подсказку, я не знал о '@ {}'.Это не решает мою актуальную проблему (но tux21b делает). Благодаря ! –

 Смежные вопросы

  • Нет связанных вопросов^_^