Qual é o verdadeiro problema desta tabela?
\begin{table}[h]
\centering
\begin{tabular}{ c | c | c | c | c | c | c | c }
B & F & P & C & $B \lor F$ & $P \lor C$ & $\neg(F \land C)$ & $\neg(B \land P)$
T & T & T & T & T & T & F & F \\ % Error l.37 T & T & T & T & T & T & F & F \\ ?
T & T & T & F & T & T & T & F \\
T & T & F & T & T & T & F & T \\
T & T & F & F & T & F & T & T \\
T & F & T & T & T & T & T & F \\
T & F & T & F & T & T & T & F \\
T & F & F & T & T & T & T & T \\
T & F & F & F & T & F & T & T \\
F & T & T & T & T & T & F & T \\
F & T & T & F & T & T & T & T \\
F & T & F & T & T & T & F & T \\
F & T & F & F & T & F & T & T \\
F & F & T & T & F & T & T & T \\
F & F & T & F & F & T & T & T \\
F & F & F & T & F & T & T & T \\
F & F & F & T & F & T & T & T \\
\end{tabular}
\end{table}
Responder1
Além de inserir a \\
instrução de quebra de linha que falta, você deve considerar a realização das seguintes etapas:
Implemente totalmente as sugestões feitas por @egreg em relação asua postagem anterior, incluindo o uso de
array
em vez detabular
e o uso de macros em vez de letras codificadas para "Verdadeiro" e "Falso". (Também pense bempor quevocê está usando a letraF
como variável e como token para "falso". É tão difícil encontrar um nome de variável melhor que "F"?)Livre-se de todas as barras verticais e use as macros de desenho de linha doguias de livrospacote para inserir algumas linhas horizontais, mas bem espaçadas.
Adicione um pouco de espaço em branco vertical extradepois de cada quarta linhano corpo da tabela, já que quatro linhas por vez fornecem um agrupamento natural para a tabela em questão.
\documentclass{article}
\usepackage{booktabs}
\newcommand\T{\textrm{T}} % "true"
\newcommand\F{\textrm{F}} % "false"
\begin{document}
\begin{table}[h]
\centering
$\begin{array}{ *{8}{c} }
\toprule
B & F & P & C & B \lor F & P \lor C & \neg(F \land C) & \neg(B \land P)\\
\midrule
\T & \T & \T & \T & \T & \T & \F & \F \\
\T & \T & \T & \F & \T & \T & \T & \F \\
\T & \T & \F & \T & \T & \T & \F & \T \\
\T & \T & \F & \F & \T & \F & \T & \T \\[1ex]
\T & \F & \T & \T & \T & \T & \T & \F \\
\T & \F & \T & \F & \T & \T & \T & \F \\
\T & \F & \F & \T & \T & \T & \T & \T \\
\T & \F & \F & \F & \T & \F & \T & \T \\[1ex]
\F & \T & \T & \T & \T & \T & \F & \T \\
\F & \T & \T & \F & \T & \T & \T & \T \\
\F & \T & \F & \T & \T & \T & \F & \T \\
\F & \T & \F & \F & \T & \F & \T & \T \\[1ex]
\F & \F & \T & \T & \F & \T & \T & \T \\
\F & \F & \T & \F & \F & \T & \T & \T \\
\F & \F & \F & \T & \F & \T & \T & \T \\
\F & \F & \F & \T & \F & \T & \T & \T \\
\bottomrule
\end{array}$
\end{table}
\end{document}
Responder2
No meu caso aconteceu porque não declarei o número certo de colunas
exemplo:
\begin{tabular}{|c|c|c|}
Responder3
atualização de 2017
Como xintexpr 1.1 (2014/10/28)
é preferível usar ||
e &&
, o único |
e &
pode mudar de significado em relação aos atuais como booleano or
resp. and
. Também se pode usar as palavras-chave 'or'
resp. 'and'
(aspas obrigatórias). Resposta atualizada para antecipar possíveis mudanças futuras de significado de operadores simples |
e &
infixos.
Talvez você queira que a tabela seja preenchida automaticamente?
A atualização adiciona código para 1ex
salto vertical a cada quatro linhas.
\documentclass{article}
\usepackage{booktabs}
\usepackage{xintexpr}
\newcommand\T{\textrm{T}} % "true"
\newcommand\F{\textrm{F}} % "false"
\newcommand\TF[1]{\if1#1\T\else\F\fi}
\begin{document}
\begin{table}[h]
\centering
$\begin{array}{ *{8}{c} }
\toprule
B & F & P & C & B \lor F & P \lor C & \neg(F \land C) & \neg(B \land P)\\
\midrule
\xintFor #1 in {1,0}\do {%
\xintFor #2 in {1,0}\do {%
\xintFor #3 in {1,0}\do {%
\xintFor #4 in {1,0}\do {%
\TF#1 & \TF#2 & \TF#3 & \TF#4 &
\xintifboolexpr {#1 || #2}{\T}{\F}&
\xintifboolexpr {#3 || #4}{\T}{\F} &
\xintifboolexpr {not(#2 && #4)}{\T}{\F} &
\xintifboolexpr {not(#1 && #3)}{\T}{\F} \\
}}}}
\bottomrule
\end{array}$
\end{table}
\end{document}
Com saltos extras:
\documentclass{article}
\usepackage{booktabs}
\usepackage{xintexpr}
\newcommand\T{\textrm{T}} % "true"
\newcommand\F{\textrm{F}} % "false"
\newcommand\TF[1]{\if1#1\T\else\F\fi}
\begin{document}
\begin{table}[h]
\centering
$\begin{array}{ *{8}{c} }
\toprule
B & F & P & C & B \lor F & P \lor C & \neg(F \land C) & \neg(B \land P)\\
\midrule
\xintFor #1 in {1,0}\do {%
\xintFor #2 in {1,0}\do {%
\xintFor #3 in {1,0}\do {%
\xintFor #4 in {1,0}\do {%
\TF#1 & \TF#2 & \TF#3 & \TF#4 &
\xintifboolexpr {#1 || #2}{\T}{\F}&
\xintifboolexpr {#3 || #4}{\T}{\F} &
\xintifboolexpr {not(#2 && #4)}{\T}{\F} &
\xintifboolexpr {#3 || #4}% every four, add 1ex space
{\xintifboolexpr {not(#1 && #3)}{\T}{\F}\\}
{\xintifboolexpr {not(#1 && #3)}{\T}{\F}\\[1ex]}
}}}}
\noalign{\addvspace{-1ex}}% compensate the last 1ex vskip
\bottomrule
\end{array}$
\end{table}
\end{document}
Responder4
Você tem que mudar |c|c|c|
para crcrcr
. Fiz essa tabela da seguinte maneira.
\begin{table}
\centering
\begin{tabular}{crcrcrcrcrcrcrcr}
\hline
B & F & P & C & $B \lor F$ & $P \lor C$ & $\neg(F \land C)$ & $\neg(B \land P)$ \\
\hline
T & T & T & T & T & T & F & F \\ % Error l.37 T & T & T & T & T & T & F & F \\ ?
T & T & T & F & T & T & T & F \\
T & T & F & T & T & T & F & T \\
T & T & F & F & T & F & T & T \\
T & F & T & T & T & T & T & F \\
T & F & T & F & T & T & T & F \\
T & F & F & T & T & T & T & T \\
T & F & F & F & T & F & T & T \\
F & T & T & T & T & T & F & T \\
F & T & T & F & T & T & T & T \\
F & T & F & T & T & T & F & T \\
F & T & F & F & T & F & T & T \\
F & F & T & T & F & T & T & T \\
F & F & T & F & F & T & T & T \\
F & F & F & T & F & T & T & T \\
F & F & F & T & F & T & T & T \\
\hline
\end{tabular}
\end{table}
Nota: Para regra superior e inferior, usei \hline
o comando