Каковы различия между блочными моделями CSS и Latex? - PullRequest
16 голосов
/ 22 июня 2010

Каковы различия между тем, как CSS и Latex организуют блоки? (Либо абзац, либо графические элементы.)

Ответы [ 3 ]

16 голосов
/ 25 июня 2010

Общая схема, состоящая в том, чтобы иметь иерархическое представление в штучной упаковке макета страницы, созданного в результате обработки языка ввода, а затем превращенного в визуализированную страницу, в основном похожа между двумя моделями. Больше всего меня впечатлили четыре отличия:

  1. Модель блоков CSS является надежной абстракцией, в то время как компоновка блоков в модели Tex определяется оперативно: при раскладке блоков в модели Tex код может разбиваться на части и переупорядочивать более ранние блоки.
  2. В то время как модель макета Tex является текстоориентированной, как и модель блоков CSS, & mdash; и наоборот, скажем, модель макета, ориентированная на страницы InDesign, разработанная Adobe, которая в значительной степени сводит воедино блоки, чтобы покрыть каждую страницу & mdash; в нем все еще есть несколько ориентированных на страницы абстракций, например, определение «плохости» вертикального пространства для размещения сносок - в модели блоков CSS, которую я вижу, нет ничего подобного. В контексте имеется более сложная модель макета страницы, которая допускает совместное использование как текстового, так и сеточного макета.
  3. Как модель CSS, так и модель Tex имеют представления о блоках уровня блока (vbox) и встроенных блоках (hbox). Однако, хотя вы можете указать с помощью CSS, что блок уровня блока находится внутри встроенного блока, в разделе 9.2.1 стандарта CSS2 говорится, что семантика этого заключается в том, чтобы превратить внешний встроенный блок в блок -Bevel, так что блочная модель CSS в основном запрещает использование блоков уровня блока внутри встроенных блоков. Tex, напротив, рад иметь vbox внутри hbox, что позволяет делать такие вещи, как помещать фрагменты текста над текстом внутри текста абзаца.
  4. Что наиболее важно, блочная модель CSS не имеет понятия гибкого клея, что делает масштабируемый макет страницы гораздо сложнее, и, я думаю, причина доминирования дизайна веб-страницы фиксированной ширины.
1 голос
/ 08 октября 2018

По этому важному вопросу не хватает дискуссий.

Есть одна ключевая причина, по которой я хочу, чтобы макет HTML / CSS был основан на TeX: отсутствие клея или пружин.

TeX на самом деле не нужно было использовать эту функцию, так как TeX всегда использовался для размещения контента на фиксированных страницах. Но самая естественная вещь в веб-браузере (с тех пор, как размеры экрана превысили 640 x 480 пикселей) - это изменить его размер, особенно ширину.

В CSS впечатляюще сложно создать что-то вроде слайд-шоу, с рамкой в ​​центре, занимающей большую часть пространства, и двумя тонкими полосами кнопок «вперед» и «назад», соответственно, вправо и влево, которые затем изящно изменяют размеры, особенно когда мы доберемся до узкого конца спектра. Но в целом, не тратя все пространство на полях, как это делают многие современные макеты CSS.

В TeX это просто. У вас есть hbox с центральной рамой с возможностью увеличения и сжатия, а кнопки вперед и назад имеют фиксированный размер.

При увеличении ширины страницы расширяется только центральная рамка, а при уменьшении ширины только центральная рамка становится уже, пока все ее значения сжатия не будут израсходованы (минимальная ширина), затем она остановится (и предположительно горизонтальная). появится полоса прокрутки.

Это один из ключевых аспектов, который, по моему мнению, сильно отсутствует в CSS. Это настолько естественно и удивительно, что Кнут изобрел его в то время, когда динамическая разметка экрана была за десятилетия от превращения в реальность. И грустно, что этот гений был забыт.

Я предполагаю, что модель коробки и клея считалась

  • слишком много для вычислений в реальном времени у более ранних веб-клиентов
  • слишком «сложно» реализовать для программистов Microsoft
  • слишком «запутанно» для начинающих.

Все это очень слабые аргументы ИМО.

Та же проблема возникает в схемах Java / Swing Layout. Я помню, что я реализовал настоящий Box and Glue Layout на Java для использования с SWT в проекте около 15 лет назад. Как только вы это сделаете, это так здорово.

Я ожидаю, что в следующем поколении CSS появится настоящая опция «Бокс и клей», и надеюсь, что скоро я смогу использовать ее в течение нескольких лет.

1 голос
/ 22 июня 2010

Спецификации для CSS найти несложно, и, конечно, они содержат главу о блочной модели .

Информацию для LaTeX найти немного сложнее, но вы можете посмотреть здесь , где вы можете прочитать:

LaTeX создает свои страницы, перемещаясь по прямоугольникам. Сначала каждая буква представляет собой небольшой прямоугольник, который затем склеивается с другими буквами, образуя слова. Они снова приклеиваются к другим словам, но с помощью специального клея, который эластичен, так что ряд слов можно сжать или растянуть, чтобы точно заполнить строку на странице.

Признаюсь, это очень упрощенная версия того, что действительно происходит, но дело в том, что TeX работает с клеем и коробками. Буквы не единственные вещи, которые могут быть коробками. Вы можете поместить практически все в коробку, включая другие. Каждая коробка будет обрабатываться LaTeX, как если бы это была одна буква.

Я думаю, что это сильно отличается от CSS, но из-за подробностей, я боюсь, вам нужно читать книги, например. Книга TeX от Кнута или компаньон LaTeX от Mittelbach et. и др.

Миэль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...