Na czym polega prawdziwy problem z tą 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}
Komentarze
Odpowiedź
Oprócz wstawienia brakującej instrukcji podziału wiersza \\
, należy rozważyć wykonanie następujących czynności:
-
W pełni zastosuj sugestie @egreg utworzony w odniesieniu do Twojego wcześniejszego wpisu , w tym użycie
array
zamiasttabular
oraz użycie makr zamiast zakodowanych na stałe liter dla„ Prawdy ”i„ Fałsz ”. (Zastanów się też dokładnie, dlaczego używasz literyF
zarówno jako zmiennej, jak i jako tokenu dla słowa „fałsz”. Czy to takie trudne z lepszą nazwą zmiennej niż „F”?) -
Pozbądź się wszystkich pionowych kresek i użyj makr rysowania linii z booktabs , aby wstawić kilka, ale dobrze rozmieszczonych poziomych linii.
-
Dodaj trochę dodatkowej pionowej spacji po każdym czwartym wierszu w treści tabeli, ponieważ cztery wiersze jednocześnie zapewniają naturalne grupowanie dostępnej tabeli.
\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}
Odpowiedź
W moim przypadku to stało się, ponieważ nie zadeklarowałem odpowiedniej liczby kolumn
przykład:
\ begin {tabular} {| c | c | c |}
Komentarze
- Ta odpowiedź zaoszczędziła mi wiele czasu na szukaniu problemów semantycznych z longtabu, tabu i tak dalej. Przecież to był tylko zwykły błąd.
Odpowiedź
Aktualizacja 2017
Ponieważ xintexpr 1.1 (2014/10/28)
lepiej jest używać ||
i &&
, jednego |
i &
mogą zmienić znaczenie w porównaniu z obecnymi jako logiczne or
wzgl. and
. Można również użyć słów kluczowych "or"
odp. "and"
(cudzysłowy obowiązkowe). Zaktualizowano odpowiedź w celu przewidzenia możliwej przyszłej zmiany znaczenia pojedynczych operatorów wrostków |
i &
.
Być może chcesz, aby tabela była wypełniana automatycznie?
Aktualizacja dodaje kod 1ex
pomijania w pionie co cztery wiersze.
\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}
Z dodatkowymi pominięciami:
\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}
Odpowiedź
Tak się stało ponieważ skopiowałem i wkleiłem coś z innej tabeli w moim dokumencie, użyłem następującej składni, aby utworzyć poziomą linię tylko pod tylko częścią tabeli:
\\\cline{2-3}
I skopiowano wklejono
\\\cline{2-5}
z tabeli z większą liczbą kolumn i podawał ten błąd do czasu korekty ected it.
Komentarze
- Jest to prawdopodobnie rozwiązanie innego problemu, który powoduje ten sam błąd. Technicznie nie ' nie odpowiada na to pytanie, ponieważ OP nie ' t użytkownik
\cline
.
Odpowiedź
Musisz zmienić |c|c|c|
na crcrcr
. Zrobiłem tę tabelę w następujący sposób.
\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}
Uwaga: w przypadku reguły górnej i dolnej użyłem polecenia \hline
\\
na końcu pierwszego wiersza.array
,\True
i podobnie zdefiniowane\False
. Nawiasem mówiąc, ' używasz „F” w pozornie dwóch bardzo różnych znaczeniach, co może być całkowicie mylące. W pierwszym wierszu masz „B” i inne zmienne, które mają różne kształty, co powoduje zamieszanie.