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

  • Ty ' brakuje \\ na końcu pierwszego wiersza.
  • @dcmst: patrz Formatowanie piaskownicy i ten komentarz .
  • Widzę, że ' nie stosujesz się do moich sugestii dotyczących używania 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.

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 zamiast tabular oraz użycie makr zamiast zakodowanych na stałe liter dla„ Prawdy ”i„ Fałsz ”. (Zastanów się też dokładnie, dlaczego używasz litery F 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.

enter opis obrazu tutaj

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

tabela prawdy

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} 

tabela prawdy z dodatkowe pionowe spacje

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *