Главная

Нативный офис под Haiku

Недавно разработал проект нативного оффиса под Haiku. Планируется полностью модульный офис с возможностью создания составных документов и скриптования(скриптование пока не продумано). Офис состоит из основной программы и модулей, в которых реализован документ. Документы могут дыть вложены друг в друга, например изображение в текст. Существует два встроенных документа: invalid, который вставляется, если документ не был корректно загружен и document selector. При старте основная программа опрашивает модули и выводит список корневых документов:

Выбор корневого документа.

Ещё бывают не корневые документы, которые нет смысла вставлять в корень(таблицы, формулы, кнопки и т. п.). Они вставляются через меню View–>Insert.

Документы представляют из себя BView, которые взаимодействуют с основной программой. Во время редактирования активен только один документ, в остальные блокируется передача сообщений с помощью диспетчера фокуса. Активируется документ двойным кликом или нажатием, родительский документ активируется кликом вне активного документа или кнопкой. При попадании документа в фокус он может изменять среду основной программы: добавлять свои панели и пункты меню:

Векторный редактор.

Иконка в верхнем правом углу показывает тип корневого документа и работает как иконка папки в Tracker.

Документы сохраняются в файл путём архивации корневого документа. Ненативные документы требуется транслировать.

Картинки нарисованы в Wonderbrush. Референсные цвета и контролы с BeOS.

Ух ты!

Ух ты! Это же прямо как Gobe! Да, кстати, а какие отличия будут от Гоби? Преимущества, недостатки?

Некоторые

Некоторые различия будут. Основная программа должна быть простой и сама по себе ничего не редактировать. Она нужна для работы с модулями, управлением панелями и меню, масштабированием, фокусом и сохранением.
Панели и меню у системы динамические, которые даёт сам модуль редактора и они появляются только когда активен документ.
В некоторые редакторы нельзя вставлять документы(в электорнные таблицы и растровую графику).
Вместо презентаций редактор анимации.
Также различия в самих редакторах. список основных редакторов перечислен в первой картинке. В текстовом редакторе отличается механизм вставки документов в Gobе Productive. Чтобы документ обтекался в тексте его нужно вставить в текст, чтобы не обтекался — вне текста. Это соответствует принципу модульности и независимости редакторов.

Я бы предложил

Я бы предложил использовать максимум готовых элементов в проекте:
репликанты, bescript, ShowImage, MediaPlayer, TV, artpaint, stylededit, sum–it…
Вообщем мне представляется такой container (в БеОС демках есть) который мог бы создавать, сохранить и открыть собраные определёным образом репликанты в файл–архив.
Вон добавить в репликанты альфа слой и можно тогда бы просто наложить stylededit файл на картинку, в уголок видео репликант. Общались бы эти документы между собой при помощи bemesage, а поведение документа описивалось бы bescript'ом. По моему это реально (правда я не програмер, и моё понимание поверхностное), тем более почти все заготовки к этому есть.
… то есть любая прога которая умеет быть репликантом моглабы быть использована в таком документе контейнере.
… и импорт экспорт такого документа в HTML(ну может с дополнениями) тоже был бы возможен, думаю.

С репликантами

С репликантами появилась большая проблема: они не поддерживают накладывание друг на друга. http://dev.haiku–os.org/ticket/6246.

Так тракер

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

Tracker никакого

Tracker никакого отношения к откисовке видов не имеет.

Скорее всего придётся писать свой аналог BView, или запрещать пересекать встроенныен документы во избежание багов.

Это конечно всё

Это конечно всё очень балгоро–одно, однако не вижу новости про офис.

Максимум что я вижу (если включить воображение) — это построение каркаса аля еклипс, на базе которого можно налепить любую фигню. От IM до IDE и офиса. Однако и для этого нихило было бы таки представить хотя бы пару–тройку самых общих UML–диаграмм.

Минимум что вижу — просто картинки сделаные в WonderBrush причем стилизованые почему–то под BeOS а не Haiku.

Вопрос — где хоть слово про собственно сам офис? Где про то, каким образом будут поддерживаться стандартные форматы документов вроде open doc? Будет ли свой формат? Что оно будет уметь вообще? Как там с печатью? А как с формулами? А что насчет Latex'a? Что с электронными таблицами? Какой язык для формул? Какой язык автоматизации офисного хозяйства?

ГдеВ

ГдеВпро то, каким образом будут поддерживаться стандартные форматы документов вроде open doc?
Врятли. Формат odc очень сложен. Его описание на ~800 страниц. В BeOS/Haiku есть система трансляторов, с помощью которой можно писать модули для преобразовывания файлов. Если кто захочет тот сможет написать нужный транслятор.

Будет лиВсвой формат?
Будет свой формат, основанный на BMessage.

ЧтоВоно будет уметь вообще?
Компоненты перечислены на первой картинке. Постараюсь сделать графическое описание каждого.

КакВтам сВпечатью?
Векторная печать видов встроена в BeOS/Haiku.

АВкак сВформулами?
Формулы представляют себя несколько встраеваемых объектов.

АВчто насчет Latex'a?
Планируется чисто графическое редактирование с возможностью вставки элементов горячими клавишами.

ЧтоВсВэлектронными таблицами?
Есть SumIt. Его нужно подогнать под репликант.

Какой язык автоматизации офисного хозяйства?
Пока не решено.

> Врятли. Формат

> Врятли. Формат odc очень сложен. Его описание на ~800 страниц.
Ну, предлагаю тогда openxml — это всего то разиков в пять побольше.
Замечу, что офисный пакет обязан поддерживать на достаточном уровне хотя бы один из этих форматов. Иначе он в общем то и не нужен.

> В BeOS/Haiku есть система трансляторов,
Я знаю. Как бы BeOS пользовал порядка 7ми лет.

> с помощью которой можно писать модули для преобразовывания файлов.
Преобразование файлов во что? Очевидно же, что odf, или openxml не просто так сложные, они как бы много чего могут. И соответственно внутреннее представление новоофиса должно быть как минимум не менее богатым функционально для того, чтобы была возможна конвертация без потерь.

Вопрос — описание внутреннего представления/своего формата (если уж мы не пользуемся odf/openxml) этого новоофиса где посмотреть можно?

> Если кто захочет тот сможет написать нужный транслятор.
Транслятор во что?

Если этого нет, то это не офисный пакет. Это лишь скелет, кракас. По сути, для чего угодно.

Моё мнение — Haiku–сообщество не потянет собственный офисный пакет. Потому как это проект _сложнее_ чем сама ОС. Однако оно может потянуть (не отвлекая основных разработчиков от пиления оси) написание каркаса аля легковесный нативный eclipse, на базе которого, путем прилепливания соответствующих модулей–плагинов можно потом будет лепить что угодно. IDE, Офис (если кому–то таки зачешется), Torrent client, браузер и что угодно ещё. Это было бы полезней. И реальней.

> Очевидно же,

> Очевидно же, чтоВodf, илиВopenxml неВпросто такВсложные, ониВкак быВмного чего могут.
Далеко не очевидно. Я уверен, что там полно избыточно сложных и костыльных конструкций.

> Далеко

> Далеко не очевидно. Я уверен, что там полно избыточно сложных и костыльных конструкций.

Уверенность без знания говорит лишь о гоноре. Предлагаю вначале ознакомиться с спецификацией, а потом уже рассуждать. Мне почему–то кажется что odf не самые глупые люди разрабатывали. Причем с учетом ошибок предыдущих форматов. Причем odf это legacy free формат, в отличае от openxml.

> ВопросВ

> ВопросВ— описание внутреннего представления/своего формата (если ужВмы неВпользуемся odf/openxml) этого новоофиса гдеВпосмотреть можно?
Пока не до конца спланировано. Формат свой у каждого типа документов.

> Пока не до

> Пока не до конца спланировано. Формат свой у каждого типа документов.

И как будет решаться вопрос с интеграцией одного типа документов в другой?
Кстати, настоятельно советую разобраться и проникнуться вот этим (да, оно под винду, но это не важно. важны принципы): BlackBox Component Builder. Основной рускоязычный ресурс: http://oberoncore.ru

