CSS和Latex盒子模型有什么区别?

时间:2010-06-21 23:10:35

标签: css layout latex

CSS和Latex如何组织盒子有什么区别? (段落或图形元素。)

3 个答案:

答案 0 :(得分:16)

具有从输入语言的处理产生的页面布局的分层盒装表示并且然后变成渲染页面的一般方案在两个模型之间基本相似。给我留下最深刻印象的四个差异是:

  1. CSS框模型是一个强大的抽象,而Tex模型中的框的布局是在操作上确定的:当在Tex模型中布置框时,​​代码可以拆分并重新布置早期的框。
  2. 虽然Tex的布局模型是面向文本的,就像CSS框模型一样 - 而不是说,Adobe的InDesign面向页面的布局模型非常适合将块放在一起以覆盖每个页面 - 它仍然有很多面向页面的抽象,比如确定垂直空间的“不良”以便放置脚注 - 在我看到的CSS盒子模型中没有类似的东西。 Context有一个更复杂的页面布局模型,它允许面向文本和面向网格的布局。
  3. CSS模型和Tex模型都有块级框(vbox)和内联框(hbox)的概念。但是,虽然您可以使用CSS指定块级别框出现在内联框内,section 9.2.1 of the CSS2 standard表示其语义是将外部内联框转换为块级框,因此CSS框模型基本上禁止在内联框中发生块级框。相比之下,Tex非常乐意在hbox中设置vbox,它提供了一些功能,例如在段落文本中放置文本上方的文本。
  4. 最重要的是,CSS盒子模型没有灵活粘合的概念,使得可缩放的页面布局更加棘手,我猜,固定宽度网页设计占主导地位的原因。

答案 1 :(得分:1)

CSS的规格并不难找,当然它们包含a chapter on the box model

LaTeX的信息有点难以找到,但您可以查看here,在那里可以阅读:

  

LaTeX通过推送盒子来构建其页面。起初,每个字母都是一个小盒子,然后粘在其他字母上形成单词。它们再粘合在一起,但是使用特殊的胶水,这是一种弹性,可以挤压或拉伸一系列单词,以便在页面上精确填充一条线。

     

我承认,这是一个非常简单的真实版本,但重点是TeX在胶水和盒子上运行。信件不是唯一可以装箱的东西。你几乎可以将所有东西放入一个盒子里,包括其他盒子。然后每个框将由LaTeX处理,就好像它是一个字母一样。

我认为这与CSS非常不同,但是对于细节我恐怕你必须阅读书籍,例如Knuth的TeX书,或Mittelbach等的LaTeX伴侣。人

米尔。

答案 2 :(得分:1)

关于这一重要问题的讨论很少。

我希望HTML / CSS布局基于TeX的一个主要原因是:缺少胶水或弹簧。

TeX并不需要真正使用此功能,因为始终使用TeX在固定页面上布置内容。但是在Web浏览器上(从屏幕尺寸超过640 x 480像素以来),最自然的事情就是调整其尺寸,尤其是宽度。

在CSS中,很难布置像幻灯片一样的内容,其中中心的框架占据了大部分空间,并且前后左右分别有2条细细的条纹,然后分别调整了大小,特别是当我们到达光谱的最窄端时。而且,从广义上讲,不会像许多现代CSS布局那样浪费所有空间。

在TeX中,这很容易。您有一个hbox,它具有可伸缩的中心框架,并且前进和后退按钮的大小都是固定的。

随着页面宽度的增加,只有中心框架会扩大,而当页面宽度减小时,只有中心框架会变得更窄,直到所有的收缩值都用完(最小宽度),然后它就会停止(并且应该是水平方向)滚动条就会出现。

这是我感到CSS严重缺失的一个关键方面。 Knuth在动态屏幕布局离成为现实还差几十年的时候就发明了它,这自然而又令人惊奇。可悲的是,这个天才被遗忘了。

我认为盒子和胶水模型被认为是

  • 对早期Web客户端的实时计算能力太过困难
  • 对于Microsoft程序员而言太难以实现
  • 对于初学者来说太“令人困惑”了。

所有这些都是IMO非常薄弱的​​论点。

相同的问题出现在Java / Swing Layout方案中。我记得15年前我在Java中实现了一个真正的Box and Glue Layout,与SWT一起使用。一旦拥有,那就太棒了。

我正在等待真正的盒子和胶水布局选项出现在我的程序员生涯结束之前的某些下一代CSS中,我希望很快,所以我仍然可以使用它几年。