Что такое ТеХ? | Aspose.TeX .NET
Чем TeX НЕ является
TeX определенно не является форматом вообще.
Что такое TeX?
Так что же такое TeX? Ну, вот в чем вопрос, как сказал Гамлет1. Попробуем ответить на него максимально просто.
Представьте, что у нас есть язык программирования, состоящий из двух элементарных команд (называемых управляющими последовательностями) или примитивами: \a
и \b
. И на этом языке мы можем писать программы для верстки документов (книг, статей и т.п.). Назовем этот язык (L1). Для того, чтобы эти программы выполнялись определенным образом, у нас есть некий движок, интерпретирующий команды этого языка.
Теперь предположим, что при написании программы верстки какого-то документа мы обнаружили, что подпоследовательность \a \b \a
встречается довольно часто. А также предположим, что в нашем языке есть еще один примитив \def
, который позволяет нам определять подпрограммы или макросы. Назовем этот язык (L2). В этих обстоятельствах мы можем определить макрос \def\c{\a \b \a}
в начале программы и заменить каждое вхождение подпоследовательности на \c
как для лучшей читаемости, так и для сокращения.
Теперь, если мы хотим верстать другой документ, в программе которого эта подпоследовательность команд также встречается часто, нам придется определить этот макрос заново. Но давайте предположим, что наш движок способен загружать макрос \c
в его внутреннее состояние, а затем сохранять это состояние в виде двоичного файла (дампа), который затем автоматически загружается (“поверх” файла). (L2) набор языковых команд) перед обработкой программ набора каждого документа, в котором требуется макрос \c
. Мы будем называть набор примитивов, расширенный макросом \c
, форматом. Таким образом, наш формат является макрорасширением примитивного языка низкого уровня (L2).
Механизм также содержит ряд внутренних регистров или внутренних параметров, доступ к которым можно получить с помощью управляющих последовательностей. Помимо определений макросов, формат может содержать выражения инициализации для этих параметров.
Так получилось, что Дональд Э. Кнут определил язык, похожий на **(L2). **, но с гораздо более широким набором примитивов, который он назвал TeX. Он также создал движок, который понимал (и до сих пор понимает) язык TeX. Он также назвал его TeX.
К счастью, это были не единственные вещи, которые он делал. Он также предложил макрорасширение или формат, который он назвал Plain TeX, который сделал написание программ более удобным. Исходный набор примитивов TeX иногда называют VirTeX («Vir» от «девственный») и формально также является форматом, если рассматривать его вместе со значениями внутренних параметров по умолчанию.
Итак, с одной стороны, TeX — это язык программирования. А с другой стороны, это ЯВЛЯЕТСЯ интерпретатором, который понимает этот язык. И, с третьей стороны, TeX — это более общее понятие, означающее систему верстки в целом.
Единственное, что здесь остается отметить, это то, что, по сути, символы самого набираемого текста также являются командами, заставляющими движок TeX набирать соответствующие символы (с учетом текущей входной кодировки) с использованием текущих настроек шрифта (что, в свою очередь, управляются последовательностями управления). Таким образом, при определении макросов мы также можем использовать символы.
Надеемся, что теперь вопрос «Что такое TeX?» больше не существует в твоем сознании.
1 ↩︎