Jaký je skutečný problém s touto tabulkou?
\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}
Komentáře
Odpovědět
Kromě vložení chybějící \\
instrukce pro zalomení řádku byste měli uvažovat o provedení následujících kroků:
-
Plně implementujte návrhy @egreg vytvořeno s ohledem na vaše dřívější zveřejnění , včetně použití
array
namísto a použití maker spíše než pevně zakódovaných písmen pro„ True “a„ False “. (Také si dobře promyslete proč používáte písmenoF
jak jako proměnnou, tak jako token pro „false“. Je tak těžké přijít s lepším názvem proměnné než „F“?) -
Zbavte se všech svislých pruhů a použijte makra pro kreslení čar booktabs pro vložení několika vodorovných řádků s dobrým rozestupem.
-
Po každém čtvrtém řádku přidejte trochu extra svislých mezer / em> v těle tabulky, protože čtyři řádky najednou poskytují přirozené seskupení pro danou tabulku.
\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}
odpověď
V mém případě to stalo se to, protože jsem nedeklaroval správný počet sloupců
příklad:
\ begin {tabular} {| c | c | c |}
komentáře
- Tato odpověď mi ušetřila spoustu času hledáním sémantických problémů s longtabu, tabu atd. Nakonec to byla jen jednoduchá chyba.
Odpověď
Aktualizace 2017
Od xintexpr 1.1 (2014/10/28)
je lepší použít ||
a &&
, jediný |
a &
mohou změnit význam od svých současných významů jako booleovské or
resp. and
. Lze také použít klíčová slova "or"
resp. "and"
(uvozovky povinné). Odpověď aktualizována, aby se předvídala možná budoucí změna významu jednotlivých |
a &
operátorů infix.
Možná chcete, aby se tabulka vyplňovala automaticky?
Aktualizace přidává kód pro 1ex
přeskočit každé čtyři řádky.
\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}
S extra vynecháním:
\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}
odpověď
stalo se mi to protože jsem zkopíroval vložené věci z jiné tabulky v mém dokumentu, používal následující syntaxi k vytvoření vodorovné čáry pod pouze částí tabulky:
\\\cline{2-3}
I zkopírujte vložené
\\\cline{2-5}
z tabulky s více sloupci a tato chyba se zobrazila, dokud jsem provedl to.
Komentáře
- Toto je pravděpodobně řešení jiného problému, jehož výsledkem je stejná chyba. Technicky na tuto otázku neodpovídá ‚ t, protože OP ‚ t uživatel
\cline
.
Odpověď
Musíte změnit |c|c|c|
na crcrcr
. Tuto tabulku jsem vytvořil následovně.
\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}
Poznámka: Pro horní a dolní pravidlo jsem použil příkaz \hline
\\
na konci prvního řádku.array
,\True
a podobně definované\False
. Mimochodem, ‚ používáte „F“ ve zjevně dvou velmi odlišných významech, což může být naprosto matoucí. Na prvním řádku je písmeno „B“ a další proměnné, které se objevují v různých tvarech, což zvyšuje zmatek.