Советую в процессе ознакомления не обращать внимание на слова “Pascal”, среда разработки. Оно к сути не имеет ровно никакого отношения. На скриншоты тоже внимания обращать не следует :–)

Коль с форматами пока ничего не ясно, советую разобраться как там сделаны т.н. составные документы. Ну и вообще модульная система. В первую очередь — поставить и пошупать руками. Потом разбираться с форматами и т.п. Оно маленькое, неплохо документированое и весьма понятное и обозримое. В отличае от всего остального.

Если разберетесь с этим, шансы написать что–то полезное (в т.ч. офисоориентированное) под Haiku существенно возрастут.

> И как будет

> И как будет решаться вопрос с интеграцией одного типа документов в другой?
С помощю BView или подобного механизма.

> BlackBox Component Builder. Основной рускоязычный ресурс: http://oberoncore.ru
Не поверишь — уже видел :)

> Коль с форматами пока ничего не ясно, советую разобраться как там сделаны т.н. составные документы.
Примерно также как BView, только основано на model view controller модели.

> С помощю BView

> С помощю BView или подобного механизма.
А бардака не случится, с фокусами, перетаскиванием мышкой содержимого через несколько уровней вложенности и т.п.?

> Не поверишь — уже видел :)
И как впечатления?

> Примерно также как BView, только основано на model view controller модели.

«закат в горах видел, да? вот такой же, только зеленый»
А на каком паттерне основан BView?

> А бардака

> А бардака не случится, с фокусами, перетаскиванием мышкой содержимого через несколько уровней вложенности и т.п.?
Для этого и нужен вышеупомянутый диспетчер фокуса. Принцип его работы описан в заголовке.

> И как впечатления?
Смотрел реализацию текста, но пока мало чего понял… В его реализации текста не хватает возможности привязывать встроенные виды к параграфу и просто к координатам.

>«закат в горах видел, да? вот такой же, только зеленый»
Паттерны на то и паттерны, чтобы объединять однотипные идеи.

>А на каком паттерне основан BView?
Точно не знаю, как это называется. В нём объеденены все 3 компонента из MVC. Для офиса это не очень удачно, т. к. иногда нужно работать только с определёнными компонентами, например только с моделью при импорте и экспорте или без контроллёра, если на документе нет фокуса. Думаю, что лучше надо делать модель MVC.

Посмотри

Посмотри GobeProductive. У него похожие принципы.

Да, а также

Да, а также крайне доставила первая картинка.

Во–первых в диалоге выбора типа документа мы зачем–то имеем полновесное меню вида:
File(откуда у нас тут файл?!)
Edit (что редактировать тут собрались)
Document (о, да! одного File в меню не достаточно, нужно обязательно продублировать пунктом Document, чтобы народ точно смог найти! (вообще то File это и есть документ, если что)),
ну и Window (зачем оно тут вообще не понятно).

Во–вторых крайне доставило в этом же диалоге слева–внизу штучка для изменения масштаба. Что масштабировать собираемся? Иконки в списке типов документов?

Выбор

Выбор документа — тоже документ. Стандартное меню показывается всегда.
Document возможно будет удалён.
Меню Window служит для переключения и расстановки окон.

Вариант с документом выбора документов не окончательный, возможно будет заменён обычным списком.

Это конечно всё

Это конечно всё очень по ООПшному, всё есть документ и всё такое. Только вот лишними менюшками (бесполезными) смущать пользователя не стоит. На экране должно быть только то, что может использоваться в данный момент. Только полезная информация.

Ну и тема масштабирования списка типов документов не раскрыта.

Может сразу Corba?

Может сразу Corba?

Да, кстати

Да, кстати лучше перед разработкой определиться, что нужно пользователю в главном окне(в каждом режиме, по разному все кнопочки…, то что нужно в своём режиме…).
А ты брал что–то за основу? Лучше бы пока делал чтобы хотя бы запускалась просто программа… — сразу с ТЕКСТОВОГО режима…, и брал бы упор на текст… мне кажется большие намерения у тебя), это огромный труд…, если за все браться… Делай пока текстовый редактор), ИМХО…., с подключением модулей естественно)

