原始代码
\begin{table}[H]
\begin{center}
\begin{tabular}{c|c}
\hline
标签 & 含义 \\
\hline
[t] & 置顶 \\
[b] & 置底 \\
[p] & 换页 \\
[h] & 视情况插入中段 \\
[H] & 强制插入中段 \\
\hline
\end{tabular}
\end{center}
\caption{图表位置调整标签}
\label{table:location}
\end{table}
当制表符中只有“[t]”行时,它工作正常,但是当我输入“[b]”行及更多内容时,我的编译器会抛出几个错误。
Missing number, treated as zero.
<to be read again>
LaTeX
Illegal unit of measure (pt inserted).
<to be read again>
LaTeX
Missing = inserted for \ifdim.
<to be read again>
LaTeX
Missing number, treated as zero.
<to be read again>
LaTeX
Illegal unit of measure (pt inserted).
<to be read again>
LaTeX
Missing number, treated as zero.
<to be read again>
LaTeX
Illegal unit of measure (pt inserted).
<to be read again>
LaTeX
Missing number, treated as zero.
<to be read again>
LaTeX
Illegal unit of measure (pt inserted).
<to be read again>
LaTeX
虽然当我使用 $$ 覆盖 [tag] 时代码有效
\begin{table}[H]
\begin{center}
\begin{tabular}{c|c}
\hline
标签 & 含义 \\
\hline
$[t]$ & 置顶 \\
$[b]$ & 置底 \\
$[p]$ & 换页 \\
$[h]$ & 视情况插入中段 \\
$[H]$ & 强制插入中段 \\
\hline
\end{tabular}
\end{center}
\caption{图表位置调整标签}
\label{table:location}
\end{table}
我仍然想知道是什么导致我之前的代码出现错误。
答案1
LaTeX 出错了,因为\\
在多个 后面(中间有一个换行符)有一个 字符[
。为什么?该\\
宏可以接受一个可选参数,如果找到该参数,则该参数必须是长度,例如,[1ex]
。但是,在你的表格,LateX 认为[b]
,这不是长度。因此出现错误消息“非法测量单位(插入 pt)”,IMNSHO 并没有特别说明。
该怎么办?实际上有几种补救措施;我发现最有吸引力的解决方案是——因为它传达了意义-- 是在大多数 之后插入\relax
(翻译:“停止你现在正在做的事情,也就是寻找一个可能的可选参数\\
,放松,然后重新继续”)\\
。
% !TEX TS-program = xelatex %% or lualatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Noto Serif SC} % or some other suitable font
\usepackage{float} % for '[H]' position specifier
\usepackage{booktabs} % for well-spaced horizontal rules
\begin{document}
\begin{table}[H]
\centering
\begin{tabular}{@{} ll @{}}
\toprule
标签 & 含义 \\
\midrule \relax
[t] & 置顶 \\ \relax
[b] & 置底 \\ \relax
[p] & 换页 \\ \relax
[h] & 视情况插入中段 \\ \relax
[H] & 强制插入中段 \\
\bottomrule
\end{tabular}
\caption{图表位置调整标签}
\label{table:location}
\end{table}
\end{document}