[Tex/LaTex] ! LaTeX Error: Illegal character in array arg

arraystables

I'm having the following error message

ABD: EveryShipout initializing macros
geometry driver: auto-detecting
geometry detected driver: pdftex No file main.bbl.

! LaTeX Error: Illegal character in array arg.

See the LaTeX manual or LaTeX Companion for explanation. Type H
for immediate help. …

l.29 \begin{tabular}{|l|c{4cm}|}

\documentclass[12pt]{book}

\usepackage[french]{babel}
\usepackage{qtree}
\usepackage{adjustbox}
\usepackage[activate={true,nocompatibility},final,tracking=true,kerning=true,spacing=true,factor=1100,stretch=10,shrink=10]{microtype}
\usepackage{multicol}

\setlength{\unitlength}{1cm}

\input{structure.tex}

\hypersetup{pdftitle={Title},pdfauthor={Author}}

\begin{document}

    \begin{tabular}{|l|c{4cm}|}
    \hline
    Classe de caractère & Siginification\\
    \hline

    [abc$^\wedge$] & Un unique caractère qui peut être a, b ou c \\

    \hline

    $[^abc]$ & Le $^\wedge$ exprime la négation : cette classe représente un unique caractère, \tabularnewline qui peut prendre toutes les valeurs, sauf a, b et c\\

 \end{tabular}
\end{document}

Based on what muzimuzhi and David Carlisle wrote, new code is

\documentclass[12pt]{book}

\usepackage[french]{babel}
\usepackage{qtree}
\usepackage{adjustbox}
\usepackage[activate={true,nocompatibility},final,tracking=true,kerning=true,spacing=true,factor=1100,stretch=10,shrink=10]{microtype}
\usepackage{multicol}
\usepackage{array}

\setlength{\unitlength}{1cm}

\input{structure.tex}

\hypersetup{pdftitle={Title},pdfauthor={Author}}

\begin{document}

    \begin{tabular}{|l|wc{4cm}|}
    \hline
    Classe de caractère & Siginification\\
    \hline

    [abc$^\wedge$] & Un unique caractère qui peut être a, b ou c \\

    \hline

    $[^abc]$ & Le $^\wedge$ exprime la négation : cette classe représente un unique caractère, \tabularnewline qui peut prendre toutes les valeurs, sauf a, b et c\\

 \end{tabular}
\end{document}

New error message is:

ABD: EveryShipout initializing macros
geometry driver: auto-detecting
geometry detected driver: pdftex No file main.bbl.

! Package array Error: Illegal pream-token (w): `c' used.

See the array package documentation for explanation. Type H
for immediate help. …
l.18 \begin{tabular}{|l|wc{4cm}|}

After Js bibra answer, I'm having the following code and the rendering as showed on the picture below:

    [![\begin{tabular}{lp{4cm}}
        \toprule
            Classe de caractère & Signification\\
        \midrule

            \[abc$^\wedge$\] & Un unique caractère qui peut être a, b ou c \\
        \midrule
            $\[^abc\]$ & Le $^\wedge$ exprime la négation: cette classe représente un unique caractère, \tabularnewline qui peut prendre toutes les valeurs, sauf a, b et c\\
        \midrule
            $\[a-zA-Z\]$ & Le - signifie que tous les caractères entre ses bornes sont valides.  Cette classe représente un unique caractère alphabétique, minuscule ou majuscule.\\
        \midrule
            $\[a-gmn\]$ & Autre exemple d'union: cette classe \tabularnewline est constituée de tous les caractères compris entre a et g, du caractère m et du caractère n.\\
        \midrule
            $\[a-g\[A-G\]\]$ & On peut inclure des classes les unes dans les autres. Cette classe représente un unique caractère, compris entre a et g, en minuscule ou en majuscule. Elle est équivalente à \[a-gA-G\].\\
        \midrule
            $ \[a-g\&\&\[c-k\]\] $ & Le signe $\&\&$ représente l'intersection. On fait donc là l'intersection entre la classe \[a-g\] et la classe \[c-k\]. Il s'agit donc de la classe \[c-g\].\\
        \midrule
            $\[a-g\&\&\[^\wedge cd\]\]$ & Ici on réalise l'intersection entre la classe qui représente tous les caractères de a à g, et celle qui représente tous les caractères, sauf c et d. Il reste donc a, b, e, f et g, que l'on peut aussi écrire \[abefg\] ou \[abe-g\].\\
        \midrule
            $\[a-z\&\&\[^m-p\]\]$ & Autre exemple: \tabularnewline ici on réalise l'intersection de tous les caractères compris entre a et z, et de tous les caractères sauf ceux compris entre m et p. Il nous reste donc \[a-lq-z\].\\
        \bottomrule
 \end{tabular}][1]][1]

Best Answer

There is no syntax c{<width>} for a centered column of fixed width.

If your version the array package is 2.4f (2017/11/07) or newer you can use the column type w{<alignment>}{<width>} that is

\begin{tabular}{|l|w{c}{4cm}|}

for a centered column of fixed width (this needs the array package, of course). However, this overprints if the cell contents is wider than the width specified. And this would be the case for the table in your MWE.

I suggest to instead define a suitable paragraph column yourself:

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

This need the array package, too, of course.

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}

\begin{tabular}{|l|C{4cm}|}
  \hline
    Classe de caractère & Siginification\\
  \hline
    [abc$^\wedge$] & Un unique caractère qui peut être a, b ou c \\
  \hline
    $[^abc]$ & Le $^\wedge$ exprime la négation: cette classe représente un
             unique caractère, qui peut prendre toutes les valeurs, sauf a,
             b et c \\
  \hline
\end{tabular}

\end{document}

enter image description here


If I understand you table correctly I also like to suggest not using mathmode but verbatim:

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\newcommand\code[1]{\texttt{#1}}

\begin{document}

\begin{tabular}{|l|C{4cm}|}
  \hline
    Classe de caractère & Siginification\\
  \hline
    \verb+[abc^]+ & Un unique caractère qui peut être \code{a}, \code{b} et
                    \code{c} \\
  \hline
    \verb+[^abc]+ & Le \verb+^+ exprime la négation: cette classe représente un
                    unique caractère, qui peut prendre toutes les valeurs, sauf
                    \code{a}, \code{b} et \code{c} \\
  \hline
\end{tabular}

\end{document}

enter image description here