> Да, кстати

> Да, кстати лучше перед разработкой определиться, что нужно пользователю в главном окне
Примерный ГИП текстового редактора выложил ниже. Готов выслушать недочёты. Нужно разобраться что именно нужно в текстовом редакторе. Беосный стиль кнопок не в счёт, мне его рисовать было проще.

> в каждом режиме, по разному все кнопочки…, то что нужно в своём режиме…
Панели и дополнительные пункты меню выдаёт сам модуль. Эти дополнения должны появлятся при фокусе редактора данного типа. Панели прендставляют себя контейнер BView, который их расставляет по тем же правилам, что и слова в тексте. Панели могут быть с любой из 4 сторон. Панели таскать и модифицировать нельзя, они полностью динамические.

В Gobe Productive с этим было упущение — в нём панели зашиты в главном бинарнике.

> А ты брал что–то за основу?
Если про заброшенные проекты, то нет. Идейно офис основан на Gobe Productive и Blackbox.

> Лучше бы пока делал чтобы хотя бы запускалась просто программа… — сразу с ТЕКСТОВОГО режима…
Если пользователю лень сто раз нажимать на один и тот же пункт из списка типов документов, то можно создать пустой документ этого типа на рабочем столе и использовать его в качестве шаблона.

> и брал бы упор на текст…
Он тут пожалуй и есть самый сложный. Пока не совсем понятно с алгоритмом вывода текста.

KOffice (с

KOffice (с Нокиевской помощью) раньше допилят до вменяемого состояния, чем этот проект обретет хоть мало мальски законченный вид.

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

>Поэтому

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

Фича в полной модульности(можно писать свои редакторы например для специальных нужд), составных документах(документы полностью интегрируемые), скриптовании любого объекта и простоте. В чистом виде это есть только в BlackBox, но там нет требуемых редакторов и нужного функционала.

Сейчас

Сейчас нарисовал прототип текстового редактора.


Текстовый редактор.

Назначение кнопок на панели слева направо:
1) Название объекта для скриптования.
2) Сохранённые шаблоны шрифтов.
3) Начертание шрифта.
4) Размер шрифта.
5) Стиль шрифта.
6) Цвет шрифта.
7) Цвет фона.
8) Выравнивание.
9) Положение выделенного объекта.
10) Показывать скрытые объекты и символы.

Весь функционал редактора предоставлен через 3 панели(основная и две линейки). Стрелки на линейке обозначают параграфные отступы.

Чего не хватает и что не так?

11) Скрывать

11) Скрывать показываемые объекты и символы

Эта

Эта возможность никому не нужна.

Нужна! Шпионам!

Нужна! Шпионам! Читай рассказ Зощенко про Ленина и чернильницы

Сейчас пока

Сейчас пока делаю MVC. Иерархию объектов делаю заново.

Побаловатся

Побаловатся конечно можно…
Всётаки, при любом решении, реально и необходимо для гайки крутить коффис, чтоб нативнее бегал.
На гайке он шустрее чем на убунте! даже счас! при всей кривости порта!
GTK тож надо портить…
Появится у гайки больше пользователей – будет больше и нативных програмеров, вон тогда и будет время для крутого и заточеного под все гаечные плюсы гаечного оффиса.

… и будет

… и будет второй линукс. Тогда уж сразу портировать X сервер под акселеранты и Gnome/KDE поверх и получить GNU/Haiku :) Кстати возможно, что ядро Haiku Linux нехило обгонит…

> На гайке он шустрее чем на убунте! даже счас! при всей кривости порта!
Я запускал бинарник с Haikuware. Грузится в районе минуты, не показывает иконки и падает. После выхода оставляет всякие ненужные линуксячие процессы. Работать невозможно. Ещё он систему засоряет, закидывая файлы куда не попадя так, что InstalledPackages не может его удалить.

Да нет, второй

