3

根据文档,“ Dingbats 放置在单元格主要内容的左侧,与内容的第一行对齐。 ”但是当我评估

CellPrint@Cell[BoxData["Text"], CellDingbat -> "CellDingbat"]

"Default"在我得到的样式表的笔记本中

截屏

可以看到 的CellDingbat位置低于 的第一行Cell。为什么会发生这种情况?有没有办法CellDingbat与第一行对齐Cell

4

5 回答 5

4

当单元格内容被包裹在BoxData. 正如Sjoerd 指出的那样BoxData从单元格内容中删除 会使事情排成一行,但添加BoxDataCellDingbat似乎并没有改变任何东西。

基线可以使用 移动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.]
于 2011-09-29T00:15:39.273 回答
3

CellLabel 代替 CellDingbat

Dingbats 通常是小图标,而不是文本。根据设计,它们位于单元格第一行内容的基线下方。在我看来,他们看起来很好。

如果您想要单元格的标签,而不是 Dingbat,请使用CellLabel

CellPrint@Cell[BoxData["Text"], CellLabel -> "Example"]

细胞标签

您可以通过 处理左对齐CellMargins

如果您更喜欢左侧的标签,请将单元格格式化为Output,但请注意对齐方式将取决于屏幕放大率,如以下 3 个示例所示:


放大 1


一倍半


2次


于 2011-09-29T00:21:49.817 回答
2

我注意到,如果您替换BoxDataTextData(或删除BoxData,留下“文本”),dingbat 和单元格内容是对齐的。

于 2011-09-28T21:21:27.607 回答
2

如果您不希望使用标准的“输入”或“代码”单元格样式,那么正如SjoerdCellDingbat所指出的那样,单元格的内容和 dingbat 会自动对齐。只有当您将单元格内容包裹起来时,它们才会错位。BoxData

如果您想要的单元格是“文本”或“部分”(等)单元格,那么只要单元格内容包含在TextData[...]. 例如

叮咚

请注意,我已经开始了文本并以大写结束了 dingbat,T以便对齐清晰。

如果您手动将“输入”单元格的内容包含在TextData其中(默认情况下不会发生),那么代码将运行,但样式不太正确。间距错误,语法高亮未激活。比较以下

输入

第一个打印的单元格有语法高亮,但单元格 dingbat 未对齐,而第二个打印的单元格没有语法高亮和间距不佳,但 dingbat 完全对齐!


最后,我应该意识到这样的解决方案会起作用,因为我多年来一直在使用单元标记进行自动部分编号,并且从未遇到过对齐问题。例如,这是我上周正在编写的笔记本的大纲,其中包含我论文中某一章的支持代码:
武志
节和小节单元格在样式表中被赋予了 dingbats,例如
CellDingbat->TextData[{CounterBox["Section"], ". "}].

于 2011-09-29T13:28:22.807 回答
1

指定CellBaseline有任何影响吗?

如在

CellPrint[
 Cell[BoxData["Text"], CellDingbat -> "CellDingbat", 
  CellBaseline -> Bottom]]

而不是默认CellBaseline -> Baseline

于 2011-09-30T00:10:40.940 回答