根据文档,“ Dingbats 放置在单元格主要内容的左侧,与内容的第一行对齐。 ”但是当我评估
CellPrint@Cell[BoxData["Text"], CellDingbat -> "CellDingbat"]
"Default"
在我得到的样式表的笔记本中
可以看到 的CellDingbat
位置低于 的第一行Cell
。为什么会发生这种情况?有没有办法CellDingbat
与第一行对齐Cell
?
根据文档,“ Dingbats 放置在单元格主要内容的左侧,与内容的第一行对齐。 ”但是当我评估
CellPrint@Cell[BoxData["Text"], CellDingbat -> "CellDingbat"]
"Default"
在我得到的样式表的笔记本中
可以看到 的CellDingbat
位置低于 的第一行Cell
。为什么会发生这种情况?有没有办法CellDingbat
与第一行对齐Cell
?
当单元格内容被包裹在BoxData
. 正如Sjoerd 指出的那样,BoxData
从单元格内容中删除 会使事情排成一行,但添加BoxData
到CellDingbat
似乎并没有改变任何东西。
基线可以使用 移动AdjustmentBox
并且玩了一段时间后,我发现基线超出了 CurrentValue["FontAxisOffset"]/CurrentValue["FontMWidth"]
。这两项都随着 变化,Magnification
但事实证明,观察到的偏移量是在 时获得的常数值Magnification->1
。在这种情况下,比率为0.20833 == 5/24
。
我不确定问题是否真的与基线有关,以及该行为是否有很好的根本原因。我也不确定为什么所需的班次不依赖于 Cell、Notebook 或 $FrontEnd 的放大倍数。但它似乎有效,我已经花了足够的时间来玩它!
所以要测试一切(基本上)没问题,试试
Do[CellPrint@Cell[BoxData["TxyT"],
CellDingbat -> BoxData[AdjustmentBox["TxyT", BoxBaselineShift -> -5/24]],
Magnification -> mag], {mag, 1, 5}]
并测试如何
CellPrint@Cell[BoxData["TxyT"],
CellDingbat -> BoxData[AdjustmentBox["TxyT", BoxBaselineShift -> -5/24]],
Magnification -> Inherited]
查找包含笔记本和前端的各种放大倍数,例如,
SetOptions[EvaluationNotebook[], Magnification -> 4.]
和/或
SetOptions[$FrontEnd, Magnification -> 4.]
Dingbats 通常是小图标,而不是文本。根据设计,它们位于单元格第一行内容的基线下方。在我看来,他们看起来很好。
如果您想要单元格的标签,而不是 Dingbat,请使用CellLabel
:
CellPrint@Cell[BoxData["Text"], CellLabel -> "Example"]
您可以通过 处理左对齐CellMargins
。
如果您更喜欢左侧的标签,请将单元格格式化为Output
,但请注意对齐方式将取决于屏幕放大率,如以下 3 个示例所示:
我注意到,如果您替换BoxData
为TextData
(或删除BoxData
,留下“文本”),dingbat 和单元格内容是对齐的。
如果您不希望使用标准的“输入”或“代码”单元格样式,那么正如SjoerdCellDingbat
所指出的那样,单元格的内容和 dingbat 会自动对齐。只有当您将单元格内容包裹起来时,它们才会错位。BoxData
如果您想要的单元格是“文本”或“部分”(等)单元格,那么只要单元格内容包含在TextData[...]
. 例如
请注意,我已经开始了文本并以大写结束了 dingbat,T
以便对齐清晰。
如果您手动将“输入”单元格的内容包含在TextData
其中(默认情况下不会发生),那么代码将运行,但样式不太正确。间距错误,语法高亮未激活。比较以下
第一个打印的单元格有语法高亮,但单元格 dingbat 未对齐,而第二个打印的单元格没有语法高亮和间距不佳,但 dingbat 完全对齐!
最后,我应该意识到这样的解决方案会起作用,因为我多年来一直在使用单元标记进行自动部分编号,并且从未遇到过对齐问题。例如,这是我上周正在编写的笔记本的大纲,其中包含我论文中某一章的支持代码:
节和小节单元格在样式表中被赋予了 dingbats,例如
CellDingbat->TextData[{CounterBox["Section"], ". "}]
.
指定CellBaseline
有任何影响吗?
如在
CellPrint[
Cell[BoxData["Text"], CellDingbat -> "CellDingbat",
CellBaseline -> Bottom]]
而不是默认CellBaseline -> Baseline