
這個愚蠢的表有什麼問題?
\begin{table}[h]
\centering{
\begin{tabular} {l l l l l l l l}
\hline
B & F & C & P & B \lor F & P \lor C & \lnot (F \land C) & \lnot (P \land B) \\ % ERROR= missing $ inserted
T & T & T & T \\
\hline
\end{tabular}
}
\end{table}
答案1
LaTeX 擅長排版數學,但它並不具有洞察力:它不知道您想要排版某些數學公式,除非您告訴它。
有幾個命令只能在數學模式下使用,在該模式之外發現它們時引發錯誤是告訴使用者出現問題的最佳方式。
事實上,排版程式碼時出現的第一個錯誤是
! Missing $ inserted.
<inserted text>
$
l.5 B & F & C & P & B \lor
F & P \lor C & \lnot (F \land C) & \lnot ...
這正是意味著 TeX 在不正確的位置發現了數學命令。 TeX 的作者可以對其進行編程,以便它對不合適的符號使用數學模式,但這很容易導致排版不良。
有一個大的之間的區別
B $\lor$ F
和
$B\lor F$
如下圖所示:
主要區別在於字母的形狀。幾個世紀以來,表示數學變數的字母一直以斜體排版,並且在整個公式中使用數學模式可以確保這一點。某些印刷傳統使用直排字體來表示大寫變量,尤其是法語,並且可以設置 TeX 以使其遵循這種不同的風格。無論如何,當在數學公式中找到字母時,您可以保證字母將按照與上下文無關的方式進行排版。
任何好的 LaTeX 指南都會告訴您哪些指令可以將其帶入數學模式;有幾個,特別是如果你這樣做
\usepackage{amsmath}
以便載入專門用於數學排版的包,該包提供了數十種環境和命令,可以解決許多複雜數學公式的問題:多行對齊、分割方程式、矩陣、點等等。
也就是說,排版表格(其中所有單元格都應處於數學模式)的最佳方法是什麼?很簡單,使用數學模式來完成整個過程:
\begin{table}[htp] % <---- don't forget t and p
\centering
$% start math mode
\begin{array} {l l l l l l l l}
\hline
B & F & C & P & B \lor F & P \lor C & \lnot (F \land C) & \lnot (P \land B) \\
T & T & T & T \\
\hline
\end{array}
$
\end{table}
請注意,這\centering
是一個不帶參數的聲明:它的意思是「在當前環境的持續時間內,以居中方式排版」。
該array
環境與 的數學類似tabular
:它必須以數學模式發出,因此它被$
符號包圍,並且所有單元格都將隱式使用數學模式。
您可能想要以直立字體排版“T”(代表“true”,如果我理解正確的話),這意味著它不是變數。您可以定義
\newcommand{\True}{\mathrm{T}}
在序言中並將第二行鍵入為
\True & \True & \True & \True \\
你的桌子會導致
為什麼使用長命令而不是單個字母?因為它添加了意義您的輸入。該特定的“T”具有非常特定的含義(邏輯真理),不同於它的任何其他用法。更好的是,如果將序言中的定義更改為
\newcommand{\True}{\top}
單次運行 LaTeX 就會改變全部這些T(並且僅是那些表示“真”的)到不同的符號(順便說一下,邏輯學家經常使用該符號,與\bottom
“假”一起使用)。
為特定任務定義巨集是 (La)TeX 最有用的功能之一:這樣您的文件將盡可能獨立於特定樣式;您不會對特定約定進行硬編碼,因此您可以自由更改均勻地如果情況(例如,挑剔的審稿人或文案編輯)強加您的約定。