Да нет, второй линух неполучится, только проги от линуха будут быстро запускатся и не тормозить на каждой извилине. Так можно получить полноценную рабочую станцию на Гайке, даже при ограниченой поддержке железа. Порты должны быть на нативную гравическую систему, конечно. Нужны професиональные проги под графику и оффис.
Нативные счас совсем не светят, так как разработчиков под гайку мало и те счас на разработке системы все.
Коффис шёл на альфе1, попробовать можно было. Сейчас, очевидно, нужен новый порт.
Также вариянт, это добротный порт Wine, тогда можно обойтись на гайке без qt и gtk портов.
Вообщем, мне счас, чтоб избавится от убунты, нужон типа sane, cups, inkscape, gimp, blender, типа avidemux, типа gnome–office или koffice, stardict, transmission, firefox3, vlc, flesh player и удобная запись DVD.
Koe что уже есть из этого, недоделаное обычно.
В остальном, со всекими мелкими утылями да игрульками можно обойтись BeOSovymi.
А убунта своими тормозами бесит, иногда работать невозможно, я уже и xfce поставил, мало толку, паралелную нагрузку линух с X не держит.

> Нужны

> Нужны професиональные проги под графику
> inkscape, gimp
Чем Wonderbrush не угодил? Он поддерживает и векторную и растровую графику. Также поддерживает экспорт в SVG. Кстати автору давно пора его открывать, а то он с ним ничего не делает. В него нужно добавить систему модулей эффектов и нормальный импорт SVG.

> sane, cups
Продвижения были. Некоторые сканеры и принтеры уже работают.

> firefox3
WebPositive уже неплохой.

> transmission
Уже есть.

> vlc
Тоже есть. Где–то даже бинарники новой верси видел. Чем MediaPlayer не устраивает?

> avidemux
Clockwerk

> stardict
Попробуй собрать qstardict.

> flesh player
Gnash уже портировали. Большее сделать не удастся, т. к оффициальный Flash player проприетарен.

> удобная запись DVD
Работы с DVD уже ведутся. Программы записи должны быть, надо искать.

Выходит реально нужно делать офис и новый порт Blender. Не так уж и много.

PS: поиск — это очень мощное срество в нужных руках.

Да это BeOS

Да это BeOS наследие, и то не всё работает.
Пока чисто гаичного нихрена ничего нормального нету.
Да и саму гайку ещё пилить и пилить.
Вот wine дал бы фору гайке над BeOSью…

> Да это BeOS

> Да это BeOS наследие.
Как будто в этом есть что–то плохое. Некоторые програмы написаны на все времена и до сих пор не устарели. Уделают немало новомодных проектов. Тот же WonderBrush.

> Пока чисто гаичного нихрена ничего нормального нету.
У Haiku расширенное BeOS API в отличие от SkyOS и Syllable. Фактически обновлённая переписаная BeOS. Что понимать под «чисто гаичного»? То, что не совместимо с BeOS? Ставить это как самоцель глупо.

> Вот wine дал бы фору гайке над BeOSью…
Не с тем боремся…
Для порта Wine нужно заново написать загрузчик PE образов. Это сложная задача, требуючая знаний внутренней архитектуры Haiku.

Из чисто

Из чисто гаечного нормального софта пока только qt проги. Но qt не допилен тоже пока.
Потeнциал у гайки бeзусловно есть и не малый. Но пока это только потенциал, а дела делать надо сегодня…

>> vlc >Тоже есть.

>> vlc
>Тоже есть. Где–то даже бинарники новой верси видел.
Где?

Уже не помню.

Уже не помню. Были какие–то экспериментальные бинарники, работающие на определённной версии Haiku. Ещё запускали Qt версию. Возможно это именно эти бинарники. В любом случае они у меня не пошли.
Лучше не портом VLC заниматься, а кодеки и модули к media_server делать.

>это добротный

>это добротный порт Wine–зачем?

Затем, чтобы

Затем, чтобы надобность портов отпала.
Wine по любому нужен.

Иными словами,

Иными словами, запускать почти все программы из–под громоздкого эмулятора?

В жопу

В жопу эмули
От кофиса так стошнило — до сих пор плющит

Тока свое- мелкошустрое и умное

А есси венду под гайку тащить -вообще выблюет навсегда

Венда и так покойница

