如何将表格显示为三线表的格式
mathematica吧
全部回复
仅看楼主
level 4
lwnciae 楼主
在 样式表-Book-Textbook样式下,将
Grid[{{111, 222, 333}, {3, 4, 5}, {5, 6, 7}}]
的输出单元格样式设置为“Table”(不是TableForm的输出),下图是显示的样子。请问:
1.这个Table样式本来就这样吗,如果是的话有什么办法让表格显示为三线表呢
2.如何这个“Table”样式可以显示三线表,如何添加细线后面的行呢
2026年05月14日 12点05分 1
吧务
level 15
欸……可能有人不知道LZ在说啥,这里解释一下。LZ应该指的是,首先选择顶部菜单的 格式 > 样式表 > Book > Textbook ,然后执行上述代码,再在输出上右键选 样式 > Table。
然后,我也没怎么研究过样式表,所以这个问题我答不了……但是如果你只是想要让Grid获得这种样式的话其实并不难。你只要改Dividers选项就行了:
Grid[Table[x, {4}, {11}],
Dividers -> {False, {1 -> Thickness[2](* 或者就直接Thick *), 2 -> True, -1 -> True}}]
2026年05月14日 14点05分 2
注意样式表Textbook的默认单元样式是Text,我们必须用Alt+9来新建Input样式单元输入代码。
2026年05月17日 03点05分
@xzcyr 感谢吧主!
2026年05月22日 10点05分
吧务
level 13
覆盖当前笔记本的样式表设置
SetOptions[
EvaluationNotebook[],
StyleDefinitions->Notebook[{
Cell[StyleData[StyleDefinitions->FrontEnd`FileName[{"Book"},"Textbook.nb",CharacterEncoding->"UTF-8"]]],
Cell[StyleData["Table"],
GridBoxOptions->{GridBoxDividers->{"Columns"->{{False}},"RowsIndexed"->{1->Thickness[2],2->True,-1->True}}}
]}]]
2026年05月15日 12点05分 3
吧务
level 15
静下心来学了下样式表的使用(好吧其实就是把SE帖子《Need a gentle introduction to stylesheet writing》(https://mathematica.stackexchange.com/q/153102/1871)给看了),学到了一个跟3楼@隨意超 的方法等效但是更容易上手一点(当然,也要慢一点)的方法。假设我们对原本的二线表怎么来的一无所知,那么理论上我们可以靠以下步骤探索出修改方案:
1. 先搞清楚原本的二线表是怎么来的。这个只需要选中生成的二线表,再按下Ctrl+Shift+e(或者在顶部菜单里选 单元 > 显示表达式)即可。然后我们就会看到:
Cell[BoxData[
TagBox[GridBox[{
{"111", "222", "333"},
{"3", "4", "5"},
{"5", "6", "7"}
},
AutoDelete->False,
GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
"Grid"]], "Table",
CellChangeTimes->{3.9879773812194886`*^9, 3.987977418263962*^9}]
二线表的底层是个GridBox。进一步查询GridBox的帮助,会发现它有个GridBoxDividers选项。(“更多信息”里没提,但是示例部分有它的例子。直接观察Options[GridBox]的输出应该也不太难注意到这个选项。)
2. 调整样式表的GridBoxDividers选项。点击顶部菜单 格式 > 编辑样式表,点击左上角的 选择样式 > Table,按下Ctrl+Shift+o,搜索GridBoxDividers(其实直接输gridbox就足以定位它了),就会看到这个选项在当前样式表里的默认选项值是
{"Columns" -> {False, {False}, False}, "ColumnsIndexed" -> {}, "Rows" -> {AbsoluteThickness[2], {False}, AbsoluteThickness[0.5]}, "RowsIndexed" -> {}}
尽管GridBoxDividers在文档里没多解释,但靠这行代码,我们不难猜出它的设定方法。我们把它改成下面这样
再回车:
{"Columns" -> {False, {False}, False}, "ColumnsIndexed" -> {}, "Rows" -> {AbsoluteThickness[2], AbsoluteThickness[0.5], {False}, AbsoluteThickness[0.5]}, "RowsIndexed" -> {}}
就会看到样式改过来了。我们当然还可以再次Ctrl+Shift+e直接修改样式表里相应单元的选项,不过这个就跟 隨意超 的做法差不多了。
不过这里有个未解之谜:为什么选项GridBoxDividers没有出现在本楼第一步的输出里?它被设在哪了?
2026年05月17日 03点05分 4
我是用2楼的结果倒推出 GridBoxDividers 选项的。 为什么选项GridBoxDividers没有出现在本楼第一步的输出里: GridBoxDividers 选项可能是通过 DefaultBaseStyle -> "Table" 继承的,也就是 Cell 第2个参数。
2026年05月17日 08点05分
1