6

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}

これが私が得た結果です:

ご覧のとおり、コードの左側に余白があります。このマージンはナンバリングのためにあると思いますが、ナンバリングは必要ないので、それを取り除きたいと思います。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}

問題は、テーブルが列挙型のアイテムに含まれているためであると推測できます。

これを解決する方法はありますか?

4

3 に答える 3

11

この問題は、テーブル環境が原因で発生します。デフォルトでは、ラテックスは列の前に小さなスペースを挿入します。@{}これは、最初の列を指定する前のコードを使用することで回避できます。

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

詳細については、このリンク@{}を参照してください。

完全なコード例は次のようになります

\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}
于 2010-07-01T07:22:12.153 に答える
7

はい、マージンは確かに列挙から来ています。しかし、幸いなことに、リストパッケージノートのパッケージドキュメントは次のとおりです。

resetmargins = true | false(デフォルト:false)

trueの場合、列挙や項目化などのリスト環境からのインデントはリセットされます。つまり、使用されません。

したがって、以下が役立つはずです。

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

よろしく、
クリストフ

于 2010-07-01T08:12:14.883 に答える
0

別のアプローチは、負の左マージンを使用することです。

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

(私はこれをコードスニペットリストに使用していました)

于 2019-07-30T01:57:49.713 に答える