Да, трансляторы можно и гобешные пользовать — для извратов
А вообще — совместимостью лучше не заморачиваться вообще
Гайкувэй онли

> Да,

> Да, трансляторы можно и гобешные пользовать — для извратов
В Gobe Productive свой проприетарный неизвестный формат. Если его не знать эти трансляторы бесполезны.

Думаю, хорошо

Думаю, хорошо былобы формат делать совместимым с оо, на сколько нужно, со временем дополняя (до поддержки всех 800 страниц), т.е. главное чтоб сделаный документ в гайковской проге можно былобы правильно открыть в других популярных офисных програмах. Или хотябы экспорт в такой формат.

да, с гобе

да, с гобе пролет
Тогда системные -те что есть в гайке

В абиворде Есть открытые
Но тогда абиворде повторять придется)

Э кмк не очень существенно — печать в пдф наконец)

Кстати

Кстати об извращениях и трансляторах: 2 года назад гео предлагал использовать чтения/записи документов трансляторы в сочетании с имеющимися редакторами, типа nvu. Насколько это реально?

Транслятор —

Транслятор — это переводчик. Просто переводчик из одного формата в другой. Если написать транслятор из DOC к какому–то общему знаменателю, то даже StyledEdit будет с DOC`ами работать.

Проблема в том, что чем такой транслятор писать — проще повеситься. Он будет сложнее, чем сам StyledEdit, и, может быть, даже сложнее, чем nvu.

> то даже StyledEdit

> то даже StyledEdit будет с DOC`ами работать.
StyledEdit не поддерживает важные опции форматирования — параграфы и встраивание. Какой транслятор не пиши, часть форматирования слетит.

А я и

А я и не говорил, что форматирование останется. Я говорил, что можно будет работать — то есть редактировать текст.

Скриптячить &mdas

Скриптячить — у гайки хей в системе есть
Вообще мысль ничего так
Как пример — можно офис под айпэд глянуть Pages

похож на идею первоначальную

Hey не годится

Hey не годится для скриптования. Это низкоуровневая программа для управления скриптуемыми объектами из sh скриптов. Для скриптования офиса нужен полноценный язык программирования. Думаю неплохо подходит Lua. Простой легковесный язык. Скриптовать можно примерно так:

require “System” -–Модуль стандартных интерфейсов среды
require “Text” -–Текстовый модуль

text = Text.New(«Text», {left=16, top=16, right=256, bottom=256}) -–Создать текстовый документ
text:Insert(«Hello, World!», {style="bold", size=16}) -–Вставить текст с жирным шрифтом и размером 16 пунктов

obj=System.GetObjectByName(«Text») -–Получить созданный объект по его имени; имя задаётся в редакторе или при создании объекта из скрипта
obj:Delete() -–Удалить объект

Но думаю об этом рано пока думать.

PS: администраторам сайта: откюлчите пожалуйста распознавание знаков препинания в коде.

Не знаю,

Не знаю, насколько Луа распространен

Яп предложил Бобик, но должок тянет

А так — отличный клей

Репликант

Репликант композитор (зачатки в BeOS):
Replicants on beos
*прога делающая картинку или видео репликантом называется MonoView (open source)

А

А к оринальному Gobe Productive SDK для создания своих объектов не было?

Вроде небыло.

Вроде небыло.

X512 как дела

X512 как дела на фронте?

До этого

До этого дня времени для разработки почти не было.

Пока сделал тестовую реализацию ГИП, использующую принцип иерархического фокуса похожий на фокус в BlackBox. Кстати как побочный эффект своего ГИП — портируемость, так что редактор уже не совсем нативен. BView используется как средство вывода пикселей и получения данных с устройств ввода. Реализация тестовая, API пока полностью не спроектирован, особенно сообщения и вывод графики.

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

Не нашел более

Не нашел более лучшей темы..
Словом, на Haiku портировали программу верстки Scribus, которая существует также в версиях для Windows, MacOS, OS/2, *BSD и Solaris:

http://haikuware.com/directory/view-details/productivity/desktop–publish…

http://www.scribus.net/canvas/Scribus

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
N
W
F
p
H
3
Enter the code without spaces and pay attention to upper/lower case.