stringtranslate.com

Преттипринт

Pretty-printing (или Prettyprinting ) — это применение любого из различных соглашений о стилистическом форматировании к текстовым файлам , таким как исходный код , разметка и подобные виды контента. Эти соглашения о форматировании могут предполагать соблюдение стиля отступов , использование другого цвета и шрифта для выделения синтаксических элементов исходного кода или настройку размера, чтобы людям было легче читать и понимать контент. Симпатичные принтеры для исходного кода иногда называют форматтерами кода или украшателями .

Красиво-печатная математика

Набранное математическое выражение

Под красивой печатью обычно подразумевается отображение математических выражений так, как если бы они были набраны профессионально. Например, в системах компьютерной алгебры , таких как Maxima или Mathematica , система может записывать выходные данные типа «х ^ 2 + 3 * х"как " ". Некоторые графические калькуляторы , такие как серии Casio 9860 , серии HP-49/50 и HP Prime , TI-84 Plus , TI-89 и TI-Nspire , TI-83 Plus с PrettyPt [1 ] или TI-84 Plus с таким же дополнением или операционными системами с поддержкой MathPrint, могут выполнять красивую печать. Кроме того, ряд новых научных калькуляторов оснащены матричными экранами, способными выполнять красивую печать. печать, такая как серия Casio FX-ES (Natural Display), серия Sharp EL-W (WriteView), HP SmartCalc 300s, TI-30XB и Numworks .

Многие программы форматирования текста умеют также набирать математические данные: TeX был разработан специально для качественного математического набора .

Красиво печатаемая разметка и код на основе тегов

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

Симпатичная печать в экземплярах языка разметки чаще всего связана с отступами тегов и строкового содержимого для визуального определения иерархии и вложенности. Хотя синтаксические структуры языков на основе тегов существенно не различаются, отступы могут существенно различаться в зависимости от того, как интерпретируется язык разметки, или от данных, которые он описывает.

В MathML символы пробелов не отражают данные, значение или синтаксис сверх того, что требуется синтаксисом XML . В HTML пробельные символы между тегами считаются текстом и анализируются как текстовые узлы в анализируемом результате. [2] Хотя к документу MathML можно широко применять отступы, при красивой печати HTML-документа необходимо проявлять достаточную дополнительную осторожность, чтобы гарантировать, что дополнительные текстовые узлы не создаются и не уничтожаются в общей близости к содержимому или элементам тега, отражающим содержимое. Эта разница в сложности нетривиальна с точки зрения автоматизированной операции красивой печати, где не требуются специальные правила или крайние случаи, как в более простом примере MathML. Пример HTML может потребовать серии прогрессивных взаимосвязанных алгоритмов для учета различных шаблонов элементов тегов и контента, который соответствует единому стилю и единообразен в применении в различных экземплярах, о чем свидетельствует компонент приложения markup.ts [ 3] , используемый для усовершенствуйте HTML, XML и родственные технологии для инструмента Pretty Diff .

Форматирование кода программирования

Программисты часто используют инструменты для форматирования исходного кода языка программирования определенным образом. Правильное форматирование кода облегчает чтение и понимание. Разные программисты часто предпочитают разные стили форматирования, например, использование отступов кода и пробелов или расположение фигурных скобок . Средство форматирования кода или индентор кода преобразует исходный код из одного стиля формата в другой. Это относительно просто из-за однозначного синтаксиса языков программирования. Украшение кода включает в себя разбор исходного кода на структуры компонентов, такие как операторы присваивания, блоки if , циклы и т. д. (см. также поток управления ), и их форматирование способом, указанным пользователем в файле конфигурации.

Улучшители кода существуют как отдельные приложения, а также встроены в текстовые редакторы и интегрированные среды разработки . Например, различные языковые режимы Emacs позволяют корректно и привлекательно размещать блоки кода. [4]

HTML

Lisp красивый принтер

Ранним примером красивой печати была программа Билла Госпера «GRINDEF» ( т. е. «функция измельчения») ( около 1967 г.), которая использовала комбинаторный поиск с обрезкой для форматирования программ LISP . Ранние версии оперировали исполняемой (списковой) формой программы Lisp и не обращали внимания на специальные значения различных функций. В более поздних версиях были специальные соглашения о чтении для включения неисполняемых комментариев, а также для сохранения макросов чтения в нераскрытом виде. Они также допускали специальные соглашения об отступах для специальных функций, таких как if. [5] [6] Термин «шлифовка» использовался в некоторых кругах по Лиспу как синоним красивой печати. [7]

Правила стиля проекта

Многие проекты с открытым исходным кодом установили правила компоновки кода. Наиболее типичными являются форматирование GNU [8] и стиль BSD. [9] Самая большая разница между ними заключается в расположении фигурных скобок: в стиле GNU открывающие и закрывающие скобки находятся на отдельных строках с одинаковым отступом. Стиль BSD помещает открывающую скобку в конце предыдущей строки, а за закрывающей скобкой может следовать else . Размер отступа и расположение пробелов также различаются.

Пример форматирования и украшения кода

В следующем примере показаны некоторые типичные структуры C и то, как их форматируют различные правила стиля отступов . Без какого-либо форматирования это выглядит так:

int foo ( int k ){ if ( k < 1 || k > 2 ){ printf ( «вне диапазона \n » ); printf ( "эта функция требует значения 1 или 2 \n " );} else { printf ( "Переключение \n " ); переключатель ( k ) { случай 1 : printf ( "1 \n " ); перерыв ; случай 2 : printf ( "2 \n " ); перерыв ;}}}   

Программа GNU indent выдает следующий результат, когда ее просят сделать отступ в соответствии с правилами GNU :

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( «вне диапазона \n » ); printf ( "эта функция требует значения 1 или 2 \n " ); } else { printf ( "Переключение \n " ); переключатель ( k ) { случай 1 : printf ( "1 \n " ); перерыв ; случай 2 : printf ( "2 \n " ); перерыв ; } } }                                   

Он выдает следующий результат при форматировании в соответствии с правилами BSD:

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( «вне диапазона \n » ); printf ( "эта функция требует значения 1 или 2 \n " ); } else { printf ( "Переключение \n " ); переключатель ( k ) { случай 1 : printf ( "1 \n " ); перерыв ; случай 2 : printf ( "2 \n " ); перерыв ; } } }                

Смотрите также

Связанные понятия

Утилиты

Рекомендации

  1. ^ "PrettyPrint - ticalc.org" . www.ticalc.org . Проверено 13 апреля 2022 г.
  2. ^ Барон, Л. Дэвид. «Пробелы в DOM». Сеть разработчиков Mozilla . Проверено 27 августа 2012 г.
  3. ^ разметка.ts
  4. ^ Столлман, Ричард М. «Отступы для программ». Руководство по GNU Emacs . Фонд свободного программного обеспечения . Проверено 20 октября 2011 г.
  5. ^ Ира Гольдштейн, «Красивая печать: преобразование списка в линейную структуру», Памятка по искусственному интеллекту 279, Массачусетский технологический институт, февраль 1973 г., полный текст
  6. ^ Ричард К. Уотерс, «Использование нового обычного принтера Lisp», ACM SIGPLAN Lisp Pointers 5 : 2: 27-34, апрель – июнь 1992. полный текст
  7. ^ Файл жаргона , sv Grind
  8. ^ Стиль GNU
  9. ^ Стиль BSD

Внешние ссылки