Vad är det verkliga problemet med denna tabell?

\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

  • Du ’ saknar en \\ i slutet av första raden.
  • @dcmst: Se Formatera Sand-Box och den här kommentaren .
  • Jag ser dig ’ följer inte mina förslag om att använda array, \True och liknande definierade \False. Förresten använder du ’ ”F” i uppenbarligen två mycket olika betydelser, vilket kan vara helt förvirrande. På den första raden har du ”B” och de andra variablerna som visas med olika former, vilket ökar förvirringen.

Svar

Förutom att infoga den saknade \\ radbrytningsinstruktionen, bör du överväga att utföra följande steg:

  • Genomför fullständigt förslagen @egreg gjorde med avseende på ditt tidigare inlägg , inklusive användningen av array istället för tabular och användningen av makron snarare än hårdkodade bokstäver för” True ”och” False ”. (Tänk också hårt varför du använder bokstaven F både som en variabel och som symbol för ”falskt”. Är det så svårt att komma upp med ett bättre variabelnamn än ”F”?)

  • Bli av med alla vertikala staplar och använd linjediakroerna i boktavlor -paket för att infoga några, men väl placerade horisontella linjer.

  • Lägg till lite extra vertikalt mellanslag efter var fjärde rad i tabellens kropp, eftersom fyra rader åt gången ger en naturlig gruppering av tabellen till hands.

enter bildbeskrivning här

\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 mitt fall är det hände för att jag inte deklarerade rätt antal kolumner

exempel:

\ begin {tabular} {| c | c | c |}

Kommentarer

  • Detta svar sparade mig mycket tid på att leta efter semantiska problem med longtabu, tabu och så vidare. Det var trots allt bara ett enkelt misstag.

Svar

2017-uppdatering

Sedan xintexpr 1.1 (2014/10/28) föredras att använda || och &&, singeln | och & kan ändra betydelse från sina nuvarande som booleska or resp. and. Man kan också använda nyckelorden "or" resp. "and" (citat obligatoriska). Svaret uppdaterat för att förutse eventuell framtida ändring av betydelsen av enskilda | och & infixoperatorer.


Kanske vill du att tabellen ska fyllas i automatiskt?

Uppdateringen lägger till kod för 1ex vertikalt hoppa över varannan rads sak.

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

sanningstabell

Med extra hopp:

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

sanningstabell med extra vertikala mellanslag

Svar

Jag hade detta hänt eftersom jag kopierade in några saker från en annan tabell i mitt dokument, använde jag följande syntax för att göra en horisontell linje under endast en del av tabellen:

\\\cline{2-3} 

I kopiera klistrad

\\\cline{2-5} 

från en tabell med fler kolumner, och det gav detta fel tills jag korrigerade valde det.

Kommentarer

  • Detta är förmodligen en lösning på ett annat problem som resulterar i samma fel. Tekniskt svarar den inte ’, eftersom OP inte ’ t-användare \cline .

Svar

Du måste ändra |c|c|c| till crcrcr. Jag gjorde den här tabellen enligt följande.

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

Obs: För topp- och bottenregeln använde jag \hline -kommando

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *