我创建了一个命令来生成一个包含 7 个参数的表格,因为我需要用不同的内容重复多次。我遇到的问题是,当我创建使用此命令的表格,它始终位于页面顶部。我已经加载了 floats 包,我在表头中添加了 H,我也尝试了 !H,但它返回了一个错误...我找不到导致此 Latex 行为的原因,即表格相对于页面的位置。我添加了定义命令代码:
\newcommand{\PTgen}[7]{
\begin{table}[htbp]
\extrarowheight = -0.5ex
\renewcommand{\tabcolsep}{6pt}
\renewcommand{\arraystretch}{3}
\renewcommand {\tabcolsep}{3pt}
\renewcommand{\arrayrulewidth}{3pt}
\centering
\begin{tabular}{ c | c | c }
$ #1 $ &$ #2 $ & \\ \hline
$ #3 $ & $ #4 $ & \cellcolor[gray]{0.9} $ #5 $ \\ \hline
& \cellcolor[gray]{0.9} $ #6 $ & \cellcolor[gray]{0.9} $ #7 $ \\
\end{tabular}
\end{table}
}
调用命令:
\PTgen{1} {2} {3} {4} {5} {6} {7}
我将非常感激任何能帮助我解决问题的建议。
答案1
[H]
是一种特殊变体,应谨慎使用,并且必须单独使用,不能使用[!H]
这里无关,但即使使用正常的浮点参数,例如htbp
你不应该例行添加!
,因为这!
意味着忽略此浮点数的文档指定约束. 忽视对每一个浮动:最好不要使用!
并设置更合适的约束。
\renewcommand {\tabcolsep}{3pt} %Ajusta espacio interior entre columnas
\renewcommand{\arrayrulewidth}{3pt} %Ajusta el grueso de línea
这两个都是长度并且必须设置\setlength
如果您将它们重新定义为宏,因为这里您将破坏 latex 的表格代码。
例如标准(非数组包)tabular
有
\@addtopreamble{\hskip .5\arrayrulewidth}%
当\arrayrulewidth
长度为时,它会增加宽度的一半。按照你的定义,它会扩展为
\@addtopreamble{\hskip .53pt}%
这恰好是有效长度,但不是 3pt/ 的一半的预期长度