代码之家  ›  专栏  ›  技术社区  ›  Jérôme

删除表中列表的左边距

  •  4
  • Jérôme  · 技术社区  · 16 年前

    使用 乳胶 ,我需要在表中显示一些代码片段。下面是我想做的一个例子:

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

    我得到的结果如下:

    .

    如您所见,代码左侧有一个边距。我想这个边距是用来编号的,但我不需要编号,我想把它去掉。我试过改变一些选择( numbersep , xleftmargin )但没有一个像我希望的那样工作。

    以下是演示问题的完整文档:

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

    我可以推断出这个问题是因为该表位于枚举的一个项中。

    2 回复  |  直到 6 年前
        1
  •  6
  •   Community Mohan Dere    6 年前

    是的,差额确实来自于列举。但幸运的是,清单包的包文档说明:

    resetmargins=true | false(默认值:false)

    如果为true,则从枚举或逐项列出等列表环境中进行缩进 已重置,即未使用。

    因此,以下内容应该有所帮助:

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

    当做,
    克里斯托夫

        2
  •  11
  •   midtiby    16 年前

    问题是由表环境引起的。默认情况下,latex在行前面插入一个小空间。这可以通过使用代码来避免 @{} 在第一列规范之前。

    \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}
    
        3
  •  0
  •   Cadoiz ganesh virkar    6 年前

    另一种方法是使用负左边距。

    \begin{enumerate}[
            xleftmargin=-40pt %the 40pt may not apply depending on your environment
        ]
        % ... your enumeration here ...
    \end{enumerate}
    

    (我在代码段列表中使用了这个)