]]> ]]>
Править | Обсудить | История

TeX

Дата создания:
1978
Парадигма:
Типизация:
Принятые расширения файлов:
.tex
Реализации и версии (свернуть все | развернуть все):
Язык программирования

TeX — система набора текста и верстки, разработанная профессором Дональдом Кнутом.

Команды TeX обычно начинаются с обратной косой черты и группируются при помощи фигурных скобок. Почти все синтаксические свойства языка могут быть изменены “на лету”, что делает сложным синтаксический разбор TeX при помощи чего-либо, отличного от самого TeX. Многие команды, включая большинство определенных пользователем, разворачиваются до тех пор, пока не останутся только неразворачиваемые символы. Сама процедура развертывания практически лишена побочных эффектов. Хвостовая рекурсия оптимизируется. Присутствуют конструкции if-then-else.

Хотя TeX является системой набора и верстки, развитые возможности макроязыка TeX делают его Тьюринг-полным языком программирования.

Элементы синтаксиса:

Комментарий до конца строки %
Присваивание значения переменной varname = value
Блок { ... }

Логотип TeX
Логотип TeX

Примеры:

Квадратное уравнение:

Пример для версий Web2c 2009

Данный пример использует TeX-пакет для арифметики с фиксированный запятой fp и макрос этого пакета для решения квадратных уравнений \FPqsolve. Данный макрос может находить только вещественные корни уравнения, и завершается с ошибкой “FP error: Quadratic equation does not have a solution” если корни комплексные (т.е. вещественных корней нет).

\input fp.tex

\message{A = }
\read -1 to \a
\message{B = }
\read -1 to \b
\message{C = }
\read -1 to \c

\FPqsolve{\xone}{\xtwo}{\number\a}{\number\b}{\number\c}

$\a x^2+\b x+\c=0$

$x_1=\xone$

$x_2=\xtwo$
\bye

Квадратное уравнение: документ, сгенерированный TeX-программой
Квадратное уравнение: документ, сгенерированный TeX-программой

Факториал:

Пример для версий Web2c 2009

Данный пример использует итеративное определение факториала.

В макросе \factorial используются двойные фигурные скобки, т.к. в макросе присутствует цикл, который вызывается внутри другого цикла.

Рассчитываются только факториалы чисел до 12 включительно. Для больших чисел выполнение завершается с ошибкой “Arithmetic overflow”.

\newcount\n \newcount\p \newcount\m

\def\factorial#1{{\m=#1\advance\m by 1
\n=1
\p=1
\loop\ifnum\n<\m \multiply\p by \n \advance\n by 1 \repeat\number\p}}

\def\printfactorials#1{\m=#1\advance\m by 1
\n=0
\loop\ifnum\n<\m \hfil\break\number\n! = \factorial{\n} \advance\n by 1 \repeat}

\printfactorials{12}
\bye

Числа Фибоначчи:

Пример для версий Web2c 2009

Данный пример использует итеративный процесс для расчета чисел Фибоначчи.

В макросе \fibonacci используются двойные фигурные скобки, т.к. в макросе присутствует цикл, который вызывается внутри другого цикла.

\newcount\n \newcount\np \newcount\npp \newcount\m \newcount\f

\def\fibonacci#1{{\ifnum #1<3 1\else
\np=1\npp=1\m=3
\loop\ifnum\m<#1\f=\npp\npp=\np\advance\np by\f\advance\m by 1\repeat
\f=0\advance\f by\np\advance\f by\npp
\number\f\fi}}

\def\printfibonacci#1{\m=#1\advance\m by 1
\n=1
\loop\ifnum\n<\m\fibonacci{\n}, \advance\n by 1\repeat...}

\printfibonacci{16}
\bye

Hello, World!:

Пример для версий Web2c 2009
Hello, World!
\bye

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам