Formatting 在Mathematica中,如何将[]行的元素与底部或顶部对齐?

Formatting 在Mathematica中,如何将[]行的元素与底部或顶部对齐?,formatting,wolfram-mathematica,alignment,row,Formatting,Wolfram Mathematica,Alignment,Row,当我写作时 Row[ {Framed@Column[{1,2}], Framed@"123"}, Alignment->Top] 或 无论哪种情况,都不会发生任何事情。默认对齐方式为“居中”,列出的图元与彼此的中线对齐 Grid[ {{Framed@Column[{1,2}], Framed@"123"}}, Alignment->Top] 工作正常,但是当行[]足够时,网格[]是一种过度杀伤力 帮助系统说对齐应该有效(例如列出{Left,Baseline}),但它似乎不

当我写作时

Row[ {Framed@Column[{1,2}], Framed@"123"},  Alignment->Top]

无论哪种情况,都不会发生任何事情。默认对齐方式为“居中”,列出的图元与彼此的中线对齐

Grid[ {{Framed@Column[{1,2}], Framed@"123"}}, Alignment->Top]

工作正常,但是当
行[]
足够时,
网格[]
是一种过度杀伤力


帮助系统说对齐应该有效(例如列出
{Left,Baseline}
),但它似乎不可更改。我使用的是v8.0.4。

行中的
对齐
选项不对齐单个元素本身,而是对齐外部边界框中的这些元素。这可以从以下几个方面看出:

Framed@Row[{Framed@Column[{1, 2}], Framed@"123"}, 
  ImageSize -> {150, 150}, Alignment -> {Left, Top}]


使用
网格

正如Wizard先生所说的
网格
可能是你最好的选择,但如果你想使用
你可以这样做

Row[Pane[#, BaselinePosition -> Top] & /@ {Framed@Column[{1, 2}], Framed@"123"}]
Row[Framed[#, BaselinePosition -> Top] & /@ {Column[{1, 2}], "123"}]

请注意,
Framed
还有一个选项
BaselinePosition
,因此对于这个特定示例,您还可以执行以下操作

Row[Pane[#, BaselinePosition -> Top] & /@ {Framed@Column[{1, 2}], Framed@"123"}]
Row[Framed[#, BaselinePosition -> Top] & /@ {Column[{1, 2}], "123"}]

但是
窗格
在任何情况下都有效。

很好地解释了对齐,谢谢。我想是的-(@Gregory,你对
Grid
有什么不满?在你的例子中,它只是多了三个字符。它在更复杂的使用中会导致问题吗?可能还有其他方法。低级别的网格框有点(很多)更重,所以如果我将数千条记录的格式化输出创建到一个CDF文件中,该文件将像消防栓上的大象一样爆炸!它将非常快变大。另一个问题:似乎无法控制行周围或框架[]上的框架。框架样式->似乎只接受1种样式,而不是{L,R},{B,t}的列表,因此,如果我只希望底部有一个框架,它看起来又像网格。我想这是网格如此沉重的原因。@Gregory,您可能想直接在
Box
表单中对结果进行编码。根据结构和选项,它可能会明显较轻。您可以使用Ctrl+Shift+E来查看实际创建的框表单。顺便说一下,欢迎使用StackOverflow。这不需要窗格。
Column[{…},BaselinePosition->1]
也可以。窗格是一个很好的解决方法,如果它不总是一个列,但是对于成千上万的“卡片”(排版预处理的记录输出),结果文件会爆炸,并且运行非常缓慢。我想我总是可以使用它“虚拟化”就像C#一样,只需一次打印20-30条记录,而不是滚动,使用我自己的向上/向下移动基础数据集中的索引。增加渲染时间,但减少大小/内存使用/初始渲染复杂性。