Hvad er det virkelige problem med denne tabel?
\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}
Kommentarer
Svar
Ud over at indsætte den manglende \\
linjeskiftinstruktion, skal du overveje at udføre følgende trin:
-
Implementer forslagene fuldt ud @egreg lavet med hensyn til dit tidligere indlæg , herunder brug af
array
i stedet fortabular
og brugen af makroer snarere end hårdkodede bogstaver til” Sandt “og” Falsk “. (Tænk også hårdt hvorfor du bruger bogstavetF
både som en variabel og som symbolet for “falsk”. Er det så svært at komme op med et bedre variabelnavn end “F”?) -
Slip af med alle lodrette bjælker, og brug stregtegningsmakroerne i booktabs -pakke for at indsætte et par, men vandret placerede vandrette linjer.
-
Tilføj lidt ekstra lodret hvidt mellemrum efter hver fjerde række i selve tabellen, da fire rækker ad gangen giver en naturlig gruppering af den aktuelle tabel.
\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}
Svar
I mit tilfælde er det sket, fordi jeg ikke erklærede det rigtige antal kolonner
eksempel:
\ begin {tabular} {| c | c | c |}
Kommentarer
- Dette svar sparede mig en masse tid på at søge efter semantiske problemer med longtabu, tabu og så videre. Det var trods alt kun en simpel fejltagelse.
Svar
2017-opdatering
Siden xintexpr 1.1 (2014/10/28)
det foretrækkes at bruge ||
og &&
, den eneste |
og &
kan ændre betydning fra deres nuværende som boolsk or
resp. and
. Man kan også bruge nøgleordene "or"
resp. "and"
(citater obligatoriske). Svar opdateret for at forudse mulig fremtidig ændring af betydning af enkelt |
og &
infix-operatorer.
Måske ønsker du, at tabellen automatisk udfyldes?
Opdateringen tilføjer kode til 1ex
lodret spring over hver fjerde række ting.
\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}
Med ekstra spring:
\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}
Svar
Jeg fik dette til at ske fordi jeg kopierede nogle ting fra en anden tabel i mit dokument og brugte følgende syntaks til at lave en vandret linje under kun en del af tabellen:
\\\cline{2-3}
I kopi indsat
\\\cline{2-5}
fra en tabel med flere kolonner, og det gav denne fejl, indtil jeg rettede valgte det.
Kommentarer
- Dette er sandsynligvis en løsning på et andet problem, der resulterer i den samme fejl. Teknisk set svarer det ikke ‘ dette spørgsmål, da OP ikke ‘ t bruger
\cline
.
Svar
Du skal ændre |c|c|c|
til crcrcr
. Jeg lavede denne tabel som følger.
\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}
Bemærk: For øverste og nederste regel brugte jeg \hline
kommando
\\
i slutningen af første række.array
,\True
og den tilsvarende definerede\False
. Forresten bruger du ‘ “F” i tilsyneladende to meget forskellige betydninger, hvilket kan være fuldstændig forvirrende. I den første linje har du “B” og de andre variabler, der vises med forskellige former, hvilket føjer til forvirring.