Разработчик(и) | Проект GNU |
---|---|
Стабильный релиз | 2.1.4 [1] / 11 марта 2024 г. |
Репозиторий |
|
Написано в | С++ |
Операционная система | Linux , Windows , macOS , Unix-подобные [2] |
Платформа | x86 , x86-64 |
Тип | Текстовый процессор |
Лицензия | GPL-3.0 или более поздняя версия [3] |
Веб-сайт | www.texmacs.org |
GNU TeXmacs — научный текстовый процессор и компонент набора текста проекта GNU . Он возник как вариант GNU Emacs с функциональными возможностями TeX , хотя и не разделяет код с этими программами, используя шрифты TeX. [4] Он написан и поддерживается Йорисом ван дер Хувеном и группой разработчиков. [5] Программа создает структурированные документы с пользовательским интерфейсом WYSIWYG . Пользователь может создавать новые стили документов. Редактор предоставляет высококачественные алгоритмы набора текста , а также шрифты TeX и другие шрифты для публикации профессионально выглядящих документов.
Как структурированный WYSIWYG-редактор и система подготовки документов, TeXmacs похож на более ранние структурированные редакторы документов, такие как Interleaf (первый выпуск 1985), Framemaker (1986), SoftQuad Author/Editor (1988), [6] Lilac, [7] Grif (1991), [8] и Thot; [9] также проводились академические исследования в области интерактивного редактирования сложных типографских конструкций, представленных логически. [10] [11]
В 2000-х и 2010-х годах интерес к интерактивному редактированию структурированного текста стимулировал разработку программ, предназначенных для ученых-гуманитариев; примером этого является CWRC-Writer, визуальный XML-редактор с «близким к WYSIWYG редактированием и обогащением научных текстов осмысленными визуальными представлениями разметки» [12] .
С другой стороны, в мире редактирования и подготовки документов существует программа для визуального взаимодействия со структурированными текстами, написанными в LaTeX, — LyX , которая нацелена не на редактирование WYSIWYG, а на визуальное представление структуры ( WYSIWYM ).
Как и во многих редакторах WYSIWYG (например, Microsoft Word ), авторы манипулируют документом на экране, который должен быть распечатан на похожей бумажной копии. Цель TeXmacs — предоставить редактор WYSIWYG, который, тем не менее, позволяет писать правильно структурированные документы с эстетически приятными результатами набора. TeXmacs не является интерфейсом для LaTeX [13], но документы TeXmacs можно преобразовать как в TeX, так и в LaTeX. LaTeX также можно импортировать (в некоторой степени), и предусмотрен как импорт, так и экспорт в HTML , Scheme, Verbatim и XML ; [14] экспорт HTML можно стилизовать с помощью CSS (начиная с версии 1.99.14). Также есть конвертер для MathML , и TeXmacs может выводить PDF и PostScript для печати. [15]
TeXmacs может обрабатывать математические формулы , таблицы, изображения, перекрестные ссылки и цитаты . Его можно использовать в качестве интерфейса для ряда систем компьютерной алгебры, таких как Maxima , FriCAS и SageMath , и, в свою очередь, интегрировать часть их вывода в свой набор. TeXmacs также поддерживает язык расширения Scheme , называемый Guile, для настройки программы и написания расширений.
Он также имеет режим презентации и небольшой редактор технических чертежей , и есть планы по развитию в направлении полного научного офисного пакета с возможностями электронных таблиц . Реализация электронных таблиц присутствует, начиная с версии 1.99.12; электронные таблицы в TeXmacs могут использовать плагины (например, Python или Maxima) для вычисления значений ячеек.
В настоящее время TeXmacs работает на большинстве архитектур на основе Unix, включая Linux , FreeBSD , Cygwin , Haiku и macOS . Наряду с версией Cygwin, доступен собственный порт для Microsoft Windows .
В редакторе TeXmacs структура и внешний вид документа представлены одновременно; [16] структура становится очевидной для пользователя путем окружения логических единиц документа вложенными фокусными рамками, несущими цветовые подсказки, которые отображаются в соответствии с движением курсора. [17] Подробное описание структуры вблизи курсора приводится в нижнем колонтитуле окна редактора, точно выбираемое с помощью нажатий стрелок влево-вправо. [16] В редакторе можно переключаться между текстовым режимом и режимом редактирования исходного текста, а также присутствует поддержка композиции макросов; редактор исходного текста поддерживает синтаксис . [18]
TeXmacs облегчает ввод математических формул, отображая последовательности нажатий клавиш на символы. Например, символ можно ввести, набрав .=>
Некоторые символы не имеют такого представления ( например). Их можно вводить с помощью клавиш (например, для нажатий клавиш . Этот ввод с помощью клавиатуры отличается от других редакторов формул, которые, как правило, предоставляют меню «укажи и щелкни» для этой задачи. [19]Tab ↹=>Tab ↹Tab ↹
TeXmacs можно использовать как пакетный процессор (это обычный режим работы LaTeX ), используя виртуальный фреймбуфер X , чтобы избежать открытия нежелательных окон во время обработки. Например, команда
$ xvfb-run texmacs --convert article.tm article.pdf --quit
создает PDF- файл «article.pdf» из документа TeXmacs «article.tm».
Все документы TeXmacs или фрагменты документов можно рассматривать как деревья (концепция дерева существует также в языке разметки SGML , которому формат Texmacs подобен). Например, дерево
представляет собой формулу
(здесь написано с помощью разметки TeX, используемой Википедией) и преобразовано собственным движком набора TeXmacs в набранную формулу, вставленную здесь как изображение:
Деревья TeXmacs представлены в файлах TeXmacs как строки, а в редакторе TeXmacs как наборное представление документа вместе с его интерактивным поведением. [20] В экранном представлении дерева TeXmacs перемещение курсора представляет собой движение внутри дерева. На диске существуют три представления формата TeXmacs: собственное представление, представление XML и представление с Scheme S-выражениями; представление Scheme полезно для взаимодействия с программами Scheme.
Процесс набора преобразует деревья TeXmacs в блоки. [21] Оценка деревьев TeXmacs происходит путем сокращения примитивов, то есть путем оценки макроприложений. Примитивы набора разработаны так, чтобы быть очень быстрыми, и встроены в редактор; рендеринг многих примитивов можно настраивать с помощью встроенных переменных среды; язык таблиц стилей позволяет пользователям писать новые примитивы как макросы поверх встроенных примитивов.
TeXmacs использует глобальный алгоритм «разрыва строк» (похожий на алгоритм TeX ) и, кроме того, использует глобальный алгоритм «разрыва страниц»; алгоритм разрыва страниц учитывает плавающие объекты (рисунки, таблицы, сноски) и многоколоночное содержимое.
Документы могут контролироваться через собственную макросистему и через Guile-Scheme. Можно настраивать меню редактора и сочетания клавиш, а также программно воздействовать на дерево документа.
Макросы TeXmacs предоставляют средства структурированного ввода (как в TeX/LaTeX), и они немедленно набираются, в то же время сохраняя редактируемые поля ввода. Они написаны в исходном коде, хотя редактор WYSIWYG может помочь в их составлении посредством перевода визуальных структур в их синтаксис. [22]
Scheme встроен в TeXmacs через GNU Guile ; сам редактор может управляться следующим образом: [21] меню и сочетания клавиш могут быть настроены. Команды Scheme могут быть вызваны интерактивно внутри документов TeXmacs, могут быть вызваны из командной строки и из макросов TeXmacs. Деревья TeXmacs могут быть переданы в Scheme в разных формах: как «пассивные деревья» (удобно для непосредственного управления содержимым с помощью стандартных процедур Scheme в списках), как «активные деревья» (отслеживают положение дерева внутри глобального дерева документов и могут использоваться для программного изменения документов) и в «гибридном» представлении.
Графические объекты также являются частью формата TeXmacs и могут программно управляться из Scheme. Пример графики TeXmacs, созданной в сеансе TeXmacs Scheme, показан ниже вместе с сеансом, который сгенерировал изображение. Изображения, созданные программно в сеансе Scheme, также можно редактировать с помощью внутреннего редактора чертежей, поскольку они вставляются в документ в виде дерева; Скрипты Scheme также могут быть выполнены с помощью макроса extern
TeXmacs — в этом случае в документе доступен только набранный материал, и прямое редактирование невозможно (изменения должны быть сделаны в коде Scheme).
Scheme ] ( define pi ( acos -1 )) ;; Функция для определения точки в графическом формате TeXmacs с использованием двух координат Scheme ] ( define ( pt x y ) ' ( point , ( number->string x ) , ( number->string y ))) ;; Установить точки Схема ] ( определить xC ( - ( * 2 ( cos ( / pi 3 ))))) Схема ] ( определить yC ( * 2 ( sin ( / pi 3 )))) Схема ] ( определить pA ( pt -2 0 )) Схема ] ( определить pB ( pt 2 0 )) Схема ] ( определить pC ( pt xC yC )) Схема ] ( определить tA ( pt -2.3 -0.5 )) Схема ] ( определить tB ( pt 2.1 -0.5 )) Схема ] ( определить tC ( pt ( - xC 0.2 ) ( + yC 0.2 ))) ;; Сгенерировать графическую схему ] ( stree->tree ' ( with "gr-geometry" ( tuple "geometry" "400px" "300px" "center" ) ( graphics ( with "color" "blue" ( text-at ( TeXmacs ) , ( pt -0.55 -0.75 ))) ( with "color" "black" ( arc , pA , pC ,pB )) ( с "цветом" "черный" ( линия , pA , pB )) ( с "цветом" "красный" ( линия , pA , pB , pC )) ( с "цветом" "черный" ( текст-в "A" , tA )) ( с "цветом" "черный" ( текст-в "B" , tB )) ( с "цветом" "черный" ( текст-в "C" , tC )))))
TeXmacs имеет бэкэнды, поддерживающие множество технологий.
Выходные данные плагина могут быть встроены в документы TeXmacs с помощью «исполняемых переключателей»; [23] таким образом можно переключаться между заданным входом в систему и соответствующим выходом, который органично вписывается в документ.
Поскольку TeXmacs не является интерфейсом LaTeX, из этого следует, что мы можем гарантировать корректные преобразования только для (довольно большого) подъязыка LaTeX.