% $Id$ % %\def\Status{1} \documentclass{article} \let\tldocrussian=1 % for live4ht.cfg \usepackage{cmap} \usepackage{tex-live} \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[russian]{babel} \newcommand\Unix{Unix} \newcommand\Windows{Windows} \usepackage{indentfirst} \def\p.{стр.~}% \renewcommand{\samp}[1]{<<\texttt{#1}>>} \hypersetup{unicode=true} % Makes bookmarks work in Russian % \begin{document} \title{% {\huge \textit{Руководство пользователя \protect\TL{} "--- 2021}}% } \author{Редактор: Карл Берри\\[3mm] \url{https://tug.org/texlive/}} \date{Март 2021} \maketitle \begin{multicols}{2} \tableofcontents %\listoftables \end{multicols} \section{Введение} \label{sec:intro} \subsection{\protect\TeX\ Live и \protect\TeX\ Collection} В этом документе описаны основные возможности программного продукта \TL{} "--- дистрибутива \TeX{}а и других программ для GNU/Linux и других UNIXов, \MacOSX и Windows. \TL{} можно скачать с Интернета, а можно получить на \DVD{} <<\TK{}>>. Эти \DVD{} распространяются группами пользователей \TeX а. В разделе \ref{sec:tl-coll-dists} кратко описано содержание такого \DVD{}. И \TL{}, и \TK{} поддерживаются группами пользователей \TeX а. В этом документе в основном описан \TL{}. В \TL{} включены программы \TeX{}, \LaTeXe{}, \ConTeXt, \MF, \MP, \BibTeX{} и многие другие; обширная коллекция макросов, шрифтов и документации; а также поддержка вёрстки на многих языках мира. Краткий список основных изменений в этом издании \TeXLive{} можно найти в разделе~\ref{sec:history}, \p.\pageref{sec:history}. \htmlanchor{platforms} \subsection{Поддерживаемые операционные системы} \label{sec:os-support} В \TL{} включены скомпилированные программы для многих вариантов UNIX, включая \GNU/Linux, \MacOSX{} и Cygwin. Исходный код также включён в дистрибутив, что позволяет компилировать \TL{} и на платформах, для которых мы не включили собранных программ. Что касается Windows: поддерживаются версии Windows~7 и младше. Windows Vista, скорее всего, будет большей частью работать, но \TL{} теперь даже не сможет установиться на Windows~XP и старше. Мы не собрали 64-битовые программы для Windows, но 32-битовые варианты должны работать на 64-битовых системах. См. также способы добавить 64-битовые программы на странице \url{https://tug.org/texlive/windows.html}. Альтернативные варианты для Windows и \MacOSX{} описаны в разделе~\ref{sec:tl-coll-dists}. \subsection{Основы установки \protect\TL{}} \label{sec:basic} \TL{} можно установить с \DVD{} или с Интернета (\url{https://tug.org/texlive/acquire.html}). Программа для установки с сети сама по себе мала "--- она скачивает все нужное с Интернета. Программа установки с \DVD{} позволяет установить \TL{} на диск компьютера. Вы не сможете запускать \TL{} непосредственно с \DVD{}, но вы можете собрать работающую версию \TL, например, на флешке USB (см.~\ref{sec:portable-tl}). Установка системы подробно описана в следующих разделах (\p.\pageref{sec:install}), но вкратце она состоит в следующем: \begin{itemize*} \item Скрипт для установки системы называется \filename{install-tl} в Unixе и подобных системах и \filename{install-tl-windows} под Windows. Он может работать в графическом варианте, если выбрана опция \code{-gui} (режим по умолчанию для Windows и MacOSX), в текстовом варианте, если выбрана опция \code{-gui=text} (режим по умолчанию для остальных архитектур). \item Среди установленных программ есть <<Менеджер \TL{}>>, \prog{tlmgr}. Как и программа установки, он может работать как в графическом, так и в текстовом режимах. Эта программа позволяет устанавливать и удалять пакеты, а также настраивать систему. \end{itemize*} \htmlanchor{security} \subsection{Соображения безопасности} \label{sec:security} Насколько мы можем сказать, основные программы \TeX{}а были и остаются очень надежными. Однако несмотря на все усилия, некоторые программы дистрибутива могут не достичь этого уровня. Как обычно, вы должны быть осторожны, обрабатывая любыми программами ненадежные исходные данные; для безопасности делайте это в отдельной поддиректории или под chroot. Особенной осторожности требует работа под Windows, поскольку Windows обычно запускает в первую очередь копию программы из текущей директории, даже если существует другая копия там, где в системе обычно находятся бинарники. Это открывает много возможностей для хакерских атак. Мы закрыли много дыр в безопасности, но несомненно ещё больше дыр осталось, особенно в предоставленных нам чужих программах. Поэтому мы рекомендуем проверять подозрительные файлы в рабочей директории, особенно исполняемые файлы (бинарники и скрипты). Обычно их там быть не должно, и вёрстка документов не должна их создавать. Наконец, \TeX{} (и вспомогательные программы) способны писать в файлы при обработке документов. Это можно использовать для атаки разнообразными способами. И опять, безопаснее всего обрабатывать неизвестные документы в отдельной директории. Еще один аспект безопасности состоит в том, чтобы иметь гарантию, что сгруженные из Интернета файлы не отличаются от созданных авторами. Программа \prog{tlmgr} (раздел~\ref{sec:tlmgr}) автоматически проводит криптографическую проверку сгруженных файлов, если в системе установлена программа \prog{gpg} (GNU Privacy Guard). Хотя программа \prog{gpg} не входит в комплект поставки \TL, на странице \url{https://texlive.info/tlgpg/} можно найти ее версию для Windows или MacOS. \subsection{Где можно получить поддержку} \label{sec:help} Сообщество пользователей \TeX{}а активно и дружелюбно, и практически на каждый серьёзный вопрос найдётся ответ. Однако эта поддержка неформальна, выполняется добровольцами, и поэтому очень важно, чтобы вы сами попробовали найти ответ перед тем, как задавать вопрос. (Если вы предпочитаете коммерческую поддержку, возможно вам стоит вместо \TL{} купить одну из коммерческих версий \TeX{}а, см. список по адресу \url{https://tug.org/interest.html#vendors}). Вот список источников поддержки, приблизительно в том порядке, в котором мы рекомендуем к ним обращаться: \begin{description} \item[Страница для новичков:] Если вы "--- новичок, то страница \url{https://tug.org/begin.html} может послужить для начала. \item [\TeX{} FAQ:] \TeX{} FAQ (ЧаВо, часто задаваемые вопросы) "--- огромная коллекция ответов на всевозможные вопросы, от самых простых до самых сложных. Английская версия ЧаВо находится на \TL{} в разделе \OnCD{texmf-dist/doc/generic/FAQ-en/} и доступна в Интернете по адресу \url{https://texfaq.org}. Пожалуйста, начинайте поиск ответа на ваши вопросы отсюда. \item [\TeX{} Catalogue:] Если вы ищете какой-либо пакет, шрифт, программу и т.п., то вам стоит заглянуть в \TeX{} Catalogue. Это огромный каталог всего, что относится к \TeX{}у. См. \url{https://www.ctan.org/pkg/catalogue}. \item [\TeX{} во всемирной паутине:] Вот страничка, на которой много ссылок по \TeX{}у, включая многочисленные книги, руководства и статьи: \url{https://tug.org/interest.html}. \item [Архивы списков рассылки и групп:] Основные форумы технической поддержки \TeX а "--- сообщество пользователей \LaTeX а \url{https://latex.org/}, сайт вопросов и ответов \url{https://tex.stackexchange.com}, группа \url{news:comp.text.tex} и список рассылки \email{texhax@tug.org}. В их архивах тысячи вопросов и ответов на все случаи жизни. См. для последних двух \url{https://groups.google.com/groups?group=comp.text.tex} и \url{https://tug.org/mail-archives/texhax}. Поиск в сети тоже часто помогает найти ответ. \item [Вопросы на форумах] Если вы не можете найти ответа на ваш вопрос, вы можете либо опубликовать вопрос в \url{http://latex.org/} или \url{https://tex.stackexchange.com/} через Web, или в \dirname{comp.text.tex} при помощи Google или вашей любимой новостной программы, либо послать письмо на лист рассылки \email{texhax@tug.org}. Но перед этим пожалуйста прочтите в ЧаВо совет о том, как правильно задавать вопросы на этих форумах: \url{https://texfaq.org/FAQ-askquestion}. \item [Поддержка \TL{}] Если вы хотите сообщить о баге или высказать нам свои предложения и замечания о дистрибутиве \TL{}, его установке или документации, пишите на лист рассылки \email{tex-live@tug.org}. Однако если ваш вопрос касается конкретной программы, входящей в \TL{}, вам лучше задавать вопросы её автору или посылать их на соответствующий список рассылки. Часто соответствующий адрес можно получить при помощи опции \code{-{}-help} нужной программы. \item[Русскоязычные ресурсы] \emph{(добавлено переводчиком)} Эхоконференция \dirname{ru.tex} доступна как в сети ФИДО, так и в Интернете (как \url{news:fido7.ru.tex}). Русские группы ФИДО можно найти на многих серверах, например \code{demos.ddt.su}. В ЧаВо этой группы приводится много ссылок на русскоязычные ресурсы. \end{description} С другой стороны, вы сами тоже можете помочь тем, у кого есть вопросы. Ресурсы выше открыты для всех, поэтому вы тоже можете присоединиться, читать и помогать другим. % don't use \TL so the \uppercase in the headline works. Also so % tex4ht ends up with the right TeX. Likewise the \protect's. \section{Структура \protect\TeX\protect\ Live} \label{sec:overview-tl} Этот раздел описывает структуру и содержание \TK{} и его составной части \TL{}. \subsection{\protect\TeX\protect\ Collection: \TL, pro\protect\TeX{}t, Mac\protect\TeX} \label{sec:tl-coll-dists} \DVD{} \TK{} содержит следующие пакеты: \begin{description} \item [\TL:] полная система, которую можно установить на жесткий диск компьютера. Её домашняя страница \url{https://tug.org/texlive/}. \item [Mac\TeX:] вариант для \MacOSX{} (Apple теперь называет \MacOSX{} macOS, но мы в этом документе используем старое название). Этот пакет добавляет к \TL{} программу установки для \MacOSX{} и другие программы для Макинтошей. Страница проекта "--- \url{https://www.tug.org/mactex/}. \item[pro\TeX{}t:] улучшенный вариант дистрибутива \MIKTEX\ для Windows. \ProTeXt\ включает в себя дополнительные программы и упрощённую установку. Он не зависит от \TL{} и включает собственные инструкции по установке. Страница \ProTeXt{} "--- \url{https://tug.org/protext}. \item [CTAN:] Зеркало архива \CTAN{} (\url{https://ctan/org}). \end{description} Лицензии на использование \CTAN{}, \pkgname{protext} и \texttt{texmf-extra} могут отличаться от лицензии \TL{}, поэтому будьте внимательны при распространении или модификации программ, входящих в эти дистрибутивы. \subsection{Корневые директории \protect\TL{}} \label{sec:tld} Вот краткое описание корневых директорий в дистрибутиве \TL{}. \begin{ttdescription} \item[bin:] Программы системы \TeX{}, сгруппированные по платформам. % \item[readme-*.dir:] Краткое руководство пользователя и коллекция ссылок на разных языках, в текстовом формате и формате HTML. % \item[source:] Исходный код всех программ, включая дистрибутивы \Webc{} \TeX{} и \MF{}. % \item[texmf-dist:] См. \dirname{TEXMFDIST} ниже. % \item[tlpkg:] Скрипты, программы и другие файлы для поддержки системы, а также некоторые полезные программы для Windows \end{ttdescription} Файл \OnCD{doc.html} в корневой директории содержит много ссылок на полезную документацию. Документация к отдельным программам (руководства, man, info) находится в директории \dirname{texmf-dist/doc}. Документация макропакетов и форматов находится в директории \dirname{texmf-dist/doc}. Для поиска документации можно воспользоваться программой \cmdname{texdoc}. Документация к самому дистрибутиву \TL{} находится в директории \dirname{texmf-dist/doc/texlive} и доступна на нескольких языках: \begin{itemize*} \item{Английский:} \OnCD{texmf-dist/doc/texlive-en} \item{Итальянский:} \OnCD{texmf-dist/doc/texlive/texlive-it} \item{Немецкий:} \OnCD{texmf-dist/doc/texlive-de} \item{Польский:} \OnCD{texmf-dist/doc/texlive-pl} \item{Русский:} \OnCD{texmf-dist/doc/texlive-ru} \item{Сербский:} \OnCD{texmf-dist/doc/texlive/texlive-sr} \item{Упрощенный китайский:} \OnCD{texmf/doc/texlive-zh-cn} \item{Французский:} \OnCD{texmf-dist/doc/texlive-fr} \item{Чешский и словацкий:} \OnCD{texmf-dist/doc/texlive-cz} \item{Японский:} \OnCD{texmf-dist/doc/texlive/texlive-ja} \end{itemize*} \subsection{Описание директорий texmf} \label{sec:texmftrees} В этом разделе описаны все переменные, задающие положение деревьев директорий texmf и их значения по умолчанию. Команда \texttt{tlmgr~conf} показывает текущие значения этих переменных, так что вы можете определить, где эти директории находятся в вашей системе. Все эти деревья, включая личные деревья пользователя, должны следовать стандарту директорий \TeX\ (\TDS, \url{http://tug.org/tds}) со всеми сотнями поддиректорий, иначе система может не найти нужные файлы. Более подробно это описано в разделе \ref{sec:local-personal-macros} (стр.~\pageref{sec:local-personal-macros}). Порядок, указанный ниже, соответствует обратному порядку поиска по деревьям, то есть последующие файлы имеют преимущество. \begin{ttdescription} \item [TEXMFDIST] Дерево, где находятся практически все файлы дистрибутива: конфигурационные файлы, шрифты, скрипты, пакеты и т.д. (основное исключение "--- зависящие от архитектуры программы, которые находятся в директории \code{bin/}.) \item [TEXMFLOCAL] Дерево, которое может быть использовано администраторами системы для дополнительных пакетов, шрифтов и т.д. \item [TEXMFSYSVAR] Это дерево используется утилитами \verb+texconfig-sys+, \verb+updmap-sys+, \verb+fmtutil-sys+, а также \verb+tlmgr+ для хранения создаваемых автоматически файлов: форматов, карт шрифтов, "--- общих для всех пользователей. \item [TEXMFSYSCONFIG] Это дерево используется утилитами \verb+texconfig-sys+, \verb+updmap-sys+ и \verb+fmtutil-sys+ для хранения модифицированных файлов конфигурации, общих для всех пользователей. \item [TEXMFHOME] Дерево, которое пользователи могут использовать для установки собственных пакетов, шрифтов и т.д., или для обновлённых версий системных пакетов. Эта переменная указывает на дерево в домашней директории, своей для каждого пользователя. \item [TEXMFVAR] Это дерево используется утилитами \verb+texconfig+, \verb+updmap-user+ и \verb+fmtutil-user+ для хранения создаваемых автоматически файлов: форматов, карт шрифтов. \item [TEXMFCONFIG] Это дерево используется утилитами \verb+texconfig+, \verb+updmap-sys+ и \verb+fmtutil-sys+ для хранения модифицированных файлов конфигурации (своих для каждого пользователя) \item [TEXMFCACHE] Это дерево используется программами \ConTeXt\ MkIV и Lua\LaTeX\ для хранения файлов, создаваемых автоматически при работе программ. По умолчанию совпадает с \code{TEXMFSYSVAR}, или, если эта директория закрыта для записи, \code{TEXMFVAR}. \end{ttdescription} \noindent По умолчанию структура директорий выглядит так: \begin{description} \item[корневая директория] может содержать несколько версий \TL{} (по умолчанию для Линукса это \texttt{/usr/local/texlive}): \begin{ttdescription} \item[2020] Предыдущая версия. \item[2021] Текущая версия. \begin{ttdescription} \item [bin] ~ \begin{ttdescription} \item [i386-linux] Программы для \GNU/Linux (32-битовая версия) \item [...] \item [x86\_64-darwin] Программы для \MacOSX \item [x86\_64-linux] Программы для \GNU/Linux (64-битовая версия) \item [win32] Программы для Windows \end{ttdescription} \item [texmf-dist\ \ ] \envname{TEXMFDIST} и \envname{TEXMFMAIN} \item [texmf-var \ \ ] \envname{TEXMFSYSVAR}, \envname{TEXMFCACHE} \item [texmf-config] \envname{TEXMFSYSCONFIG} \end{ttdescription} \item [texmf-local] \envname{TEXMFLOCAL}, общая для всех версий \TL{}. \end{ttdescription} \item[домашняя директория пользователя] (\texttt{\$HOME} или \texttt{\%USERPROFILE\%}) \begin{ttdescription} \item[.texlive2020] Данные и конфигурационные файлы предыдущей версии. \item[.texlive2021] Данные и конфигурационные файлы текущей версии. \begin{ttdescription} \item [texmf-var\ \ \ ] \envname{TEXMFVAR} \item [texmf-config] \envname{TEXMFCONFIG} \end{ttdescription} \item[texmf] \envname{TEXMFHOME} Личные макропакеты и т.д. \end{ttdescription} \end{description} \subsection{Расширения \protect\TeX{}а} \label{sec:tex-extensions} Кнутовский вариант \TeX а заморожен "--- за исключением редких исправлений багов, в него не вносится никаких изменений. Он распространяется в \TL{} как \prog{tex} и будет распространяться в обозримом будущем. В состав \TL{} входит несколько расширений \TeX{}а: \begin{description} \item [\eTeX] добавляет набор новых примитивов \label{text:etex} (относящийся к макроподстановкам, чтению символов, дополнительным возможностям отладки и многому другому) и расширения \TeXXeT{} для вёрстки справа налево и слева направо. В обычном режиме \eTeX{} на 100\% совместим со стандартным\TeX{}ом. См. \OnCD{texmf-dist/doc/etex/base/etex_man.pdf}. \item [pdf\TeX] включает в себя расширения \eTeX а, добавляя поддержку формата PDF, помимо стандартного \dvi{}, а также много других новых возможностей. Эта программа используется многими форматами, например, \prog{etex}, \prog{latex}, \prog{pdflatex}. Страница программы на сети: \url{http://www.pdftex.org/}. В руководстве пользователя \OnCD{texmf-dist/doc/pdftex/manual/padftex-a.pdf} и примерах \OnCD{texmf-dist/doc/pdftex/samplepdftex/samplepdf.tex} описаны возможности программы. \item[Lua\TeX] обеспечивает поддержку Unicode, шрифтов в форматах TrueType и OpenType, а также системных шрифтов. Встроенный интерпретатор языка Lua (см. \url{https://www.lua.org/}) позволяет элегантно решить многие сложные проблемы \TeX а. Когда эта программа запускается как \filename{texlua}, она работает как интерпретатор Lua. См. \url{https://www.luatex.org/} и \OnCD{texmf-dist/doc/luatex/base/luatexref.pdf}. \item[(e)(u)p\TeX] обеспечивают поддержку японских требований к верстке. Базовой программой является p\TeX, в то время как e-варианты добавляют расширения e\TeX, а u-варианты поддержку Unicode. \item [Xe\TeX] добавляет поддержку Unicode и шрифтов в формате OpenType, сделанную через стандартные библиотеки. См. \url{https://tug.org/xetex}. \item [\OMEGA\ (Омега)] основана на Unicode (система 16-битовых символов), что позволяет работать одновременно почти со всеми письменностями мира. Она также поддерживает так называемый <<процесс трансляции \OMEGA{}>> (OTP) для сложных преобразований произвольного входного потока. Омега больше не включается в дистрибутив \TL{} в качестве самостоятельной программы; на диске есть только Aleph (см. ниже). \item[Aleph] объединяет \OMEGA\ и \eTeX. См. краткую документацию в \OnCD{texmf-dist/doc/aleph/base}. \end{description} \subsection{Другие интересные программы в дистрибутиве \protect\TL} Вот несколько других важных программ в дистрибутиве \TL{}: \begin{cmddescription} \item [bibtex, biber] поддержка библиографий. \item [makeindex, xindy] поддержка алфавитных указателей. \item [dvips] преобразование \dvi{} в \PS{}. \item [xdvi] программа для просмотра \dvi{} для X Window System. \item [dviconcat, dviselect] перестановка страниц в файлах \dvi{}. \item [dvipdfmx] преобразование \dvi{} в PDF, альтернатива pdf\TeX{}у, упомянутому выше. \item [psselect, psnup, \ldots] утилиты для работы с файлами в формате \PS{}. \item [pdfjam, pdfjoin, \ldots] утилиты для работы с файлами в формате PDF. \item [context, mtxrun] Программы для Con\TeX{}tа и обработки PDF. \item [htlatex, \ldots] \cmdname{tex4ht}: конвертер из \AllTeX{}а в HTML, (и XML и многие другие форматы). \end{cmddescription} \section{Установка} \label{sec:install} \subsection{Запуск программы установки} \label{sec:inst-start} Для начала вам потребуется \DVD{} \TK{} или программа установки \TL{} с Интернета. Подробно различные способы приобретения и установки дистрибутива рассмотрены на странице \url{https://tug.org/texlive/acquire.html}. \begin{description} \item [Установка с сети, архив (.zip или .tag.gz):] скачайте файл из архива \CTAN, директория \dirname{systems/texlive/tlnet}; адрес \url{http://mirror.ctan.org/systems/texlive/tlnet} должен автоматически привести к ближайшему зеркалу архива. Вы можете скачать либо \filename{install-tl.zip} (установка под UNIX и Windows), либо файл существенно меньшего размера \filename{install-unx.tar.gz} (только для UNIX). После распаковки файлы \filename{install-tl} и \filename{install-tl.bat} окажутся в поддиректории \dirname{install-tl}. \item[Установка с сети, программа .exe (только Windows):] Скачайте файл из архива \CTAN, как указано выше, и запустите его. Это запускает распаковщик и установщик первой ступени, см. рис.~\ref{fig:nsis}. Он предлагает выбрать из двух вариантов: <> начинает установку в обычном режиме, <> "---~распаковка без установки. \item [\TeX{} Collection \DVD:] Перейдите в поддиректорию \dirname{texlive}. Под Windows программа установки запускается автоматически, когда вы вставляете \DVD{} в компьютер. Вы можете получить \DVD, вступив в группу пользователей \TeX а (мы настоятельно рекомендуем это сделать, \url{https://tug.org/usergroups.html}), либо купив его отдельно (\url{https://tug.org/store}), либо сделав его самостоятельно, скачав \ISO\ образ диска. После установки системы вы сможете получать обновления из Интернета, см. раздел~\ref{sec:dvd-install-net-updates}. \end{description} \begin{figure}[tb] \tlpng{nsis_installer}{.6\linewidth} \caption{Первая ступень установки под Windows (\code{.exe})}\label{fig:nsis} \end{figure} Во всех случаях программа установки системы одна и та же. Главное различие состоит в том, что при установке с сети ставятся последние версии пакетов "--- в отличие от установки с \DVD\ или \ISO. Если вам нужно использовать прокси для Wget, занесите их в файл \filename{~/.wgetrc} или задайте их в переменных окружения, как описано в (\url{https://www.gnu.org/software/wget/manual/html_node/Proxies.html}) для программы Wget "---~или задайте их, как описано в руководстве программы, которую вы используете для скачивания файлов. Разумеется, эти соображения неважны, если вы устанавливаете с \DVD\ или \ISO. В следующих разделах установка описывается более подробно. \subsubsection{UNIX} Ниже \texttt{>} указывает системный промпт; то, что вводит пользователь, показано \Ucom{\texttt{жирным шрифтом}}. Проще всего начать установку так: \begin{alltt} > \Ucom{cd /path/to/installer} > \Ucom{perl install-tl} \end{alltt} (Вместо этого вы можете запустить \Ucom{perl /path/to/installer/install-tl}, или \Ucom{./install-tl}, если у этого скрипта есть права на выполнение, и т.д. Мы не будем указывать все эти варианты.) Возможно, вам придется увеличить размер окна терминала, чтобы в него поместился весь диалог (Рисунок~\ref{fig:text-main}). Для установки в графическом режиме (рисунок~\ref{fig:advanced-lnx}) вам потребуется модуль Tcl/Tk. Если он у вас установлен, используйте \begin{alltt} > \Ucom{perl install-tl -gui} \end{alltt} Старые режимы \code{wizard} и \code{perltk}/\code{expert} все еще доступны, но теперь они эквивалентны режиму \code{-gui}. Полный список возможных опций дает команда \begin{alltt} > \Ucom{perl install-tl -help} \end{alltt} \textbf{О правах доступа в UNIX:} система установки \TL{} использует текущее значение параметра \code{umask}. Поэтому, если вы хотите, чтобы системой могли пользоваться не только вы, но и другие пользователи, вы должны установить, например, \code{umask 022}. Более подробно \code{umask} обсуждается в документации к вашей системе. \textbf{Замечание об установке под Cygwin:} в отличие от других систем типа UNIX, Cygwin в стандартной конфигурации не включает всех необходимых для установки \TL{} программ. См. раздел~\ref{sec:cygwin}. \subsubsection{\MacOSX} \label{sec:macosx} Как отмечается в разделе~\ref{sec:tl-coll-dists}, для \MacOSX{} существует специальный дистрибутив, Mac\TeX{} (\url{https://tug.org/mactex}). Мы рекомендуем пользоваться его системой установки, а не общим скриптом \TL{}, поскольку у него есть дополнительные возможности, специфические для Макинтошей, например, удобное переключение между различными дистрибутивами \TeX а для \MacOSX{} (Mac\TeX, Fink, MacPorts, \ldots), которые соответствуют стандарту \TeX{}Dist. Mac\TeX{} основан на \TL{}, основные деревья директорий и программы у этих дистрибутивов совпадают. Mac\TeX{} добавляет несколько поддиректорий с программами и документацией, предназначенными для Макинтошей. \subsubsection{Windows}\label{sec:wininst} Если вы устанавливаете систему с сети при помощи распакованного архива .zip, или если программа установки с \DVD{} не стартовала автоматически, дважды щёлкните по \filename{install-tl-windows.bat}. Можно также запустить программу из командной строки. Ниже \texttt{>} означает системный промпт; то, что вводит пользователь, указано \Ucom{\texttt{жирным шрифтом}}. Если вы находитесь в директории программы установки, напечатайте: \begin{alltt} > \Ucom{install-tl-windows} \end{alltt} Программу можно вызвать и из другой директории, например, \begin{alltt} > \Ucom{D:\bs{}texlive\bs{}install-tl-windows} \end{alltt} (предполагается, что в \dirname{D:} находится \DVD{} \TK{}). На рисунке~\ref{fig:basic-w32} показан специальный проводник установки, который по умолчанию запускается в Windows. Для установки в текстовом режиме используйте \begin{alltt} > \Ucom{install-tl-windows -no-gui} \end{alltt} Все опции программы можно получить при помощи команды \begin{alltt} > \Ucom{install-tl-windows -help} \end{alltt} \begin{figure}[tb] \begin{boxedverbatim} Installing TeX Live 2021 from: ... Platform: x86_64-linux => 'GNU/Linux on x86_64' Distribution: inst (compressed) Directory for temporary files: /tmp ... Detected platform: GNU/Linux on x86_64 platforms: 1 out of 16 Installation scheme: scheme-full Customizing installation scheme: standard collections 40 collections out of 41, disk space required: 7172 MB directories: TEXDIR (the main TeX directory): /usr/local/texlive/2021 ... options: [ ] use letter size instead of A4 by default ... set up for portable installation Actions: start installation to hard disk

save installation profile to 'texlive.profile' and exit help quit \end{boxedverbatim} \vskip-.5\baselineskip \caption{Главное меню программы установки в текстовом режиме (\GNU/Linux)}\label{fig:text-main} \end{figure} \begin{figure}[tb] \tlpng{basic-w32}{.6\linewidth} \caption{Меню программы установки (Windows). Кнопка Advanced вызывает режим, похожий на рис.~\ref{fig:advanced-lnx}}\label{fig:basic-w32} \end{figure} \begin{figure}[tb] \tlpng{advanced-lnx}{\linewidth} \caption{Экспертное меню установки (\GNU/Linux)}\label{fig:advanced-lnx} \end{figure} \htmlanchor{cygwin} \subsubsection{Cygwin} \label{sec:cygwin} Перед началом установки \TL\ установите при помощи программы \filename{setup.exe} из комплекта Cygwin пакеты \filename{perl} и \filename{wget}, если их нет в вашей системе. Мы рекомендуем также следующие дополнительные пакеты: \begin{itemize*} \item \filename{fontconfig} [нужен для \XeTeX\ и Lua\TeX] \item \filename{ghostscript} [нужен для разных программ] \item \filename{libXaw7} [нужен для xdvi] \item \filename{ncurses} [предоставляет команду <>, которая нужна при установке] \end{itemize*} \subsubsection{Установка в текстовом режиме} На рисунке~\ref{fig:text-main} показано основное меню программы установки в текстовом режиме для UNIX. Текстовый режим является режимом по умолчанию для UNIX. Интерфейс программы довольно примитивен: поддержки курсора в нем нет. Например, нельзя передвигаться по полям при помощи клавиши <>. Вы просто печатаете что-то (регистр учитывается!) и нажимаете клавишу <>, после чего перерисовывается весь экран. Этот интерфейс примитивен для того, чтобы работать на как можно большем количестве платформ, включая такие, где есть только усеченный вариант программы Perl. \subsubsection{Установка в графическом режиме} \label{sec:graphical-inst} По умолчанию графическая установка начинается очень просто, позволяя выбрать всего из нескольких опций, см. рис.~\ref{fig:basic-w32}. Этот вариант может быть выбран командой \begin{alltt} > \Ucom{install-tl -gui} \end{alltt} Кнопка Advanced дает доступ к большинству возможнотей текстового установщика, см. рис.~\ref{fig:advanced-lnx}. \subsubsection{Устаревшие режимы} Режимы \texttt{perltk}/\texttt{expert} и \texttt{wizard} теперь эквивалентны стандартнаму графическому установщику. \subsection{Работа программы установки} \label{sec:runinstall} Меню программы установки должно быть понятно без объяснений. Мы все же приведем несколько кратких замечаний по поводу различных опций и подменю. \subsubsection{Меню выбора платформы (только для UNIX)} \label{sec:binary} \begin{figure}[tbh] \begin{boxedverbatim} Available platforms: ================================================= a [ ] Cygwin on Intel x86 (i386-cygwin) b [ ] Cygwin on x86_64 (x86_64-cygwin) c [ ] MacOSX current (10.14-) on ARM/x86_64 (universal-darwin) d [ ] MacOSX legacy (10.6-) on x86_64 (x86_64-darwinlegacy) e [ ] FreeBSD on x86_64 (amd64-freebsd) f [ ] FreeBSD on Intel x86 (i386-freebsd) g [ ] GNU/Linux on ARM64 (aarch64-linux) h [ ] GNU/Linux on ARMv6/RPi (armhf-linux) i [ ] GNU/Linux on Intel x86 (i386-linux) j [X] GNU/Linux on x86_64 (x86_64-linux) k [ ] GNU/Linux on x86_64 with musl (x86_64-linuxmusl) l [ ] NetBSD on x86_64 (amd64-netbsd) m [ ] NetBSD on Intel x86 (i386-netbsd) o [ ] Solaris on Intel x86 (i386-solaris) p [ ] Solaris on x86_64 (x86_64-solaris) s [ ] Windows (win32) \end{boxedverbatim} \vskip-.5\baselineskip \caption{Меню выбора платформы}\label{fig:bin-text} \end{figure} На рисунке~\ref{fig:bin-text} изображено меню выбора платформы. По умолчанию устанавливаются только программы для вашей текущей архитектуры. В этом меню вы можете выбрать также установку программ для других платформ. Это может быть полезно, если вы используете одно и то же дерево \TeX{}а для разных машин и раздаёте его по локальной сети, либо если на вашей машине установлено несколько операционных систем. \subsubsection{Выбор основных компонентов} \label{sec:components} \begin{figure}[tbh] \begin{boxedverbatim} Select scheme: ================================================= a [X] full scheme (everything) b [ ] medium scheme (small + more packages and languages) c [ ] small scheme (basic + xetex, metapost, a few languages) d [ ] basic scheme (plain and latex) e [ ] minimal scheme (plain only) f [ ] ConTeXt scheme g [ ] GUST TeX Live scheme h [ ] infrastructure-only scheme (no TeX at all) i [ ] teTeX scheme (more than medium, but nowhere near full) j [ ] custom selection of collections \end{boxedverbatim} \vskip-\baselineskip \caption{Выбор основных компонентов}\label{fig:scheme-text} \end{figure} На рисунке~\ref{fig:scheme-text} показано меню выбора основных компонентов (схем) \TL{}. В этом меню вы можете выбрать <<схему>>, т.е. набор коллекций пакетов. По умолчанию используется схема \optname{full}, т.е. все пакеты \TL{}. Мы рекомендуем эту схему, но вы можете выбрать схему \optname{basic}, которая устанавливает только plain \TeX\ и \LaTeX, схему \optname{small}, которая устанавливает еще несколько программ (она эквивалентна так называемой Basix \TeX\ installation для Mac\TeX), схему \optname{minimal} для тестирования или схему \optname{medium}, или схему \optname{teTeX}. Есть также ряд специальных схем, в том числе и предназначенных для различных стран. \begin{figure}[tbh] \tlpng{stdcoll}{.7\linewidth} \caption{Меню коллекций}\label{fig:collections-gui} \end{figure} Вы можете уточнить ваш выбор при помощи меню <<коллекций>> (рисунок~\ref{fig:collections-gui}, для разнообразия сделанный в графическом режиме). Коллекции представляют собой следующий после схем уровень иерархии \TL{}. Грубо говоря, схемы состоят из коллекций, коллекции состоят из пакетов, а пакеты (нижний уровень иерархии \TL{}) содержат макросы, шрифты и т.д. Если вы хотите более тонкой настройки, чем возможна в меню коллекций, вы можете использовать программу \prog{tlmgr} после установки (см. раздел~\ref{sec:tlmgr}). Эта программа позволяет устанавливать или удалять отдельные пакеты. \subsubsection{Директории} \label{sec:directories} Схема директорий, создаваемых по умолчанию, описана в разделе~\ref{sec:texmftrees}, \p.\pageref{sec:texmftrees}. По умолчанию дерево установки в системе Unix \dirname{/usr/local/texlive/2021} и |%SystemDrive%\texlive\2021| под Windows. Это позволяет установить несколько параллельных вариантов \TL\ (например, версий разных лет, как в нашем примере) и переключаться между ними, изменив список директорий поиска программ. Вы можете изменить положение дерева, задав для установщика другое значение параметра \dirname{TEXDIR}. На рисунке~\ref{fig:advanced-lnx} показано, как изменить этот и другие параметры. Основные причины, по которой бывает необходимо его изменить "--- недостаток места в разделе (полная установка \TL\ требует нескольких гигабайт диска) или отсутствие у вас прав на запись в нужные директории. Вам не нужно иметь права администратора для установки \TL{}, однако вам необходимо иметь право на запись в директорию, куда устанавливается система. Директории для установки можно также изменить, задав ряд переменных окружения (например, \envname{TEXLIVE\_INSTALL\_PREFIX} и \envname{TEXLIVE\_INSTALL\_TEXDIR}); см. документацию, выдаваемую по команде |install-tl --help| (также доступную по ссылке \url{https://tug.org/texlive/doc/install-tl.html}), где находится полный список переменных окружения и другие детали. Если у вас нет права на запись в системные директории, естественной альтернативой является установка в вашу домашнюю директорию, особенно если вы будете единственным пользователем системы. Для этого используйте `|~|' (например, `|~/texlive/2021|'). Мы рекомендуем включать номер года в название директории, чтобы можно было держать отдельно разные версии \TL{}. Вы также можете использовать общее имя, не зависящее от года, например, \dirname{/usr/local/texlive-cur}, создав ссылку на соответствующую директорию. Изменение \dirname{TEXDIR} изменит также \dirname{TEXMFLOCAL}, \dirname{TEXMFSYSVAR} и \dirname{TEXMFSYSCONFIG}. Личные пакеты и файлы рекомендуется держать в директории \dirname{TEXMFHOME}. По умолчанию это |~/texmf| (|~/Library/texmf| для Макинтошей). В отличие от \dirname{TEXDIR}, здесь |~| будет своим для каждого пользователя. Эта переменная становится \dirname{$HOME} под UNIX и %$ \verb|%USERPROFILE%| под Windows. На всякий случай повторим, что структура \envname{TEXMFHOME} должна совпадать со стандартной структурой директорий \dirname{TEXMF}, иначе система может не найти ваши файлы. Директория \dirname{TEXMFVAR} используется для хранения автоматически создаваемых файлов, своих для каждого пользователя. Директория \dirname{TEXMFCACHE} используется для этой же цели программами Lua\LaTeX\ и \ConTeXt\ MkIV (см. раздел~\ref{sec:context-mkiv}, \p.\pageref{sec:context-mkiv}), по умолчанию это директория \dirname{TEXMFSYSVAR}, или, если она закрыта для записи, \dirname{TEXMFVAR}. \subsubsection{Опции} \label{sec:options} \begin{figure}[tbh] \begin{boxedverbatim} Options setup: =================================================

use letter size instead of A4 by default: [ ] execution of restricted list of programs: [X] create all format files: [X] install font/macro doc tree: [X] install font/macro source tree: [X] create symlinks in standard directories: [ ] binaries to: manpages to: info to: after install, set CTAN as source for package updates: [X] \end{boxedverbatim} \vskip-.5\baselineskip \caption{Меню опций (Unix)}\label{fig:options-text} \end{figure} На рисунке~\ref{fig:options-text} приведено меню опций (текстовый режим). Стоит упомянуть несколько из них: \begin{description} \item[use letter size instead of A4 by default (использовать по умолочанию размер letter вместо A4):] выбор размера бумаги по умолчанию. Разумеется, отдельные документы могут при необходиости указать собственный размер бумаги. \item[execution of restricted list of programs:] Начиная с \TL\ 2010 \TeX{} может автоматически вызывать несколько внешних программ. Список этих программ находится в файле \filename{texmf.cnf}; он очень мал, но эти программы очень полезны. См. раздел <<Что нового в \TL\ 2010>>~\ref{sec:2010news}. \item[create all format files (созать все форматы):] Хотя ненужные форматы занимают место на диске и требуют времени для создания, мы все же рекомендуем не изменять эту опцию. В противном случае отсутствующие форматы будут создаваться в директориях \dirname{TEXMFVAR} для каждого пользователя. Они не будут автоматически перегенерироваться при изменении программ и схем переноса, и в итоге могут оказаться несовместимыми с новой системой. \item[install font/macro \ldots\ tree:] Установить документацию и исходники для большинства пакетов. Не рекомендуется убирать эту опцию. \item[create symlinks in standard directories (создать симлинки в стандартных директориях)] (только для UNIX): Эта опция делает ненужной смену переменных окружения. Без неё директории \TL{} нужно добавить к \envname{PATH}, \envname{MANPATH} и \envname{INFOPATH}. Для этой опции вам нужны права на запись в стандартные директории. Эта опция нужна для создания симлинков в директориях типа \dirname{/usr/local/bin}, которые не содержат файлов \TeX а из системного дистрибутива. Не следует при помощи этой опции подменять системные файлы, например, указывая \dirname{/usr/bin}. Наиболее безопасный и рекомендованный вариант --- не выбирать эту опцию. \item[after install, set CTAN as source for package updates:] Если вы устанавливаете систему с \DVD, эта опция включена по умолчанию, поскольку обычно люди обновляют пакеты из архива \CTAN, который сам непрерывно обновляется. Единственной причиной, по которой вы можете захотеть выключить её, может быть то, что вы устанавливаете только несколько пакетов из \DVD\ и планируете изменить систему позже. В любом случае вы можете задать альтернативный репозиторий для обновлений, см. разделы~\ref{sec:location} и~\ref{sec:dvd-install-net-updates}. \end{description} Опции, специфические для Windows в экспертном варианте интерфейса: \begin{description} \item[adjust searchpath (добавить директории поиск)] Эта опция позволяет всем программам найти директорию \TL. \item[add menu shortcuts (добавить ярлыки меню)] Если эта опция выбрана, то в меню Start появится подменю \TL{}. Есть также опции `Launcher entry' и `No shortcuts'. Эти опции описаны в разделе \ref{sec:sharedinstall}. \item[File associations (изменить ассоциации файлов)] Есть выбор между `Only new' (установить новые ассоциации, но не убирать уже существующих), `All' (все) and `None' (не устанавливать). \item[install \TeX{}works front end (установить \TeX{}works)] \end{description} Задав нужные настройки, вы можете начать установку системы, нажав клавишу <<|I|>> в текстовом варианте или кнопку <> в \GUI. Когда установка будет закончена, перейдите к разделу~\ref{sec:postinstall}, чтобы проверить, нужно ли вам сделать ещё что-нибудь. \subsection{Опции вызова команды install-tl} \label{sec:cmdline} Напечатайте \begin{alltt} > \Ucom{install-tl -help} \end{alltt} чтобы получить список опций комадной строки. В опциях можно использовать как |-|, так и |--|. Вот самые интересные опции: \begin{ttdescription} \item[-gui] Если возможно, использовать графический режим. Для этого нужен Tcl/Tk версии 8.5 и выше. Он есть под \MacOSX\ и поставляется вместе с \TL\ под Windows. Устарелые варианты \texttt{-gui=perltk} и \texttt{-gui=wizard} все еще доступны. Если в системе нет ни Tcl/Tk, ни Perl/Tk, установка происходит в текстовом режиме. \item[-no-gui] Использовать текстовый режим. \item[-lang {\sl LL}] Задать язык интерфейса программы установки (стандартным кодом страны, обычно двухбуквенным). Программа установки пытается определеть нужный язык автоматически, но если это не получается или если нужный язык не поддерживается, она переходит на английский. Команда \verb|install-tl --help| выдает список языков. \htmlanchor{opt-in-place} \item[-in-place] (Документируется здесь для полноты; не используйте эту опцию если вы не эксперт). Если у вас уже есть копия \TL, полученная из репозитория по rsync, svn или иным способом (см.~\url{https://tug.org/texlive/acquire-mirror.html}), то эта опция позволяет использовать эту копию. Учтите, что при этом база данных \filename{tlpkg/texlive.tlpdb} может быть затерта; вы должны сохранить её сами. Кроме того, удаление пакетов нужно будет делать вручную. Эту опцию нельзя выбрать из интерфейса установщика. \item[-portable] Установить переносимую версию \TL, например, на флешку USB. Эту опцию также можно указать при помощи команды \code{V} в текстовом установки, или из графического режима. См. также раздел~\ref{sec:portable-tl}. \item[-profile {\sl файл}] Использовать конфигурацию установки \var{file} и не задавать пользователю никаких вопросов. Программа установки всегда записывает файл \filename{texlive.profile} в поддиректорию \dirname{tlpkg}. Этот файл может быть использован в качестве аргумента данной опции, чтобы, например, получить идентичную конфигурацию на другой машине. Вы можете также создать собственную конфигурацию, например, взяв за основу автоматически созданный файл или пустой файл (так что параметры, которые не заданы в файле, получат значения по умолчанию). \item [-repository {\sl url или директория}] Указать альтернативный источник пакетов для установки; см. ниже. \end{ttdescription} \subsubsection{Параметр \optname{-repository}} \label{sec:location} По умолчанию пакеты сгружаются с одного из зеркал архива \CTAN. Ссылка \url{https://mirror.ctan.org} автоматически выбирает зеркало. Если вы хотите указать другой источник, вы можете задать его как URL, начинающийся с \texttt{ftp:}, \texttt{http:}, \texttt{https:}, \texttt{file:/} или просто как директорию на диске. (Когда вы указываете репозиторию как \texttt{http:}, \texttt{https:} или \texttt{ftp:}, окончание \texttt{/} или \texttt{/tlpkg} игнорируется.) Например, вы можете задать в качестве параметра определенное зеркало \CTAN: \url{https://ctan.example.org/tex-archive/texlive/tlnet/}. Разумеется, вам следует подставить вместо \dirname{example.ctan.org} нужное зеркало и путь к архиву на этом зеркале. Список зеркал находится на \url{https://ctan.org/mirrors}. Если параметр задает директорию на диске (прямо или при помощи \texttt{file:/}), система автоматически определяет, является ли источник архивом: если найдена поддиректория \dirname{archive} со сжатыми файлами, то она будет использована, даже если рядом находятся незаархивированные файлы. \subsection{Действия после установки} \label{sec:postinstall} Иногда после установки системы требуются дополнительные действия. \subsubsection{Переменные окружения для UNIX} \label{sec:env} Если вы решили создать симлинки в стандартных директориях (см. раздел~\ref{sec:options}), то изменять переменные окружения не требуется. В противном случае вам нужно добавить к списку поиска программ директорию, где лежат программы \TeX live (под Windows программа установки делает это сама). Программы для каждой архитектуры помещаются в собственную поддиректорию под \dirname{TEXDIR/bin}. См. список поддиректорий и соответствующих платформ на рисунке~\ref{fig:bin-text}. Вы можете также добавить директории с документацией в формате man и info к соответствующим путям поиска, если вы хотите, чтобы ваша операционная система знала о них. В некоторых системах документация в формате man будет найдена автоматически после изменения переменной \envname{PATH}. Ниже мы используем для примера стандартную систему директорий в системе Intel86 GNU/Linux. Для оболочек типа Bourne (\prog{bash} и т.п.) вы можете добавить в файл \filename{$HOME/.profile} (или в файл, который вызывается из \filename{.profile}) следующее: \begin{sverbatim} PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH; export PATH MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH; export MANPATH INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH; export INFOPATH \end{sverbatim} Для \prog{csh} или \prog{tcsh} следует редактировать файл \filename{$HOME/.cshrc}, и следует добавить что-то вроде \begin{sverbatim} setenv PATH /usr/local/texlive/2021/bin/x86_64-linux:$PATH setenv MANPATH /usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH setenv INFOPATH /usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH \end{sverbatim} Разумеется, в ваших конфигурационных файлах уже могут быть определены эти переменные; фрагменты выше добавляют к ним директории \TL{}. \subsubsection{Переменные окружения: глобальная конфигурация} \label{sec:envglobal} Если вы хотите внести эти изменения для всех пользователей или добавлять их автоматически для новых пользователей, то вам следует разобраться самому: в разных системах это делается слишком по-разному. Два совета: 1)~возможно, вам следует добавить в файл \filename{/etc/manpath.config} строчки вроде: \begin{sverbatim} MANPATH_MAP /usr/local/texlive/2021/bin/x86_64-linux \ /usr/local/texlive/2021/texmf-dist/doc/man \end{sverbatim} И 2)~иногда пути поиска и другие глобальные переменные окружения задаются в файле \filename{/etc/environment}. Мы также добавляем симлинк \path{man} в каждой поддиректории \path{bin}. Некоторые варианты программы \code{man}, например, в \MacOSX, автоматически ищут файлы в этих поддиректориях, что избавляет от необходимости добавлять их в \code{MANPATH}. \subsubsection{Обновления из Интернета после установки с \DVD} \label{sec:dvd-install-net-updates} Если вы устновили \TL\ с \DVD\ и хотите получать обновления из Интернета, запустите следующую команду (\emph{после} добавления программ \TL\ к списку поиска программ, см. предыдущий раздел): \begin{alltt} > \Ucom{tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet} \end{alltt} Она указывает программе \prog{tlmgr}, что нужно искать обновления на ближайшем зеркале \CTAN. Это делается по умолчанию при установке с \DVD\ при помощи опций, описанных в разделе~\ref{sec:options}. Если автоматический выбор зеркала не работает, вы можете указать адрес зеркала вручную, взяв его из списка на \url{https://ctan.org/mirrors}. Задайте при этом точное положение директории \dirname{tlnet}, как указано выше. \htmlanchor{xetexfontconfig} % keep historical anchor working \htmlanchor{sysfontconfig} \subsubsection{Настройка шрифтов для программ \protect\XeTeX\ и Lua\protect\TeX} \label{sec:font-conf-sys} \XeTeX\ и Lua\TeX\ могут использовать все шрифты, установленные в вашей системе, не только те, которые находятся в директориях \TeX а. Они это делают при помощи похожих, но чуть-чуть разных методов. Под Windows шрифты, включенные в дистрибутив \TL, автоматически доступны в \XeTeX е по названию шрифта. Под \MacOSX\ настройка поиска шрифтов по имени требует дополнительных шагов, см. руководство пользователя Mac\TeX\ (\url{https://tug.org/mactex}). Настройка поиска шрифтов по имени для других Юниксов описана ниже. Для поиска шрифтов по имени, когда пакет \pkgname{xetex} устанавливается (либо при первоначальной установке дистрибутива, либо позже), он создает необходимый конфигурационный файл в \filename{TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf}. Если вы обладаете правами администратора, то для того, чтобы шрифты \TL{} были доступны всем программам, сделайте следующее: \begin{enumerate*} \item Скопируйте файл \filename{texlive-fontconfig.conf} в \dirname{/etc/fonts/conf.d/09-texlive.conf}. \item Запустите \Ucom{fc-cache -fsv}. \end{enumerate*} Если у вас нет прав администратора, то вы можете вместо этого сделать шрифты \TL{} доступными только вам: \begin{enumerate*} \item Скопируйте файл \filename{texlive-fontconfig.conf} в \filename{~/.fonts.conf}, где \filename{~} "---~ваша домашняя директория. \item Запустите \Ucom{fc-cache -fv}. \end{enumerate*} Чтобы посмотреть названия системных шрифтов, вы можете запустить программу \code{fc-list}. Можно получить много интересной информации, запустив её как \code{fc-list : family style file spacing} (все аргументы---текстовые строки). \subsubsection{\protect\ConTeXt{} Mark IV} \label{sec:context-mkiv} Как <<старый>> \ConTeXt{}(Mark II), так и <<новый>> \ConTeXt{} (Mark IV), должны работать <<из коробки>> после установки \TL{} и после обновления системы при помощи \verb+tlmgr+. Однако, так как \ConTeXt{} MkIV не использует библиотеку \verb+kpathsea+, после установки новых файлов вручную (\emph{не} при помощи \verb+tlmgr+) нужны дополнительные действия. Каждый пользователь MkIV должен после такого обновления запустить \begin{sverbatim} context --generate \end{sverbatim} чтобы обновить базу данных \ConTeXt{}. Получившиеся файлы будут установлены в директории \code{TEXMFCACHE}. В \TL\ эта директория совпадает с \code{TEXMFVAR}. \ConTeXt\ MkIV читает файлы из всех директорий, заданных переменной \verb+TEXMFCACHE+ и пишет в первую директорию в списке, в которой у него есть права на запись. При чтении в случае дублирующих записей имеет преимущество последняя прочитанная запись. См. также \url{https://wiki.contextgarden.net/Running_Mark_IV}. \subsubsection{Добавление личных и локальных пакетов} \label{sec:local-personal-macros} Этот вопрос уже обсуждался в разделе~\ref{sec:texmftrees}: для локальных шрифтов и пакетов, общих у всех пользователей, предназначена директория \dirname{TEXMFLOCAL} (по умолчанию \dirname{/usr/local/texlive/texmf-local} или \verb|%SystemDrive%\texlive\texmf-local|), а для личных шрифтов и пакетов "--- директория \dirname{TEXMFHOME} (по умолчанию \dirname{$HOME/texmf} или \verb|%USERPROFILE%\texmf|). Эти директории %$ предполагаются общими для всех версий \TL{}, и каждая версия \TL{} видит их автоматически. Поэтому мы не рекомендуем менять значение \dirname{TEXMFLOCAL}, иначе вам придется делать это для каждой новой версии. Файлы в обеих директориях должны находиться в правильных поддиректориях; см. \url{https://tug.org/tds} и \filename{texmf-dist/web2c/texmf.cnf}. Например, \LaTeX овский класс или пакет должен находиться в директории \dirname{TEXMFLOCAL/tex/latex} или \dirname{TEXMFHOME/tex/latex} или какой-либо из их поддиректорий. Для директории \dirname{TEXMFLOCAL} должна поддерживаться база данных о файлах, иначе система не сможет найти там нужные файлы. Эта база обновляется командой \cmdname{mktexlsr} или кнопкой <> в графическом режиме программы \prog{tlmgr}. По умолчанию, каждая из этих переменных указывает на одну директорию, как в нашем примере. Однако это не обязательное требование. Если вам нужно, например, поддерживать несколько версий больших пакетов, вы можете захотеть иметь несколько деревьев директорий. Тогда вы можете определить \dirname{TEXMFHOME} как набор директорий в фигурных скобках, разделенных запятыми: \begin{verbatim} TEXMFHOME = {/my/dir1,/mydir2,/a/third/dir} \end{verbatim} Подробнее эти вопросы объясняются в разделе~\ref{sec:brace-expansion}. \subsubsection{Добавление новых шрифтов} К сожалению, это очень сложная задача для \TeX{}а и pdf\TeX{}а. Не делайте этого, если вы не знаете \TeX\ как свои пять пальцев. В состав \TL\ включено много шрифтов, поэтому полезно сначала проверить, не входит ли нужный шрифт в дистрибутив. Сайты вроде \url{https://tug.org/FontCatalogue} показывают практически все шрифты, включенные в основные дистрибутивы \TeX{}а, классифицированные в соответствии с разнообразными схемами. Если вам все же нужно добавить шрифты, то посмотрите страницу \url{https://tug.org/fonts/fontinstall.html} "---~это лучшее, что мы смогли написать по этому поводу. Возможная альтернатива "--- программы \XeTeX\ и Lua\TeX\ (см. раздел~\ref{sec:tex-extensions}), которые позволяют автоматически использовать в \TeX е шрифты вашей операционной системы. Не забывайте, однако, что использование системных шрифтов делает ваши документы бесполезными для тех, кто пытается их использовать на другой системе. \subsection{Тестирование системы} \label{sec:test-install} После установки \TL{} вы, скорее всего, захотите проверить работу системы, а уже затем перейти к созданию прекрасных документов и/или шрифтов. Вы можете начать с программы для редактирования файлов. \TL\ устанавливает \TeX{}works (\url{https://tug.org/texworks}) только под Windows, а Mac\TeX\ устанавливает TeXShop (\url{https://pages.uoregon.edu/koch/texshop}). На других системах выбор редактора остается за вами. Есть много возможностей, некоторые из которых перечислены ниже; см. также \url{https://tug.org/interest.html#editors}. Вообще говоря, годится любой текстовый редактор; иногда специфические для \TeX a особенности просто не нужны. В этом разделе описываются основные процедуры по тестированию системы. Мы приводим команды для операционных систем типа Unix; под \MacOSX{} и Windows вы, скорее всего, будете использовать графический интерфейс, но принцип тот же. \begin{enumerate} \item Сначала проверьте, что вы можете запускать программу \cmdname{tex}: \begin{alltt} > \Ucom{tex -{}-version} TeX 3.14159265 (TeX Live ...) kpathsea version 6.0.1 Copyright ... D.E. Knuth. ... \end{alltt} Если вы получаете в ответ <> вместо номера версии и информации о копирайте, у вас, скорее всего, нет директории с нужными программами в переменной \envname{PATH}. См. обсуждение на странице~\pageref{sec:env}. \item Скомпилируйте простой \LaTeX{}овский файл, получив PDF: \begin{alltt} > \Ucom{pdflatex sample2e.tex} This is pdfTeX 3.14... ... Output written on sample2e.pdf (3 pages, 142120 bytes). Transcript written on sample2e.log. \end{alltt} Если программа не может найти \filename{sample2e.tex} или другие файлы, возможно, у вас остались следы от старой установки: переменные окружения или конфигурационные файлы. Мы рекомендуем сначала убрать все переменные окружения, относящиеся к \TeX у. (Для отладки вы всегда можете попросить \TeX{} точно сказать, что именно он ищет; см. <<Отладка>> на стр.~\pageref{sec:debugging}.) \item Посмотрите результат на экране: \begin{alltt} > \Ucom{xpdf sample2e.dvi} \end{alltt} Вы должны увидеть новое окно с красиво свёрстанным документом, объясняющим основы \LaTeX{}а. (Кстати, если вы новичок, вам стоит его прочесть.) Разумеется, есть и другие программы для просмотра PDF. Под Unixом часто используются \cmdname{evince} и \cmdname{okular}. Для Windows мы рекомендуем Sumatra PDF (\url{https://www.sumatrapdfreader.org/free-pdf-reader.html}). Мы не включили программ для просмотра PDF в \TL, так что вы можете использовать программу, к которой вы привыкли. Разумеется, вы все еще можете использовать классический формат \dvi{}: \begin{alltt} > \Ucom{latex sample2e.tex} \end{alltt} и смотреть на экране результаты: \begin{alltt} > \Ucom{xdvi sample2e.dvi} # Unix > \Ucom{dviout sample2e.dvi} # Windows \end{alltt} Чтобы программа \cmdname{xdvi} могла запуститься, вы должны быть в среде X Window; если это не так, или если переменная \envname{DISPLAY} установлена неправильно, вы увидите ошибку \samp{Can't open display}. \item Создание файла в формате \PS{} из \dvi{}: \begin{alltt} > \Ucom{dvips sample2e.dvi -o sample2e.ps} \end{alltt} \item Альтернативный способ преобразования \dvi{} в PDF, который иногда может быть полезен: \begin{alltt} > \Ucom{dvipdfmx sample2e.dvi -o sample2e.pdf} \end{alltt} \item Другие стандартные тестовые файлы, которые вам могут пригодиться: \begin{ttdescription} \item [small2e.tex] Более простой документ, чем \filename{sample2e}, удобный, если последний слишком велик для вас. \item [testpage.tex] Проверяет поля и позиционирование бумаги для вашего принтера. \item [nfssfont.tex] Используется для печати таблиц шрифтов и тестов. \item [testfont.tex] Печать таблиц шрифтов под plain \TeX{}. \item [story.tex] Самый канонический файл в формате (plain) \TeX. Вы должны напечатать \samp{\bs bye} в ответ на приглашение \code{*} после \samp{tex story.tex}. \end{ttdescription} \item Если вы установили пакет \filename{xetex}, вы можете проверить, доступны ли ему системные шрифты: \begin{alltt} > \Ucom{xetex opentype-info.tex} This is XeTeX, Version 3.14\dots ... Output written on opentype-info.pdf (1 page). Transcript written on opentype-info.log. \end{alltt} Если вы получите сообщение об ошибке: <>, то вам нужно настроить систему, чтобы можно было найти шрифты \TL. См. раздел~\ref{sec:font-conf-sys}. \end{enumerate} \subsection{Ссылки на дополнительные программы} Если вы новичок в \TeX{}е, или вам нужна помощь в создании документов на языке \TeX{} или \LaTeX{}, посетите \url{https://tug.org/begin.html}. Вот ссылки на некоторые другие программы, которые вам могут пригодиться: \begin{description} \item[Ghostscript] \url{https://ghostscript.com/} \item[Perl] \url{https://perl.org/} с дополнительными пакетами из архива CPAN, \url{http://www.cpan.org/} \item[ImageMagick] \url{https://imagemagick.com}, для конвертирования и преобразования графики. \item[NetPBM] \url{http://netpbm.sourceforge.net}, тоже для графики. \item[Редакторы для \TeX а.] Их очень много, и выбор их "--- дело вкуса. Вот несколько из них (некоторые доступны только для Windows): \begin{itemize*} \item \cmdname{GNU Emacs} есть для Windows, см. \url{https://www.gnu.org/software/emacs/emacs.html}. \item \cmdname{Emacs} с Auc\TeX ом для Windows есть в директории \path{tlpkg/support} на \DVD{} \TL{}; его страница на сети: \url{https://www.gnu.org/software/auctex}. \item \cmdname{SciTE} можно скачать с \url{https://www.scintilla.org/SciTE.html}. \item \cmdname{Texmaker} "---~это свободная программа, которую можно скачать с \url{https://www.xm1math.net/texmaker/}. \item \cmdname{TeXstudio} начался как вариант \cmdname{Texmaker} с дополнительными возможностями; доступен по ссылке \url{https://texstudio.org} и в дистрибутиве pro\TeX{}t. \item TeXnicCenter "---~это свободная программа, которую можно скачать с \url{https://www.texniccenter.org}. \item \cmdname{TeXworks} "---~это свободная программа, которую можно скачать с \url{https://tug.org/texworks}. Её версия для Windows (только) входит в \TL. \item \cmdname{Vim} "---~это свободная программа, которую можно скачать с \url{https://www.vim.org}. \item \cmdname{WinEdt} это shareware. Эту программу можно скачать с \url{https://tug.org/winedt} или \url{https://www.winedt.com}. \item \cmdname{WinShell} можно скачать с \url{https://www.winshell.de}. \end{itemize*} \end{description} Гораздо более полный лист программ и пакетов находится на \url{https://tug.org/interest.html}. \section{Установка системы в особых случаях} В предыдущих разделах описывались основы процесса установки \TL. Здесь мы остановимся на нескольких особых случаях. \htmlanchor{tlsharedinstall} \subsection{Установка в локальной сети} \label{sec:sharedinstall} \TL{} может использоваться одновременно разными машинами в локальной сети. В стандартной схеме директорий все пути к файлам являются относительными: программы \TL{} определяют, где лежат нужные им файлы, исходя из того, где они находятся сами. Вы можете увидеть, как это делается, посмотрев конфигурационный файл \filename{$TEXMFDIST/web2c/texmf.cnf} со строчками типа \begin{sverbatim} TEXMFROOT = $SELFAUTOPARENT ... TEXMFDIST = $TEXMFROOT/texmf-dist ... TEXMFLOCAL = $SELFAUTOGRANDPARENT/texmf-local \end{sverbatim} Это означает, что другие системы или пользователи должны просто добавить директорию с программами \TL{} к директориям поиска. Точно так же вы можете установить \TL{} на один компьютер, а затем перенести всю иерархию на локальную сеть. Для Windows в дистрибутив включен скрипт запуска \TeX а \filename{tlaunch}. Его главное окно содержит меню и кнопки для разнообразных программ поддержки \TeX а и документацию. Это окно настраивается путем редактирования файла \code{ini}. При первом запуске скрипт добавляет пути поиска для программ \TL\ и системные установки, но только для текущего пользователя, Поэтому для компьютеров с доступом к \TL{} по сети нужен только ярлык запуска скрипта. См. руководство пользователя \code{tlaunch} (\code{texdoc tlaunch}), или \url{https://ctan.org/pkg/tlaunch}). \htmlanchor{tlportable} \section{Установка \TL\ на флешку} \label{sec:portable-tl} Опция программы установки \code{-portable} (или команда \code{V} в текстовом режиме, или соответствующий пункт меню в графическом режиме) создает систему, находящуюся полностью в своей директории, и не изменяет конфигурации компьютера. Вы можете установить такую систему на \USB{} флешку или в отдельную директорию, а потом скопировать её на флешку. Чтобы сделать систему самодостаточной, переменные \envname{TEXMFHOME}, \envname{TEXMFVAR} и \envname{TEXMFCONFIG} совпадают с переменными \envname{TEXMFLOCAL}, \envname{TEXMFSYSVAR}, и \envname{TEXMFSYSCONFIG}. Это означает, что конфигурации и кэши для отдельных пользователей не создаются. Чтобы запустить \TeX\ с такой флешки, вам нужно добавить директорию с программами к путям поиска программ. Под Юниксом это делается при помощи изменения переменной окружения \envname{PATH}. Под Windows вы можете щелкнуть на \filename{tl-tray-menu} в корневой директории, чтобы создать меню для выбора из нескольких стандартных задач, как показано ниже: \medskip \tlpng{tray-menu}{4cm} \smallskip \noindent Меню <> вызывает окошко с объяснением, как добавить дополнительные возможности в меню. % \htmlanchor{tlisoinstall} % \subsection{Создание образа \ISO\ или \DVD} % \label{sec:isoinstall} % Если вам не нужно часто обновлять систему, и/или у вас несколько % машин, на которых вы хотите использовать \TL, то для вас может % иметь смысл создать образ \ISO\ или \DVD, так как: % \begin{itemize} % \item Копирование \ISO\ с компьютера на компьютер быстрее, чем % копирование обычной системы. % \item Если вы держите на одном компьютере несколько операционных % систем, и хотите использовать для них одну копию \TL, то создать % образ диска может быть проще, чем учитывать особенности и % ограничения файловых систем на общих разделах (FAT32, % NTFS, HFS+). % \item Виртуальные машины могут использовать образ как виртуальный % диск. % \end{itemize} % Разумеется, вы можете также прожечь реальный \DVD, если это вам % удобнее. % Десктопные версии \GNU/Linux/Unix, включая \MacOSX, умеют монтировать % \ISO. Windows~8 "--- первая (!) система семейства Windows, которая % умеет это делать. В остальном установка такая же, как при установке на % жесткий диск, см. раздел~\ref{sec:env}. % При установке на \ISO\ имеет смысл не делать поддиректорию для года % текущей версии, и устанавливать \filename{texmf-local} на том же % уровнем что и другие деревья (\filename{texmf-dist}, \filename{texmf-var}, % и т.\,д.). Это можно сделать при помощи опций программы установки. % Для обычной (не виртуальной) машины под Windows вы можете прожечь % \ISO\ на \DVD. Однако возможно, что вам будет удобно использовать % разнообразные свободные программы для монтирования виртуальных дисков, % например, WinCDEmu, \url{http://wincdemu.sysprogs.org/}. % Для лучшего взаимодействия с системой, вы можете включить скрипты для % \filename{w32client}, описанные в разделе~\ref{sec:sharedinstall} и на % странице \url{http://tug.org/texlive/w32client.html}. Они работают с % \ISO\ точно так же, как и с системой в локальной сети. % Под \MacOSX\ TeXShop может использовать систему на \DVD, % если симлинк \filename{/usr/texbin} указывает на директорию с % программами для нужной архитектуры, например % \begin{verbatim} % sudo ln -s /Volumes/MyTeXLive/bin/universal-darwin /usr/texbin % \end{verbatim} % Историческая справка: \TL{} 2010 была первым изданием \TL, который не % мог работать непосредственно с диска (<>). Однако для работы с % \DVD\ или \ISO\ всегда нужны были дополнительные усилия: например, % необходимо было установить хотя бы одну переменную окружения. Если бы % создаете образ \ISO\ из существующей системы, то в этом нет нужды. \section{Администрирование системы при помощи \cmdname{tlmgr}} \label{sec:tlmgr} \begin{figure}[tb] \tlpng{tlshell-macos}{\linewidth} \caption{\prog{tlmgr} в графическом режиме (\MacOSX), меню Actions} \label{fig:tlshell} \end{figure} \begin{figure}[tb] \tlpng{tlcockpit-packages}{.8\linewidth} \caption{Графическая оболочка \prog{tlcockpit} для \prog{tlmgr}} \label{fig:tlcockpit} \end{figure} \begin{figure}[tb] \tlpng{tlmgr-gui}{\linewidth} \caption{Устаревшая графическая оболочка для \prog{tlmgr}: основное окно после нажатия на `Load'} \label{fig:tlmgr-gui} \end{figure} В \TL{} входит программа \prog{tlmgr} для администрирования системы после установки. Программы \prog{updmap}, \prog{fmtutil} и \prog{texconfig} все ещё есть в системе и будут там в будущем, но мы рекомендуем теперь программу \prog{tlmgr}. Среди её возможностей: \begin{itemize*} \item установка, обновление, архивирование, восстановление и удаление отдельных пакетов, при желании с учетом зависимостей между ними; \item поиск и перечисление пакетов; \item перечисление, добавление и удаление платформ; \item изменение параметров системы, например, размера бумаги и источника установки (см. раздел~\ref{sec:location}). \end{itemize*} \subsection{Графические оболочки для \cmdname{tlmgr}} \TL\ включает несколько графических оболочек для \prog{tlmgr}. Два важных примера: на рисунке~\ref{fig:tlshell} приведен \cmdname{tlshell}, который написан на Tcl/Tk и работает из коробки под Windows и\MacOSX. На рисунке~\ref{fig:tlcockpit} показан \prog{tlcockpit}, который требует Java версии 8 и JavaFX. Оба этих пакета нужно установить отдельно. Сама программа \prog{tlmgr} может быть запущена в графическом режиме (рисунок~\ref{fig:tlmgr-gui})) командой \begin{alltt} > \Ucom{tlmgr -gui} \end{alltt} Следует заметить, однако, что эта оболочка требует Perl/Tk, который больше не включают в дистрибутив \TL\ для программы Perl под Windows. \subsection{Примеры запуска программы \cmdname{tlmgr} из командной строки} После первоначальной установки вы можете обновить систему до последних версий, имеющихся на сети: \begin{alltt} > \Ucom{tlmgr update -all} \end{alltt} Если вы хотите сначала посмотреть, что именно будет обновляться, попробуйте сначала \begin{alltt} > \Ucom{tlmgr update -all -dry-run} \end{alltt} или (не так многословно): \begin{alltt} > \Ucom{tlmgr update -list} \end{alltt} В более сложном примере мы добавляем новую коллекцию (\XeTeX) из локальной директории: \begin{alltt} > \Ucom{tlmgr -repository /local/mirror/tlnet install collection-xetex} \end{alltt} В результате система печатает следующее (многие строки удалены для краткости): \begin{fverbatim} install: collection-xetex install: arabxetex ... install: xetex install: xetexconfig install: xetex.i386-linux running post install action for xetex install: xetex-def ... running mktexlsr mktexlsr: Updating /usr/local/texlive/2021/texmf-dist/ls-R... ... running fmtutil-sys --missing ... Transcript written on xelatex.log. fmtutil: /usr/local/texlive/2021/texmf-var/web2c/xetex/xelatex.fmt installed. \end{fverbatim} Как вы видите, \prog{tlmgr} учитывает зависимости между пакетами и сам делает нужные после установки шаги, включая обновление базы имен файлов и перегенерирование форматов. В примере выше она создала новые форматы для программы \XeTeX. Описание пакета (или коллекции или схемы): \begin{alltt} > \Ucom{tlmgr show collection-latexextra} \end{alltt} что дает \begin{fverbatim} package: collection-latexextra category: Collection shortdesc: LaTeX supplementary packages longdesc: A very large collection of add-on packages for LaTeX. installed: Yes revision: 46963 sizes: 657941k \end{fverbatim} И наконец, полная документация находится по адресу \url{https://tug.org/texlive/tlmgr.html} или вызывается командой \begin{alltt} > \Ucom{tlmgr -help} \end{alltt} \section{Дополнительные замечания о Windows} \label{sec:windows} \subsection{Дополнительные возможности Windows} \label{sec:winfeatures} Под Windows программа установки делает несколько дополнительных вещей: \begin{description} \item[Меню и ярлыки.] Устанавливается подменю <<\TL{}>> меню <>, которое содержит некоторые программы (\prog{tlmgr}, \prog{texdoctk}) и документацию. \item[Программы по умолчанию.] При необходимости, программы \prog{TeXworks} и \prog{Dviout} становятся программами по умолчанию для соответствующих типов файлов или заносятся в меню <<Открыть при помощи...>> для этих файлов. \item[Конвертирование графики в формат eps.] В меню <<Открыть при помощи...> для графических файлов добавляется команда \cmdname{bitmap2eps}. Это простой скрипт, который вызывает программы \cmdname{sam2p} или \cmdname{bmeps} для конвертирования графики. \item[Автоматическая установка переменных окружения.] Все переменные окружения устанавливаются автоматически. \item[Удаление системы.] Программа установки создает в меню <> запись <<\TL{}>>. Клавиша <<удалить>> в меню \prog{tlmgr} вызывает удаление системы. При установке для индивидуального пользователя также создается пункт в меню для удаления системы. \item[Защита от записи.] При установке в административном режиме директории \TL\ будут защищены от записи, по крайней мере, если \TL\ устанавливается на жесткий диск, размеченный под NTFS. \end{description} В разделе~\ref{sec:sharedinstall} описан альтернативный подход, изпользующий программу \filename{tlaunch}. \subsection{Дополнительные пакеты для Windows} Для полноты дистрибутиву \TL необходимы дополнительные пакеты, которые обычно не встречаются на машине под Windows. В \TL{} есть недостающие программы и пакеты (они устанавливаются только для Windows): \begin{description} \item[Perl и Ghostscript.] Ввиду важности этих программ, \TL{} включает их <<скрытые>> копии. Программы \TL{}, которым они нужны, знают, где их найти, но они не выдают их присутствия системе через переменные окружения или регистр. Это усеченные варианты программ Perl и Ghostscript, и они не должны замещать системные версии. \item[dviout.] Также устанавливается \prog{dviout}, программа для просмотра файлов в формате DVI. При первом запуске программы она создает шрифты для просмотра файлов. Если вы будете пользоваться ей некоторое время, она создаст практически все нужные вам шрифты, и окно создания шрифтов будет появляться все реже. Дополнительная информация о программе содержится в (очень хорошем) меню Help. \item[TeXworks.] \TeX{}works "---~это редактор для \TeX а со встроенной программой для просмотра PDF. Он устанавливается уже настроенным для \TL. \item[Утилиты командной строки.] Вместе с программами \TL{} устанавливается ряд портированных под Windows стандартных юниксовских утилит: \cmdname{gzip}, \cmdname{zip}, \cmdname{unzip} и программы из набора \cmdname{poppler} (\cmdname{pdfinfo}, \cmdname{pdffonts}, \ldots); просмотрщик PDF в дистрибутив для Windows не включен. Одна из возможных альтернатив: программа Sumatra (\url{https://www.sumatrapdfreader.org/free-pdf-reader.html}). \item[fc-list, fc-cache и т.д.] Эти программы из библиотеки \prog{fontconfig} помогают \XeTeX у работать со шрифтами под Windows. Вы можете определить названия шрифтов для команды \cs{font} при помощи программы \prog{fc-list}. Если нужно, вызовите сначала программу \prog{fc-cache}, чтобы обновить информацию о шрифтах. \end{description} \subsection{Домашняя директория под Windows} \label{sec:winhome} Аналогом домашней директории под UNIX является директория \verb|%USERPROFILE%|. Под Windows Vista и младше это обычно \verb|C:\Users\|. В файле \filename{texmf.cnf} и вообще при работе \KPS{}, тильда \verb|~| правильно интерпретируется как домашняя директория пользователя и под Windows, и под UNIX. \subsection{Регистр Windows} \label{sec:registry} Windows хранит почти все конфигурационные данные в регистре. Регистр содержит набор иерархически организованных записей, с несколькими корневыми записями. Наиболее важны для программ установки записи \path{HKEY_CURRENT_USER} и \path{HKEY_LOCAL_MACHINE}, сокращенно \path{HKCU} и \path{HKLM}. Как правило, \path{HKCU} находится в домашней директории пользователя (см. раздел~\ref{sec:winhome}), а \path{HKLM} "--- поддиректория директории Windows. Иногда конфигурация системы определяется переменными окружения, но некоторые вещи (например, положение ярлыков) задаются в регистре. Для того, чтобы перманентно задать переменные окружения, также нужен доступ к регистру. \subsection{Права доступа под Windows} \label{sec:winpermissions} В поздних версиях Windows делается различие между обычными пользователями и администраторами, причем только последние имеют право доступа почти ко всей операционной системе. Мы постарались сделать возможным установку \TL{} без прав администратора. Если программа установки запущена с привилегиями администратора, она может установить \TL{} для всех пользователей. В этом случае ярлыки создаются у всех пользователей, и модифицируются все пути поиска. В противном случае ярлыки и меню создаются только для текущего пользователя, и модифицируются только его пути поиска. Вне зависимости от статуса пользователя, корень установки \TL{}, предлагаемый по умолчанию, всегда находится под \verb|%SystemDrive%|. Программа установки всегда проверяет, открыта ли корневая директория на запись для текущего пользователя. Может возникнуть проблема, если у пользователя нет прав администратора, а в пути поиска уже есть \TeX{}. Поскольку в пути поиска системный путь стоит перед путем пользователя, \TeX{} из \TL{} не будет найден. Чтобы обойти эту проблему, программа в таком случае создает ярлык с командной строкой, в которой директория \TL{} стоит первой в пути поиска. Из этой командной строки можно пользоваться \TL{}. Ярлык для \TeX{}works, если эта программа установлена, также добавляет директории \TL{} в начало пути поиска. Есть ещё одна особенность: даже если вы являетесь администратором, вам нужно отдельно указать административные права при запуске программ. Поэтому не имеет особого смысла заходить в систему как администратор: вместо этого, щелкнув правой клавишей мыши на ярлык, выберите из меню <>. \subsection{Закрытие директории \TL\ для записи} Установка в качестве администратора \emph{не} защищает директорию \TL\ от записи другими пользователями. Это нужно делать отдельно, задав соответствующие установки в ACL (Access Control List) для данной директории, например, при помощи утилиты Windows \filename{icacls}. \subsubsection{Увеличение предоставляемой памяти под Windows и Cygwin} \label{sec:cygwin-maxmem} Пользователи Windows и Cygwin (см. раздел~\ref{sec:cygwin} об особенностях установки под Cygwin) могут обнаружить, что для некоторых программ \TL{} не хватает оперативной памяти. Например, программа \prog{asy} может не запуститься, если вам нужно разместить массив в 25\,000\,000 чисел с плавающей точкой, а Lua\TeX{} может не справиться с документом, в котором много разных шрифтов. Под Cygwin можно увеличить используемый объем памяти, если воспользоваться инструкциями в Руководстве пользователя Cygwin (\url{https://www.cygwin.com/cygwin-ug-net/setup-maxmem.html}). Под Windows нужно создать файл, скажем, \code{moremem.reg}, со следующими четырьмя строками: \begin{sverbatim} Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Cygwin] "heap_chunk_in_mb"=dword:ffffff00 \end{sverbatim} \noindent а затем выполнить как администратор команду \code{regedit /s moremem.reg}. Если вы хотите изменить этот параметр только для текущего пользователя, то в третьей строке надо написать \code{HKEY\_CURRENT\_USER}. \section{Руководство пользователя Web2C} \Webc{} "--- это интегрированная коллекция программ, относящихся к \TeX{}у: сам \TeX{}, \MF{}, \MP, \BibTeX{}, и т.д. Это сердце \TL{}. Страница \Webc{} с руководством пользователя и многим другим находится на \url{https://tug.org/web2c}. Немного истории. Первая версия программы была написана Томасом Рокики, который в 1987 году создал систему \TeX{}-to-C, адаптировав патчи для UNIX, разработанные в основном Говардом Трики и Павлом Куртисом. Тим Морган стал поддерживать систему, и в этот период её название сменилось на Web-to-C\@. В 1990 году Карл Берри взял на себя этот проект, координируя работу десятков программистов, а в 1997 он передал руководство Олафу Веберу, который вернул его Карлу в 2006 году. Система \Webc{} работает под UNIX, 32-битовыми Windows, \MacOSX{} и под другими операционными системами. Она использует оригинальные исходники Кнута для \TeX{}а и других программ, написанных на языке \web{} и переведённых на C. Основные программы системы: \begin{cmddescription} \item[bibtex] Поддержка библиографий. \item[dvicopy] Работа с виртуальными шрифтами в файлах \dvi{}. \item[dvitomp] Перевод \dvi{} в MPX (рисунки в \MP{}). \item[dvitype] Перевод \dvi{} в текст. \item[gftodvi] Гранки шрифтов. \item[gftopk] Упаковка шрифтов \item[gftype] Перевод GF в текст. \item[mf] Создание шрифтов. \item[mft] Вёрстка исходников \MF{}. \item[mpost] Рисование диаграмм. \item[patgen] Создание таблиц переносов. \item[pktogf] Перевод PK в GF. \item[pktype] Перевод PK в текст \item[pltotf] Перевод из списка свойств шрифта в TFM. \item[pooltype] Расшифровка файлов pool в \web{}. \item[tangle] Перевод \web{} в Pascal. \item[tex] Вёрстка. \item[tftopl] Перевод TFM в список свойств шрифта. \item[vftovp] Перевод виртуального шрифта в список свойств шрифта. \item[vptovf] Перевод списка свойств шрифта в виртуальный шрифт. \item[weave] Перевод \web{} в \TeX. \end{cmddescription} \noindent Полностью эти программы описаны в документации к соответствующим пакетам и самой \Webc{}. Однако знание некоторых общих принципов для всей семьи программ поможет вам полнее использовать программы системы \Webc{}. Все программы поддерживают стандартные опции GNU: \begin{ttdescription} \item[-{}-help] напечатать краткую справку \item[-{}-version] Напечатать версию программы и завершить работу. \end{ttdescription} Многие программы также поддерживают опцию \begin{ttdescription} \item[-{}-verbose] печатать подробную информацию по мере работы \end{ttdescription} Для поиска файлов программы \Webc{} используют библиотеку \KPS{} (\url{https://tug.org/kpathsea}). Эта библиотека использует комбинацию переменных окружения и конфигурационных файлов, чтобы найти нужные файлы в огромной системе \TeX{}. \Webc{} может просматривать одновременно больше одного дерева директорий, что полезно для работы со стандартным дистрибутивом \TeX{}а и его локальными расширениями. Для ускорения поисков файлов каждое дерево содержит файл \file{ls-R}, в котором указаны названия и относительные пути всех файлов в этом дереве. \subsection{Поиск файлов в Kpathsea} \label{sec:kpathsea} Рассмотрим сначала общий алгоритм библиотеки \KPS. Будем называть \emph{путём поиска} набор разделённых двоеточием или точкой с запятой \emph{элементов пути}, представляющих из себя в основном названия директорий. Путь поиска может иметь много источников. Чтобы найти файл \samp{my-file} в директории \samp{.:/dir}, \KPS{} проверяет каждый элемент пути по очереди: сначала \file{./my-file}, затем \file{/dir/my-file}, возвращая первый файл (или, возможно, все файлы). Чтобы работать с разными операционными системами, \KPS{} под системой, отличной от UNIX, может использовать разделители, отличные от \samp{:} и \samp{/}. Чтобы проверить определённый элемент пути \var{p}, \KPS{} вначале проверяет наличие базы данных (см. раздел <<База данных файлов>> на стр.~\pageref{sec:filename-database}), т.е., есть ли база в директории, которая является префиксом для \var{p}. Если это так, спецификация пути сравнивается с содержимым базы данных. Хотя самый простой и часто встречающийся элемент пути "--- это название директории, \KPS{} поддерживает дополнительные возможности: разнообразные значения по умолчанию, имена переменных окружения, значения из конфигурационных файлов, домашние директории пользователей, рекурсивный поиск поддиректорий. Поэтому мы говорим, что \KPS{} \emph{вычисляет} элемент пути, т.е., что библиотека преобразует спецификации в имя или имена директории. Это описано в следующих разделах в том же порядке, в котором происходит поиск. Заметьте, что имя файла при поиске может быть абсолютным или относительным, т.е. начинаться с \samp{/}, или \samp{./}, или \samp{../}, \KPS{} просто проверяет, существует ли файл. \ifSingleColumn \else \begin{figure*} \verbatiminput{examples/ex5.tex} \setlength{\abovecaptionskip}{0pt} \caption{Пример конфигурационного файла} \label{fig:config-sample} \end{figure*} \fi \subsubsection{Источники путей поиска} \label{sec:path-sources} Путь поиска может иметь разные источники. \KPS{} использует их в следующем порядке: \begin{enumerate} \item Установленные пользователем переменные окружения, например \envname{TEXINPUTS}\@. Переменные окружения с точкой и названием программы имеют преимущество; например если \samp{latex} "--- имя программы. то \envname{TEXINPUTS.latex} имеет преимущество перед \envname{TEXINPUTS}. \item Конфигурационный файл, специфический для данной программы, например, строка \samp{S /a:/b} в \file{config.ps} для \cmdname{dvips}. \item Конфигурационный файл \KPS{} \file{texmf.cnf}, содержащий строку типа \samp{TEXINPUTS=/c:/d} (см. ниже). \item Значение, заданное при компиляции. \end{enumerate} \noindent Вы можете увидеть каждое из этих значений для данного пути поиска, задав соответствующий уровень отладки (см. <<Отладка>> на стр.~\pageref{sec:debugging}). \subsubsection{Конфигурационные файлы} \begingroup\tolerance=3500 \KPS{} читает \emph{конфигурационные файлы} \file{texmf.cnf}, в которых задаются параметры программы. Раньше для поиска этих файлов использовалась переменная \envname{TEXMFCNF}, но теперь мы не рекомендуем пользоваться этой (или какой-либо другой) переменной окружения. Теперь при нормальной установке создается файл \file{.../2021/texmf.cnf}. Если вам нужно изменить настройки (обычно этого делать не приходится), внесите их в этот файл. Главный конфигурационный файл "---~это файл \file{.../2021/texmf/web2c/texmf.cnf}. Его редактировать \emph{не} следует, так как при обновлении системы ваши изменения пропадут. Если вы хотите только добавить личную директорию к определенному списку поиска, вы можете задать переменную окружения: \begin{verbatim} TEXINPUTS=.:/my/macro/dir: \end{verbatim} Чтобы эта система могла работать при изменении версии \TL, мы советуем использовать в конце \samp{:} (\samp{;} под Windows), чтобы добавить системные директории, вместо того, чтобы указывать их явно (см. раздел~\ref{sec:default-expansion}). Другой вариант "---~использование дерева \envname{TEXMFHOME} (см. раздел~\ref{sec:directories}). \emph{Все} найденные файлы \file{texmf.cnf} будут прочитаны, и определения в более ранних файлах имеют преимущество перед определениями в более поздних. Таким образом, если путь поиска задан как \verb|.:$TEXMF|, значения в \file{./texmf.cnf} имеют преимущество перед значениями в \verb|$TEXMF/texmf.cnf|. \endgroup \begin{itemize*} \item Комментарии начинаются с \code{\%} в начале строки или после пробелов и продолжаются до конца строки. \item Пустые строки игнорируются \item \bs{} в конце строки означает продолжение, т.е. добавляется следующая строка. Пробелы в начале следующей строки не игнорируются. \item Определения параметров имеют вид\\ \hspace*{2em}\texttt{\var{variable} \textrm{[}.\var{progname}\textrm{]} \textrm{[}=\textrm{]} \var{value}}\\[1pt] где \samp{=} и пробелы вокруг могут опускаться. Но (если \var{value} начинается с \samp{.}, проще использовать \samp{=}, чтобы точка не могла интерпретироваться как указание на то, что переменная относится к определенной программе.) \item \ttvar{variable} может содержать любые символы, кроме пробела, \samp{=} или \samp{.}, но надёжнее всего придерживаться набора \samp{A-Za-z\_}. \item Если есть \samp{.\var{progname}}, определение относится только к программе, которая называется \texttt{\var{progname}} или \texttt{\var{progname}.exe}. Это позволяет, например, разным видам \TeX{}а иметь разные пути поиска. \item Так как значения \var{value} являются строковыми константами, они могут содержать любые символы. Но так как на практике большинство значений переменных в файле \file{texmf.cnf} связано с путями поиска, и так как различные специальные символы, такие как запятые и фигурные скобки, используются для их задания (см. раздел~\ref{sec:cnf-special-chars}), такие символы не могут быть использованы в именах директорий. Символ \samp{;} в строке \var{value} переводится в \samp{:} под Юникосм, чтобы один и тот же файл \file{texmf.cnf} мог работать под Юниксом и под Windows. Это происходит со всеми подстроками, не только с путями поиска, но к счастью символ \samp{;} больше нигде не используется. Суффикс \code{\$\var{var}.\var{prog}} не работает в правой части присвоения; вместо этого следует явно задавать соответствующую переменную. \item Все определения читаются до подстановок, поэтому к переменным можно обращаться до того, как они определены. \end{itemize*} Фрагмент конфигурационного файла, иллюстрирующий эти правила, приведeн \ifSingleColumn ниже: \verbatiminput{examples/ex5.tex} \else на рисунке~\ref{fig:config-sample}. \fi \subsubsection{Подстановка путей} \label{sec:path-expansion} \KPS{} распознаёт определённые специальные символы и конструкции в путях поиска, аналогичные конструкциям в стандартных оболочках UNIX. Например, путь \verb+~$USER/{foo,bar}//baz+, означает все поддиректории директорий \file{foo} и \file{bar} в домашней директории пользователя \texttt{\$USER}, которые содержат файл или поддиректорию \file{baz}. Это объяснено в следующих разделах. %$ \subsubsection{Подстановка по умолчанию} \label{sec:default-expansion} Если путь поиска с наибольшим приоритетом (см. раздел <<Источники путей поиска>> на стр.~\pageref{sec:path-sources}) содержит \emph{дополнительное двоеточие} (в начале, в конце, двойное), \KPS{} заменяет его следующим по приоритету путём. Если этот вставленный путь содержит дополнительное двоеточие, то же происходит со следующим путём. Например, если переменная окружения задана как \begin{alltt} > \Ucom{setenv TEXINPUTS /home/karl:} \end{alltt} и \code{TEXINPUTS} в файле \file{texmf.cnf} в дистрибутиве содержит \begin{alltt} .:\$TEXMF//tex \end{alltt} то поиск будет происходить с путём \begin{alltt} /home/karl:.:\$TEXMF//tex \end{alltt} Поскольку было бы бесполезно вставлять значение по умолчанию более чем один раз, \KPS{} изменяет только одно лишнее двоеточие, и оставляет остальные: она проверяет сначала двоеточие в начале, потом в конце, потом двойные двоеточия. \subsubsection{Подстановка скобок} \label{sec:brace-expansion} Полезна также подстановка скобок, из-за которой, например, \verb+v{a,b}w+ означает \verb+vaw:vbw+. Вложенность тут допускается. Благодаря этому можно иметь несколько иерархий директорий, присвоив \code{\$TEXMF} несколько вариантов путей. Например, в файле \file{texmf.cnf} можно найти следующее определение (это упрощение, на самом деле там ещё больше деревьев): \begin{verbatim} TEXMF = {$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFDIST} \end{verbatim} Мы можем теперь использовать это, чтобы задать директории поиска: \begin{verbatim} TEXINPUTS = .;$TEXMF/tex// \end{verbatim} %$ что означает, что, кроме текущей директории, будет происходить поиск \emph{только} в \code{\$TEXMFVAR/tex}, \code{\$TEXMFHOME/tex}, \code{\$TEXMFLOCAL/tex}, и \code{\$TEXMFDIST/tex} (последние два дерева используют файлы \file{ls-R}). \subsubsection{Подстановка поддиректорий} \label{sec:subdirectory-expansion} Два или более слэша \samp{/} в элементе пути вслед за именем директории \var{d\/} заменяются всеми поддиректориями \var{d\/} рекурсивно. На каждом уровне порядок поиска по директориям \emph{не определён}. Если вы определите компоненты имени файла после \samp{//}, только поддиректории с соответствующими компонентами будут включены. Например, \samp{/a//b} даёт поддиректории \file{/a/1/b}, \file{/a/2/b}, \file{/a/1/1/b}, и т.д., но не \file{/a/b/c} или \file{/a/1}. Возможны несколько конструкций \samp{//} в одном пути, но \samp{//} в начале пути игнорируются. \subsubsection{Список специальных символов в файле \file{texmf.cnf} и их значений} \label{sec:cnf-special-chars} В следующем списке приводятся специальные символы и сочетания в конфигурационных файлах \KPS{}. \newcommand{\CODE}[1]{\makebox[3em][l]{\code{#1}}} \begin{ttdescription} \item[\CODE{:}] Разделитель в спецификациях путей; в начале или конце спецификации или удвоенный внутри нее, означает подстановку по умолчанию. \item[\CODE{;}] Разделитель путей в системах, отличных от UNIX (то же, что \code{:}). \item[\CODE{\$}] Подстановка переменных. \item[\CODE{\string~}] Означает домашнюю директорию пользователя. \item[\CODE{\char`\{...\char`\}}] Подстановка скобок. \item[\CODE{,}] Разделяет объекты при подстановке скобок. \item[\CODE{//}] Подстановка поддиректорий (может встретиться где угодно, кроме начала пути). \item[\CODE{\%}] Начало комментария. \item[\CODE{\bs}] Символ продолжения (для команд из нескольких строк). \item[\CODE{!!}] Поиск \emph{только} в базе данных, но \emph{не} на диске. \end{ttdescription} Будет ли конкретный символ считаться специальным или будет читаться буквально, зависит от контекста. Правила разные на разных стадиях интерпретации конфигурационного файла (чтение, подстановка, поиск), и их, к сожалению, невозможно изложить коротко. Нет механизма защиты символов; в частности, \samp{\bs} не приводит к тому, что специальные символы в \file{texmf.cnf} перестают быть специальными. При выборе директорий для установки проще всего избегать названий директорий, включающих эти символы. \subsection{Базы данных файлов} \label{sec:filename-database} \KPS{} старается минимизировать обращение к диску при поиске. Тем не менее в \TL\ или в любой системе с большим количеством директорий поиск в каждой возможной директории может занять долгое время. Поэтому \KPS{} умеет использовать внешний текстовый файл, <<базу данных>> \file{ls-R}, который знает, где находятся файлы в директориях, что даёт возможность избежать частых обращений к диску. Ещё одна база данных, файл \file{aliases}, позволяет вам давать дополнительные названия файлам в \file{ls-R}. \subsubsection{Базы данных \texttt{ls-R}} \label{sec:ls-R} Как объяснено выше, основная база данных называется \file{ls-R}. Вы можете создать её в корне каждого дерева \TeX{}а, которое просматривается \KPS{} (по умолчанию, \code{\$TEXMF}). \KPS{} ищет файлы \file{ls-R} в пути \code{TEXMFDBS}. Рекомендуемый способ создания и поддержки \samp{ls-R} "--- скрипт \code{mktexlsr}, включённый в дистрибутив. Он вызывается разными скриптами \samp{mktex}\dots. В принципе этот скрипт выполняет команды типа \begin{alltt} cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R \end{alltt} при условии, что в вашей системе \code{ls} даёт вывод в нужном формате (GNU \code{ls} годится). Чтобы поддерживать базу данных в текущем состоянии, проще всего перегенерировать её регулярно из \code{cron}а, чтобы она автоматически обновлялась через некоторое время после установки нового пакета. Если файл не найден в базе данных, по умолчанию \KPS{} ищет его на диске. Если элемент пути начинается с \samp{!!}, то поиск происходит \emph{только} в базе данных. \subsubsection{kpsewhich: Программа для поиска файлов} \label{sec:invoking-kpsewhich} Программа \texttt{kpsewhich} выполняет поиск в соответствии с алгоритмом, описанным выше. Это может быть полезно в качестве варианта команды \code{find} для поиска файлов в иерархиях \TeX{}а (это широко используется в скриптах \samp{mktex}\dots). \begin{alltt} > \Ucom{kpsewhich \var{option}\dots{} \var{filename}\dots{}} \end{alltt} Опции, указанные в \ttvar{option}, начинаются либо с \samp{-} либо \samp{-{}-}, и любые однозначные (не могущие иметь двояких толкований) сокращения допустимы. \KPS{} рассматривает каждый аргумент, не являющийся опцией, как имя файла и возвращает первый найденный файл. Нет опции вернуть все найденные файлы (для этого можно использовать программу \samp{find}). Наиболее важные опции описаны ниже. \begin{ttdescription} \item[\texttt{-{}-dpi=\var{num}}]\mbox{}\\ Установить разрешение \ttvar{num}; это влияет только на поиск файлов \samp{gf} и \samp{pk}. Синоним \samp{-D}, для совместимости с \cmdname{dvips}. По умолчанию 600. \item[\texttt{-{}-format=\var{name}}]\mbox{}\\ Установить формат для поиска \ttvar{name}. По умолчанию, формат определяется из имени файла. Для форматов, для которых нет однозначного суффикса, например, файлов \MP{} и конфигурационных файлов \cmdname{dvips}, вы должны указать название, известное \KPS{}, например, \texttt{tex} или \texttt{enc files}. Список вариантов можно получить командой \texttt{kpsewhich -{}-help-formats}. \item[\texttt{-{}-mode=\var{string}}]\mbox{}\\ Установить значение режима печати \ttvar{string}; это влияет только на поиск файлов \samp{gf} и \samp{pk}. Значения по умолчанию нет: ищутся файлы для всех режимов. \item[\texttt{-{}-must-exist}]\mbox{}\\ Сделать всё возможное, чтобы найти файл, включая поиск на диске. По умолчанию для повышения эффективности просматривается только база данных \file{ls-R}. \item[\texttt{-{}-path=\var{string}}]\mbox{}\\ Искать в наборе директорий \ttvar{string} (как обычно, разделённых двоеточиями), вместо того, чтобы вычислять путь поиска по имени файла. \samp{//} и обычные подстановки работают. Опции \samp{-{}-path} и \samp{-{}-format} несовместимы. \item[\texttt{-{}-progname=\var{name}}]\mbox{}\\ Установить имя программы равным \texttt{\var{name}}. Это влияет на путь поиска из-за префикса \texttt{.\var{progname}}. По умолчанию \cmdname{kpsewhich}. \item[\texttt{-{}-show-path=\var{name}}]\mbox{}\\ Показать путь, используемый при поисках файлов типа \texttt{\var{name}}. Можно использовать расширение (\code{.pk}, \code{.vf} и т.д.) или тип файла, как для опции \samp{-{}-format}. \item[\texttt{-{}-debug=\var{num}}]\mbox{}\\ Установить уровень отладки \texttt{\var{num}}. \end{ttdescription} \subsubsection{Примеры использования} \label{sec:examples-of-use} Давайте посмотрим на \KPS{} в действии. Вот простой поиск: \begin{alltt} > \Ucom{kpsewhich article.cls} /usr/local/texmf-dist/tex/latex/base/article.cls \end{alltt} Мы ищем файл \file{article.cls}. Так как суффикс \samp{.cls} однозначен, нам не нужно указывать, что мы ищем файл типа \optname{tex} (исходники \TeX{}а). Мы находим его в поддиректории \file{tex/latex/base} директории \samp{temf-dist} \TL. Аналогично, всё последующее находится без проблем благодаря однозначному суффиксу: \begin{alltt} > \Ucom{kpsewhich array.sty} /usr/local/texmf-dist/tex/latex/tools/array.sty > \Ucom{kpsewhich latin1.def} /usr/local/texmf-dist/tex/latex/base/latin1.def > \Ucom{kpsewhich size10.clo} /usr/local/texmf-dist/tex/latex/base/size10.clo > \Ucom{kpsewhich small2e.tex} /usr/local/texmf-dist/tex/latex/base/small2e.tex > \Ucom{kpsewhich tugboat.bib} /usr/local/texmf-dist/bibtex/bib/beebe/tugboat.bib \end{alltt} Кстати, последнее "--- библиографическая база данных статей журнала \textsl{TUGBoat}. \begin{alltt} > \Ucom{kpsewhich cmr10.pk} \end{alltt} Битмапы шрифтов типа \file{.pk} используются программами \cmdname{dvips} и \cmdname{xdvi}. Ничего не найдено, поскольку у нас нет готовых файлов шрифтов Computer Modern в формате \samp{.pk} (так как мы используем версии в формате Type~1 из дистрибутива \TL{}). \begin{alltt} > \Ucom{kpsewhich wsiupa10.pk} \ifSingleColumn /usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.600pk \else /usr/local/texmf-var/fonts/pk/ljfour/public/ ... wsuipa/wsuipa10.600pk \fi\end{alltt} Для этих шрифтов (фонетический алфавит, созданный в Университете штата Вашингтон) мы должны сгенерировать \samp{.pk}, и так как режим \MF{} по умолчанию в нашей системе \texttt{ljfour} с разрешением of 600\dpi{} (точек на дюйм), этот шрифт и найден. \begin{alltt} > \Ucom{kpsewhich -dpi=300 wsuipa10.pk} \end{alltt} В этом случае нам нужно разрешение 300\dpi{} (\texttt{-dpi=300}); мы видим, что такого шрифта в системе нет. На самом деле программа \cmdname{dvips} или \cmdname{xdvi} построила бы нужный файл \texttt{.pk} при помощи скрипта \cmdname{mktexpk}. Теперь обратимся к заголовкам и конфигурационным файлам \cmdname{dvips}. Вначале рассмотрим один из наиболее часто используемых файлов, пролог \file{tex.pro} для поддержки \TeX{}а, а затем рассмотрим общий конфигурационный файл \file{config.ps} и карту шрифтов \file{psfonts.map} (с 2004 года карты и файлы кодировок имеют собственные пути поиска в деревьях \dirname{texmf}). Так как суффикс \samp{.ps} неоднозначен, мы должные явно указать тип файла, который мы ищем: (\optname{dvips config}) для файла \texttt{config.ps}. \begin{alltt} > \Ucom{kpsewhich tex.pro} /usr/local/texmf/dvips/base/tex.pro > \Ucom{kpsewhich --format="dvips config" config.ps} /usr/local/texmf/dvips/config/config.ps > \Ucom{kpsewhich psfonts.map} /usr/local/texmf/fonts/map/dvips/updmap/psfonts.map \end{alltt} Рассмотрим теперь файлы поддержки URW Times (\PS{}). Префикс для этих файлов в стандартной схеме обозначения шрифтов \samp{utm}. Вначале мы рассмотрим конфигурационный файл, который содержит название карты шрифтов: \begin{alltt} > \Ucom{kpsewhich --format="dvips config" config.utm} /usr/local/texmf-dist/dvips/psnfss/config.utm \end{alltt} Содержание этого файла: \begin{alltt} p +utm.map \end{alltt} что указывает на файл \file{utm.map}, который мы хотим теперь найти. \begin{alltt} > \Ucom{kpsewhich --format="dvips config" utm.map} /usr/local/texmf-dist/fonts/map/dvips/times/utm.map \end{alltt} Эта карта определяет названия шрифтов формата Type~1 (\PS{}) в коллекции URW. Она выглядит так (мы показываем только часть файла): \begin{alltt} utmb8r NimbusRomNo9L-Medi ... \Ucom{kpsewhich utmr8a.pfb} \ifSingleColumn /usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.pfb \else /usr/local/texmf-dist/fonts/type1/ ... urw/utm/utmr8a.pfb \fi\end{alltt} Из этих примеров видно, что вы можете легко найти заданный файл. Это особенно важно, если вы подозреваете, что программы находят неправильную версию файла, поскольку \cmdname{kpsewhich} показывает первый найденный файл. \subsubsection{Отладка} \label{sec:debugging} Иногда необходимо проверить, как программа ищет файлы. С этой целью \KPS{} предлагает разные уровни отладки: \begin{ttdescription} \item[\texttt{\ 1}] статистика обращений к диску. При работе с базами \file{ls-R} это почти не должно давать записей в лог. \item[\texttt{\ 2}] Ссылки на хеши (например, базы данных \file{ls-R}, конфигурационные файлы и т.д.). \item[\texttt{\ 4}] Операции открытия и закрытия файлов. \item[\texttt{\ 8}] Общая информация о типах файлов, которые ищет \KPS. Это полезно для того, чтобы найти, где определяется тип пути поиска для данного файла. \item[\texttt{16}] Список директорий для каждого элемента пути (при поисках на диске). \item[\texttt{32}] Поиски файлов. \item[\texttt{64}] Значения переменных. \end{ttdescription} Значение \texttt{-1} задаст все опции выше; именно это значение чаще всего используется на практике. Аналогично, запустив программу \cmdname{dvips} и используя сочетание этих опций, можно проследить подробно, как ищутся файлы. С другой стороны, если файл не найден, трассировка показывает, где его искали, так что можно понять, в чём состоит проблема. Вообще говоря, поскольку большинство программ пользуются библиотекой \KPS{}, вы можете установить опцию отладки, используя переменную окружения \envname{KPATHSEA\_DEBUG} и установив её на комбинацию описанных выше значений. (Примечание для пользователей Windows: в этой системе трудно перенаправить все сообщения в файл. Для диагностики вы можете временно установить \texttt{SET KPATHSEA\_DEBUG\_OUTPUT=err.log}). Рассмотрим в качестве примера простой файл в формате \LaTeX{}, \file{hello-world.tex}, со следующим содержанием: \begin{verbatim} \documentclass{article} \begin{document} Hello World! \end{document} \end{verbatim} Этот маленький файл использует только шрифт \file{cmr10}, так что давайте посмотрим, как \cmdname{dvips} создаёт файл в формате \PS{} (мы хотим использовать версию шрифтов в формате Type~1, отсюда опция \texttt{-Pcms}). \begin{alltt} > \Ucom{dvips -d4100 hello-world -Pcms -o} \end{alltt} В этом случае мы объединили отладочный уровень 4 для \cmdname{dvips} (директории шрифтов) с подстановкой элементов путей в \KPS (см. Руководство пользователя \cmdname{dvips}. Результат (слегка отредактированный) показан на рисунке~\ref{fig:dvipsdbga}. \begin{figure*}[tp] \centering \input{examples/ex6a.tex} \caption{Поиск конфигурационных файлов}\label{fig:dvipsdbga} \end{figure*} Программа \cmdname{dvips} вначале ищет свои конфигурационные файлы. Сначала находится \file{texmf.cnf}, который содержит определения для путей поиска остальных файлов, затем база данных \file{ls-R} (для оптимизации поиска файлов) и файл \file{aliases}, который позволяет объявить несколько имён (например, короткие в формате 8.3 и более длинные) для одного файла. Затем \cmdname{dvips} ищет свой конфигурационный файл \file{config.ps} и файл \file{.dvipsrc} (который в данном случае \emph{не найден}). Наконец, \cmdname{dvips} находит конфигурационный файл для шрифтов Computer Modern \PS{} \file{config.cms} (это было задано опцией \texttt{-Pcms} в командной строке). Этот файл содержит список карт, которые определяют соотношения между файлами в форматах \TeX{}, \PS{} и названиями шрифтов: \begin{alltt} > \Ucom{more /usr/local/texmf/dvips/cms/config.cms} p +ams.map p +cms.map p +cmbkm.map p +amsbkm.map \end{alltt} \cmdname{dvips} находит все эти файлы плюс общую карту шрифтов \file{psfonts.map}, которая всегда загружается (она содержит обычные шрифты в формате \PS{}; см. последнюю часть раздела~\ref{sec:examples-of-use}). В этот момент \cmdname{dvips} сообщает о себе пользователю: \begin{alltt} This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com) \end{alltt} \ifSingleColumn Затем она ищет пролог \file{texc.pro}: \begin{alltt}\small kdebug:start search(file=texc.pro, must\_exist=0, find\_all=0, path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//: ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//). kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro \end{alltt} \else Затем она ищет пролог \file{texc.pro} (см. рисунок~\ref{fig:dvipsdbgb}). \fi Найдя этот файл, \cmdname{dvips} печатает дату и время и информирует нас, что собирается генерировать файл \file{hello-world.ps}, что ей нужен файл \file{cmr10} и что последний является <<резидентным>> (битмапы не нужны): \begin{alltt}\small TeX output 1998.02.26:1204' -> hello-world.ps Defining font () cmr10 at 10.0pt Font cmr10 is resident. \end{alltt} Теперь она ищет файл \file{cmr10.tfm}, который она находит, затем ещё несколько прологов (здесь они опущены), и наконец файл формата Type~1 \file{cmr10.pfb} найден и включён в выходной файл (см, последнюю строку): \begin{alltt}\small kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0, path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//: /var/tex/fonts/tfm//). kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm kdebug:start search(file=texps.pro, must\_exist=0, find\_all=0, ... kdebug:start search(file=cmr10.pfb, must\_exist=0, find\_all=0, path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//: ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//). kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb [1] \end{alltt} \subsection{Опции запуска} Ещё одна полезная возможность \Webc{} "--- изменение параметров памяти (в особенности размеров массивов) при запуске, во время чтения файла \file{texmf.cnf} библиотекой \KPS{}. Параметры памяти находятся в части~3 этого файла в дистрибутиве \TL{}. Вот самые важные: \begin{ttdescription} \item[\texttt{main\_memory}] Общее количество слов в памяти для программ \TeX{}, \MF{} и \MP. После изменения этого параметра надо перегенерировать формат. Например, вы можете создать <<огромную>> версию \TeX{}а, и назвать соответствующий формат \texttt{hugetex.fmt}. По общим правилам \KPS{}, значение переменной \texttt{main\_memory} будет читаться из файла \file{texmf.cnf}. \item[\texttt{extra\_mem\_bot}] Дополнительная память для <<больших>> структур, которые создаёт \TeX{}: боксов, клея и т.д. Особенно полезно при использовании \PiCTeX{}а. \item[\texttt{font\_mem\_size}] Количество слов информации о шрифтах для \TeX{}а. Это примерно суммарный размер всех файлов TFM, которые читает \TeX. \item[\texttt{hash\_extra}] Дополнительный размер хеша для имён команд. По умолчанию \texttt{600000}. \end{ttdescription} \noindent Это не замена настоящих динамических массивов и распределения памяти, но поскольку эти черты исключительно сложно осуществить в текущем \TeX{}е, использование этих параметров представляет собой полезный компромисс и обеспечивает некоторую гибкость. \htmlanchor{texmfdotdir} \subsection{\texttt{\$TEXMFDOTDIR}} \label{sec:texmfdotdir} Выше мы указывали различные пути поиска начиная с точки <<\code{.}>> (начать поиск с текущей директории), например, \begin{alltt}\small TEXINPUTS=.;$TEXMF/tex// \end{alltt} Это упрощение. Файл \code{texmf.cnf}, который входит в \TL{}, использует \filename{$TEXMFDOTDIR} вместо \samp{.}, например: \begin{alltt}\small TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex// \end{alltt} (В реальном файле второй элемент слегка сложнее, чем \filename{$TEXMF/tex//}. Но это неважно: здесь мы обсуждаем \filename{$TEXMFDOTDIR}). Причина, по которой в определениях используется переменная \filename{$TEXMFDOTDIR}, а не просто \samp{.}, в том, что эту %$ переменную можно переопределить. Например, в сложный документ может включать файлы из многих поддиректорий. В этом случае можно выставить \filename{TEXMFDOTDIR} на \filename{.//} (например, в дереве директорий, предназначенном только для данного текста), и поиск пойдет по всем директориям системы. (Предупреждение: не используйте \filename{.//} по умолчанию: обычно крайне нежелательно и потенциально небезопасно, искать во всех поддиректориях для каждого документа) Другой пример: вы можете не хотеть искать в текущей директории, например, если вы подгружаете файлы, явно указывая их полные пути. В этом случае вы можете выставить \filename{$TEXMFDOTDIR} на, например, \filename{/nonesuch} или любую несуществующую директорию. По умолчанию \filename{$TEXMFDOTDIR} указывает на \samp{.}, как в нашем \filename{texmf.cnf}. \htmlanchor{ack} \section{Благодарности} \TL{} "--- результат объединённых усилий практически всех групп пользователей \TeX а. Это издание \TL{} выходит под редакцией Карла Берри. Другие основные авторы, прошлые и настоящие, перечислены ниже. Мы благодарим: \begin{itemize*} \item Англоязычную, немецкую, голландскую и польскую группы пользователей \TeX{}а (TUG, DANTE e.V., NTG и GUST) за необходимую техническую и административную инфраструктуру. Пожалуйста, вступайте в группы пользователей \TeX а (см. \url{https://tug.org/usergroups.html}). \item Группу поддержки CTAN (\url{https://ctan.org}) за размещение дисков \TL{} и поддержку инфраструктуры обновления пакетов, от которой зависит \TL. \item Нельсона Биба за предоставленные разработчикам \TL\ компьютеры и за тестирование дистрибутива а также беспримерную работу в области библиографии. \item Джона Боумана за работу по интегрированию его программы для сложной графики Asymptote в \TL. \item Питера Брейтенлохнера и команду разработчиков \eTeX а за стабильный движок для будущих \TeX ов, и в особенности Питера за блестящую работу с системой GNU autoools для \TL{}. Питер покинул нас в октябре 2015 года, и мы посвящаем эту работу его памяти. \item Цзинь-Хуэя Чоу и команду разработчиков DVIPDFM$x$ за их прекрасный драйвер и помощь в его конфигурации. \item Томаса Эссера, без замечательного пакета \teTeX{} которого \TL{} не существовал бы. \item Мишеля Гусенса, который был соавтором первой версии документации. \item Эйтана Гурари, чей \TeX4ht{} использовался для создания файлов в формате \HTML{}, и который неустанно работал, по первому требованию добавляя нужные нам возможности. Эйтан безвременно скончался в июне 2009 года, и мы посвящаем эту документацию его памяти. \item Ханса Хахена за огромную помощь в тестировании и приспособлении пакета \ConTeXt\ (\url{https://pragma-ade.com}) к \TL\ и за постоянную работу на развитие \TeX а. \item Хан Те Таня, Мартина Шрёдера и команду pdf\TeX a (\url{http://pdftex.org}) за расширение возможностей \TeX а. \item Хартмута Хенкеля за существенный вклад в pdf\TeX\, Lua\TeX{} и другие программы. \item Шушаку Хирата за создание и развитие DVIPDFM$x$. \item Тако Хоекватера за возобновление работы над \MP{} и (Lua)\TeX ом (\url{http://luatex.org}) за интегрирование \ConTeXt а в \TL, параллелизацию программы Kpathsea и много другое. \item Халеда Хосни за его работу над программами \XeTeX, DVIPDFM$x$, а также арабским и другими шрифтами. \item Павла Яцковского за инсталлятор для Windows \cmdname{tlpm}, и Томаша Лужака за \cmdname{tlpmgui}, использованные в прошлых версиях \TL{}. \item Акиру Какуто за большую помощь в интегрировании в систему программ для Windows из его дистрибутивов W32TEX и W64TEX для японского \TeX{}а (\url{http://w32tex.org}) и многое другое. \item Джонатана Кью за создание замечательной новой системы Xe\TeX{}, за усилия по её интегрированию в \TL{}, за исходную версию программы установки Mac\TeX\ и за рекомендуемую нами оболочку для работы в \TeX е "--- \TeX works. \item Хиронори Китагаву за большую работу над p\TeX ом и смежными проектами. \item Дика Коха за поддержку Mac\TeX а (\url{https://tug.org/mactex}) в тесном сотрудничестве с \TL{} и за его неистощимый энтузиазм. \item Рейнхарда Котуху за огромную работу по инфраструктуре \TL{} 2008, за исследовательскую работу в области Windows, за скрипт \texttt{getnonfreefonts} и многое другое. \item Сипа Кроненберга, за большой влад в инфраструктуру \TL{} 2008 и программу установки, особенно для Windows, а также за основную работу по документации новых возможностей. \item Клерка Ма за исправление багов и расширение возможностей системы. \item Мойцу Миклавец за помощь с форматом \ConTeXt, компилирование для многих платформ, и массу другой помощи. \item Хейко Обердиека за пакет \pkgname{epstopdf} и многие другие, включая сжатие огромных файлов пакета \pkgname{pst-geo}, что позволило включить их в дитрибутив, и главное "--- за его замечательную работу над пакетом \pkgname{hyperref}. \item Фелипе Олейника за способ чтения файлов с пробелами в названии для всех форматов в 2020 и многое другое. \item Петра Олшака за координацию и тщательную проверку чешского и словацкого материала. \item Тошио Ошиму за программу \cmdname{dviout} для Windows. \item Мануэля Пьегорье-Гоннара за помощь в обновлении пакетов, документации и работу над программой \cmdname{texdoc}. \item Фабриция Попинье, за поддержку Windows в первых версиях \TL{} и за работу над французской документацией. \item Норберта Прейнинга, главного архитектора инфраструктуры и программы установки текущего \TL{}, который также координировал дебиановскую версию \TL{} (совместно с Франком Кюстером) и проделал много другой необходимой работы. \item Себастьяна Ратца, создавшего проект \TL{} и много лет поддерживавшего его. Себастьян скончался в марте 2016 года, и мы посвящаем эту работу его памяти. \item Луиджи Скарсо за работу над программами MetaPost, Lua\TeX\ и другими. \item Андреаса Шерера за \texttt{cwebbin}, версию CWEB, использованную в \TL. \item Такуджи Танаку за поддержку (e)(u)p\TeX\ и смежных программ. \item Томаша Тжечака за помощь в работе над версией для Windows. \item Владимира Воловича за помощь в портировании и поддержке программ, в особенности за работу над \cmdname{xindy}, которая дала возможность включить эту программу в дистрибутив. \item Сташекa Ваврикевича, который был главным тестером \TL{} и координировал многие польские проекты: шрифты, установку под Windows и многое другое. Сташек скончался в феврале 2018 года, и мы посвящаем эту работу его памяти. \item Олафа Вебера за терпеливую работу над \Webc\ в прошедшие годы. \item Хербена Виерду за разработку и поддержку \TeX{}а для \MacOSX. \item Грэма Виллиамса, создавшего каталог пакетов \TeX\ Catalogue. \item Джозефа Райта за большую работу по упорядочиванию функциональности примитивов на разных платформах. \item Хиронубу Ямашита, за большую работу над p\TeX ом и смежными проектами. \end{itemize*} Программы компилировали: Марк Бадон (\pkgname{amd64-netbsd}, \pkgname{i386-netbsd}), Кен Браун (\pkgname{i386-cygwin}, \pkgname{x86\_64-cygwin}), Саймон Дейлес (\pkgname{armhf-linux}), Йоханнес Хилшир (\pkgname{aarch64-linux}), Акира Какуто (\pkgname{win32}), Дик Кох (\pkgname{x86\_64-darwin}), Мойца Миклавец (\pkgname{amd64-freebsd}, \pkgname{i386-freebsd}, \pkgname{x86\_64-darwinlegacy}, \pkgname{i386-solaris}, \pkgname{x86\_64-solaris}, \pkgname{sparc-solaris}), Норберт Прейнинг (\pkgname{i386-linux}, \pkgname{x86\_64-linux}, \pkgname{x86\_64-linuxmusl}), Информация о процессе компилирования \TL{} находится на \url{https://tug.org/texlive/build.html}. Перевод документации: Такута Асакура (японский), Денис Битуз и Патрик Бидол (французский), Карлос Энрике Фигуерас (испанский), Цзигод Цзян, Цзиньсун Чжао, Юэ Ван и Хэлинь Гай (китайский), Никола Лечич (сербский), Марко Палланте и Карла Магги (итальянский), Петр Сойка и Ян Буса (чешский и словацкий), Борис Вейцман (русский), София Валчак (польский), Уве Цигенхаген (немецкий). Страница документации \TL{}: \url{https://tug.org/texlive/doc.html}. Разумеется, наша главная благодарность "--- Дональду Кнуту, во-первых, за разработку \TeX а, и во-вторых, за то, что он подарил его миру. \section{История издания} \label{sec:history} \subsection{Прошлое} В конце 1993 года в голландской группе пользователей \TeX{}а во время работы над дистрибутивом 4All\TeX{} \CD{} для пользователей MS-DOS возникла новая идея. Была поставлена цель создать единый \CD{} для всех систем. Эта цель была чересчур сложна для того времени, однако она привела не только к появлению очень успешного \CD{} 4All\TeX{}, но и к созданию рабочей группы Технического Совета TUG по структуре директорий для \TeX{}а (\url{https://tug.org/tds}), которая разработала стандарт структуры директорий для системы \TeX{} и указала, как создать логичную единую систему файлов для \TeX а. Несколько версий \TDS{} было опубликовано в декабрьском выпуске \textsl{TUGboat} в 1995 году, и с самого начала стало ясно, что следует создать пример структуры на \CD{}. Дистрибутив, который вы держите в руках, "--- прямой результат работы этой группы. Из успеха 4All\TeX{} был сделан вывод, что пользователям UNIX также подойдёт такая удобная система, и так родилась другая важная часть \TL. Мы начали делать \CD{} с UNIX и структурой директорий \TDS{} осенью 1995 года, и быстро поняли, что у \teTeX{}а Томаса Эссера идеальный состав дистрибутива и поддержка многих платформ. Томас согласился нам помочь, и мы в начале 1996 года стали серьёзно работать над дистрибутивом. Первое издание вышло в мае 1996 года. В начале 1997 года Карл Берри завершил новую версию Web2C, которая включила практически все новые возможности, добавленные Томасом Эссером в \teTeX, и мы решили основать второе издание на стандартном \Webc, с добавлением скрипта \texttt{texconfig} из \teTeX{}а. Третье издание \CD{} основывалось на новой версии \Webc{} 7.2 Олафа Вебера; в то же время была выпущена новая версия \teTeX{}а, и \TL{} включил почти все его новые возможности. Четвертое издание следовало той же традиции, используя новую версию \teTeX{}а и \Webc{} (7.3). Теперь в нём была полная система для Windows, благодаря Фабрицию Попинье. Для пятого издания (март 2000 года) многие пакеты на \CD{} были пересмотрены и проверены. Информация о пакетах была собрана в файлы XML. Но главным изменением в \TeX\ Live 5 было удаление всех несвободных программ. Всё на \TL{} преполагается совместимым с Правилами Дебиана для Свободных Программ (\url{https://www.debian.org/intro/free}); мы сделали всё, что могли, чтобы проверить лицензии всех пакетов, и мы будем благодарны за любое указание на ошибки. В шестом издании (июль 2001 года) было много нового материала. Главным была новая концепция установки: пользователь выбирал нужный набор коллекций. Языковые коллекции были полностью реорганизованы, так что выбор любой из них устанавливал не только макросы, шрифты и и т.д., но и вносил изменения в \texttt{language.dat}. Седьмое издание 2002 года добавило поддержку \MacOSX{}, и большое количество обновлений для пакетов и программ. Важной целью была интеграция с \teTeX{}ом, чтобы исправить расхождение, наметившееся в версиях~5 и~6. \subsubsection{2003} В 2003 году мы продолжили изменения и дополнения, и обнаружили, что \TL{} так вырос, что не помещается на \CD. Поэтому мы разделили его на три дистрибутива (см. раздел~\ref{sec:tl-coll-dists}, \p.\pageref{sec:tl-coll-dists}). Кроме того: \begin{itemize*} \item По просьбе авторов \LaTeX{}а, мы сменили стандартные команды \cmdname{latex} и \cmdname{pdflatex}: теперь они используют \eTeX{} (см. стр.~\pageref{text:etex}). \item Новые шрифты Latin Modern включены и рекомендованы для использования. \item Убрана поддержка для Alpha OSF (поддержка для HPUX была убрана ранее), поскольку никто не имел (и не предложил) компьютеров для компилирования программ. \item Сильно изменилась установка для Windows: впервые была предложена интегрированная среда на основе редактора XEmacs. \item Добавлены вспомогателные программы для Windows (Perl, Ghost\-script, Image\-Magick, Ispell). \item Файлы Fontmap для \cmdname{dvips}, \cmdname{dvipdfm} и \cmdname{pdftex} генерируютрся программой \cmdname{updmap} и устанваливаются в \dirname{texmf/fonts/map}. \item \TeX{}, \MF{} и \MP{} теперь по умолчанию выводят символы из верхней половины таблицы ASCII в файлы, открытые командой \verb|\write|, логи и на терминал буквально, т.е. \emph{не} используя формат \verb|^^|. В \TL{}~7 это зависело от системной локали, но теперь это верно для всех локалей. Если вам нужен формат \verb|^^|, переименуйте файл \verb|texmf/web2c/cp8bit.tcx|. В будущем эта процедура будет упрощена. \item Документация была существенно обновлена. \item Наконец, из-за того, что нумерация по изданиям стала неудобной, мы перешли на нумерацию по годам: \TL{} 2003. \end{itemize*} \subsubsection{2004} В 2004 году мы внесли много изменений. \begin{itemize} \item Если у вас есть локальные шрифты с собственными файлами \filename{.map} или \filename{.enc}, вам может понадобиться переместить эти файлы. Файлы \filename{.map} теперь ищутся только в поддиректориях \dirname{fonts/map} (в каждом дереве \filename{texmf}) в пути \envname{TEXFONTMAPS}. Аналогично файлы \filename{.enc} теперь ищутся только в поддиректориях \dirname{fonts/enc} в пути \envname{ENCFONTS}. Программа \cmdname{updmap} предупреждает, если находит эти файлы не там, где они должны быть. См. описание этой структуры на \url{https://tug.org/texlive/mapenc.html}. \item К коллекции \TK{} был добавлен установочный \CD{} с дистрибутивом \MIKTEX{} для тех, кто предпочитает \MIKTEX{} программам, основанным на \Webc. См. раздел~\ref{sec:overview-tl} (\p.\pageref{sec:overview-tl}). \item Дерево \dirname{texmf} в \TL{} было разделено на три: \dirname{texmf}, \dirname{texmf-dist} и \dirname{texmf-doc}. См. раздел~\ref{sec:tld} (\p.\pageref{sec:tld}) и файлы \filename{README} в соответствующих директориях. \item Все файлы, которые читает \TeX, собраны в поддиректории \dirname{tex} деревьев \dirname{texmf*} вместо разделения на \dirname{tex}, \dirname{etex}, \dirname{pdftex}, \dirname{pdfetex} и т.д. См. \CDref{texmf-doc/doc/english/tds/tds.html\#Extensions} {\texttt{texmf-doc/doc/english/tds/tds.html\#Extensions}}. \item Вспомогательные скрипты (вызываемые другими программами, а не непосредственно пользователем) теперь собраны в директории \dirname{scripts} деревьев \dirname{texmf*} и ищутся командой \verb|kpsewhich -format=texmfscripts|. Поэтому, если у вас есть программы, которые вызывают такие скрипты, их надо изменить. См. \CDref{texmf-doc/doc/english/tds/tds.html\#Scripts} {\texttt{texmf-doc/doc/english/tds/tds.html\#Scripts}}. \item Почти все форматы теперь печатают большинство символов непосредственно, используя <<таблицы перевода>> \filename{cp227.tcx} вместо формата \verb|^^|. В частности, символы с кодами 32--256 плюс табуляция, вертикальная табуляция и перевод страницы печатаются непосредственно. Исключениями являются plain \TeX{} (печатаются непосредственно символы 32--127), \ConTeXt{} (0--255) и форматы, относящиеся к программе \OMEGA. Это поведение почти такое же, как у \TL\,2003, но реализовано более аккуратно, с большей возможностью настройки. См. \CDref{texmf-dist/doc/web2c/web2c.html\#TCX-files} {\texttt{texmf-dist/doc/web2c/web2c.html\#TCX-files}}. (Кстати, при вводе в Unicode, \TeX\ может выводить при указании на ошибку только часть многобайтного символа, так как внутри \TeX\ работает с байтами). \item \textsf{pdfetex} теперь используется для всех форматов, кроме plain \textsf{tex}. (Разумеется, он делает файлы в формате DVI, если вызван как \textsf{latex} и т.п.). Это означает, помимо прочего, что возможности \textsf{pdftex}a для микротипографии а также возможности \eTeX а доступны в форматах \LaTeX, \ConTeXt{} и т.д. (\OnCD{texmf-dist/doc/etex/base/}). Это также означает, что теперь \emph{очень важно} использовать пакет \pkgname{ifpdf} (работает и с plain, и с \LaTeX) или эквивалентные средства, поскольку просто проверка, определён ли \cs{pdfoutput} или другой примитив, не достаточна для того, чтобы понять, в каком формате генерируется результат. Мы сделали всё возможное для совместимости в этом году, но в будущем году \cs{pdfoutput} может быть определён даже если генерируется DVI. \item У программы pdf\TeX\ (\url{http://pdftex.org}) много новых возможностей: \begin{itemize*} \item Поддержка карт шрифтов изнутри документа при помощи \cs{pdfmapfile} и \cs{pdfmapline}. \item Микротипографические расширения могут быть использованы намного проще.\\ \url{http://www.ntg.nl/pipermail/ntg-pdftex/2004-May/000504.html} \item Все параметры, ранее задававшиеся в специальном конфигурационном файле \filename{pdftex.cfg}, теперь должны быть установлены примитивами, например, в файле \filename{pdftexconfig.tex}. Файл \filename{pdftex.cfg} больше не поддерживается. При изменении файла \filename{pdftexconfig.tex} все форматы \filename{.fmt} должны быть перегенерированы. \item Остальные изменения описаны в руководстве пользователя программой pdf\TeX: \OnCD{texmf/doc/pdftex/manual}. \end{itemize*} \item Примитив \cs{input} в программе \cmdname{tex} (и \cmdname{mf} и \cmdname{mpost}) теперь правильно интерпретирует пробелы и другие специальные символы в двойных кавычках. Вот типичные примеры: \begin{verbatim} \input "filename with spaces" % plain \input{"filename with spaces"} % latex \end{verbatim} См. подробности в руководстве к программе \Webc: \OnCD{texmf/doc/web2c}. \item Поддержка enc\TeX а включена в \Webc\ и, следовательно, во все программы \TeX, которые теперь поддерживают опцию \optname{-enc} (только при генерировании форматов). enc\TeX{} обеспечивает общую перекодировку входного и выходного потоков, что позволяет полную поддержку Unicode (в UTF-8). См. \OnCD{texmf-dist/doc/generic/enctex/} и \url{http://olsak.net/enctex.html}. \item В дистрибутиве появилась новая программа Aleph, сочетающая \eTeX\ и \OMEGA. Краткая информация о ней находится в \OnCD{texmf-dist/doc/aleph/base} и \url{https://texfaq.org/FAQ-enginedev}. Формат для \LaTeX а на основе этой программы называется \textsf{lamed}. \item Последняя версия \LaTeX а включает новую версию лицензии LPPL "--- теперь официально одобренную Debianом. Некоторые другие изменения перечислены в файлах \filename{ltnews} в \OnCD{texmf-dist/doc/latex/base}. \item В дистрибутиве появилась \cmdname{dvipng}, новая программа для перевода DVI в PNG. См. \url{https://www.ctan.org/pkg/dvipng}. \item Мы уменьшили размер пакета \pkgname{cbgreek} до приемлемого набора шрифтов, с согласия по совету автора (Клаудио Беккари). Исключены невидимые, прозрачные и полупрозрачные шрифты, которые относительно редко используются, а нам не хватало места. Полный набор шрифтов можно найти в архиве CTAN (\url{https://www.ctan.org/tex-archive/fonts/greek/cbfonts}). \item Программа \cmdname{oxdvi} удалена из дистрибутива; используйте \cmdname{xdvi}. \item Линки \cmdname{ini} и \cmdname{vir} для программ \cmdname{tex}, \cmdname{mf} и \cmdname{mpost} (например, \cmdname{initex}) больше не создаются. Уже много лет опция \optname{-ini} их успешно заменяет. \item Убрана поддержка платформы \textsf{i386-openbsd}. Так как в портах BSD есть пакет \pkgname{tetex}, и можно пользоваться программами для GNU/Linux и FreeBSD, мы посчитали, что время добровольных сотрудников проекта можно потратить с большей пользой по-другому. \item По крайней мере для платформы \textsf{sparc-solaris} требуется установить переменную окружения \envname{LD\_LIBRARY\_PATH} для работы программ \pkgname{t1utils}. Это вызвано тем, что они написаны на C++, а стандартной директории для бибилиотек C++ в системе нет (это было добавлено до 2004 года, но ранее эта особенность не была документирована). Аналогично, в \textsf{mips-irix} требуются библиотеки MIPSpro~7.4. \end{itemize} \subsubsection{2005} В 2005 году было, как всегда, сделано много изменений в пакетах и программах. Инфраструктура почти не изменилась по сравненению с 2004 годом, но некоторые неизбежные изменения были сделаны. \begin{itemize} \item Были добавлены новые скрипты \cmdname{texconfig-sys}, \cmdname{updmap-sys} и \cmdname{fmtutil-sys}, которые изменяют конфигурационные файлы в системных деревьях. Скрипты \cmdname{texconfig}, \cmdname{updmap} и \cmdname{fmtutil} теперь модифицируют индивидуальные файлы пользователя в \dirname{$HOME/.texlive2005}. \item Были добавлены новые переменные \envname{TEXMFCONFIG} и \envname{TEXMFSYSCONFIG} для указания, где находятся конфигурационные файлы (пользовательские и системные). Таким образом, вам надо переместить туда ваши личные копии \filename{fmtutil.cnf} и \filename{texmf.cnf}. В любом случае положение этих файлов и значения переменных \envname{TEXMFCONFIG} и \envname{TEXMFSYSCONFIG} должны быть согласованы. См. раздел~\ref{sec:texmftrees}, \p.\pageref{sec:texmftrees}. \item В прошлом году мы оставили неопределёнными \verb|\pdfoutput| и другие переменные при генерировании файлов в формате DVI, хотя для этого использовалась программа \cmdname{pdfetex}. В этом году, как и было обещано, это уже не так. Поэтому если ваш документ использует для проверки формата \verb|\ifx\pdfoutput\undefined|, его надо изменить. Вы можете использовать пакет \pkgname{ifpdf.sty} (работает в plain \TeX{} и \LaTeX) или аналогичную логику. \item В прошлом году мы изменили большинство форматов, которые стали выдавать 8-битовые символы. Если вам всё же нужны старый вариант с \verb|^^|, используйте новый файл \filename{empty.tcx}: \begin{verbatim} latex --translate-file=empty.tcx yourfile.tex \end{verbatim} \item Добавлена новая программа \cmdname{dvipdfmx} для перевода из DVI в PDF; это активно поддерживаемая версия программы \cmdname{dvipdfm}, которая пока ещё включена в дистрибутив, но уже не рекомендована. \item Добавлены новые программы \cmdname{pdfopen} и \cmdname{pdfclose}, которые позволяют перегрузить файл PDF в Adobe Acrobat Reader, не перезапуская программу (у других программ для чтения файлов PDF, включая \cmdname{xpdf}, \cmdname{gv} и \cmdname{gsview}, такой проблемы никогда не было). \item Для единообразия мы переименовали переменные \envname{HOMETEXMF} и \envname{VARTEXMF} в \envname{TEXMFHOME} и \envname{TEXMFSYSVAR}. Есть также \envname{TEXMFVAR}, индивидуальная для каждого пользователя (см. первый пункт выше). \end{itemize} \subsubsection{2006--2007} В 2006--2007 главным нововведением была программа Xe\TeX{}, вызываемая как \texttt{xetex} или \texttt{xelatex}; см. \url{https://scripts.sil.org/xetex}. Значительно обновлена программа \MP; предполагаются дополнительные обновления в будущем (\url{https://tug.org/metapost/articles}). Также обновлён pdf\TeX{} (\url{https://tug.org/applications/pdftex}). Форматы \filename{.fmt} и т.д. теперь хранятся в поддиректориях \dirname{texmf/web2c}, а не в самой директории (хотя директория всё ещё включена в поиск форматов, на случай, если там находятся старые файлы). Поддиректории названы по имени программы, например, \filename{tex}, \filename{pdftex}, \filename{xetex}. Это изменение не должно влиять на работу программ. Программа (plain) \texttt{tex} больше не определяет по \texttt{\%\&} в первой строке, какой формат использовать: это всегда Кнутовский \TeX{} (\LaTeX{} и другие ещё используют \texttt{\%\&}). Разумеется, в этом году были, как обычно, сотни обновлений пакетов и программ. Как обычно, обновлённые версии можно найти в сети CTAN (\url{https://ctan.org}). Дерево \TL{} теперь хранится в системе Subversion, и у нас появился WWW-интерфейс для его просмотра. Мы предполагаем, что эта система будет использована для разработки в будущем. Наконец, в мае 2006 года Томас Эссер объявил о прекращении работы над te\TeX ом (\url{https://tug.org/tetex}). Это вызвало всплеск интереса к \TL, особенно среди разработчиков систем GNU/Linux (мы добавили схему \texttt{tetex}, которая устанавливает систему, примерно соответствующую te\TeX у). Мы надеемся, что это приведёт в конечном итоге к улучшению работы в \TeX е для всех. \subsubsection{2008} В 2008 была заново разработана и переписана вся структура \TL{}. Полная информация об установке системы теперь хранится в текстовом файле \filename{tlpkg/texlive.tlpdb}. Помимо прочего, это наконец позволило обновление \TL{} по сети "--- возможность, которая много лет была у программы MiK\TeX{}. Мы предполагаем регулярно обновлять пакеты, поступающие на \CTAN. Включен новый важный <<движок>> Lua\TeX\ (\url{http://luatex.org}); помимо нового уровня вёрстки, это дает прекрасный скриптовый язык для использования как изнутри документов \TeX а, так и отдельно. Поддержка многих платформ на основе UNIX и Windows теперь гораздо более последовательна. В частности, большинство скриптов на языках Perl и Lua теперь доступны под Windows благодаря версии Perlа, распространяемой с \TL{}. Новый скрипт \cmdname{tlmgr} (см. раздел~\ref{sec:tlmgr}) теперь является основным интерфейсом для администрирования \TL{} после установки. Он осуществляет обновление пакетов и перегенерирование форматов, карт шрифтов и языков, включая локальные добавления. В связи с появлением программы \cmdname{tlmgr}, возможности программы \cmdname{texconfig} по редактированию конфигурационных файлов форматов и таблиц переноса отключены. Программа \cmdname{xindy} (\url{http://xindy.sourceforge.net/}) для создания указателей теперь работает на большинстве платформ. Программа \cmdname{kpsewhich} теперь может сообщить обо всех нужных файлах (опция \optname{-all}) и ограничить поиск определенной поддиректорией (опция \optname{-subdir}). Программа \cmdname{dvipdfmx} теперь может извлекать информацию о высоте и ширине текста, если вызвана как \cmdname{extractbb}; это одна из последних возможностей программы \cmdname{dvipdfm}, которой не было у \cmdname{dvipdfmx}. Алиасы \filename{Times-Roman}, \filename{Helvetica} и т.д. убраны. Разные пакеты ожидают от них разного поведения (особенно при разных кодировках), и мы не нашли способа решить эту проблему единообразно. Формат \pkgname{platex} убран из-за конфликта с японским пакетом \pkgname{platex}; теперь основная поддержка польского языка осуществляется через пакет \pkgname{polski}. Пулы строковых констант \web\ теперь компилируются в сами программы для удобства обновлений. Наконец, добавлены изменения, сделанные Дональдом Кнутом в его <<Настройке \TeX а 2008 года>>, см. \url{https://tug.org/TUGboat/Articles/tb29-2/tb92knut.pdf}. \subsubsection{2009} Начиная с 2009 года по умолчанию Lua\AllTeX\ теперь создает файлы в формате PDF, чтобы полнее использовать поддержку шрифтов в формате OpenType. Чтобы получить результат в формате DVI, используйте программы \code{dviluatex} и \code{dvilualatex}. Страница Lua\TeX\ находится на \url{http://luatex.org}. Программа Omega и формат Lambda были после консультаций с авторами исключены из дистрибутива. В дистрибутиве остались Aleph и Lamed, а также утилиты из набора Omega. Включена новая версия шрифтов AMS в формате Type~1. Она включает Computer Modern: были учтены изменения, которые Кнут внес в исходные параметры для программы Metafont, а также обновлены хинты. Шрифты Euler были полностью перерисованы Германом Цапфом (см. \url{https://tug.org/TUGboat/Articles/tb29-2/tb92hagen-euler.pdf}). Во всех случаях метрики шрифтов не изменились. Страница шрифтов AMS находится на \url{https://www.ams.org/tex/amsfonts.html}. Новая графическая оболочка \TeX{}works включена в дистрибутив для Windows и Mac\TeX. Информация о версиях для других платформ и дополнительная документация находится на \url{https://tug.org/texworks}. Это мультиплатформенная оболочка, вдохновленная программой TeXShop для \MacOSX{} и ориентированная на упрощение работы с \TeX{}ом. Графическая программа Asymptote включена в дистрибутив для нескольких платформ. Она основана на языке представления графики, напоминающем MetaPost, но с поддержкой трехмерных объектов и другими возможностями. Её страница находится на \url{https://asymptote.sourceforge.io}. Программа \code{dvipdfm} была заменена программой \code{dvipdfmx}; если вызвать последнюю как \code{dvipdfm}, она работает в специальном режиме эмуляции \code{dvipdfm}. Программа \code{dvipdfmx} включает поддержку китайского, японского и корейского языков (CJK) и много других изменений по сравнению с \code{dvipdfm}. В дистрибутив включены программы для \pkgname{cygwin} и \pkgname{i386-netbsd}, в то время как другие варианты BSD были исключены: нам сказали, что пользователи OpenBSD и FreeBSD устанавливают \TeX, пользуясь пакетными менеджерами. Кроме того, оказалось сложным создать программы, которые бы работали под разными версиями этих систем. Ещё несколько изменений: мы теперь используем архиватор \code{xz}, стабильную замену для \code{lzma} (\url{https://tukaani.org/xz/}); знак доллара |$| теперь допустим в именах файлов, если результат не может %$ быть истолкован как известная перемена окружения; библиотека Kpathsea теперь параллелизована (это нужно для новой версии программы MetaPost); процесс компиляции теперь полностью основан на Automake. Последнее замечание о прошлом: все выпуски \TL{} вместе с дополнительными материалами вроде обложек \CD{} хранятся на \url{ftp://tug.org/historic/systems/texlive}. \url{ftp://tug.org/historic/systems/texlive}. \subsubsection{2010} \label{sec:2010news} % keep with 2010 Начиная с 2010 года файлы в формате PDF по умолчанияю создаются в версии PDF~1.5. Это верно для всех вариантов \TeX а, которые способны создавать файлы PDF, а также для \code{dvipdfmx}. Чтобы получать файлы в формате PDF~1.4, используйте \LaTeX овский пакет \pkgname{pdf14} или команду |\pdfminorversion=4|. pdf\AllTeX\ теперь \emph{автоматически} конвертирует файлы в формате Encapsulated PostScript (EPS) в PDF при помощи пакета \pkgname{epstopdf}, если используется конфигурационный файл \code{graphics.cfg} в \LaTeX е и требуется вывод в формате PDF. Вы можете отказаться от загрузки пакета \code{epstopdf}, поместив перед объявлением \cs{documentclass} команду |\newcommand{\DoNotLoadEpstopdf}{}| (или |\def...|). Он также не загружается, если используется пакет \pkgname{pst-pdf}. См. также документацию к пакету \pkgname{epstopdf} (\url{https://ctan.org/pkg/epstopdf-pkg}). С этим связано ещё одно изменение: теперь по умолчанию разрешено вызывать из \TeX а несколько внешних команд (при помощи механизма \cs{write18}). Это \code{repstopdf}, \code{makeindex}, \code{kpsewhich}, \code{bibtex} и \code{bibtex8}. Список определен в \code{texmf.cnf}. В случае, если необходимо запретить все текие команды, можно убрать соответствующую опцию при установке системы (см. раздел~\ref{sec:options}) или переконфигурировать систему после установки командой |tlmgr conf texmf shell_escape 0|. Ещё одно изменение, связанное с этим: теперь \BibTeX\ и Makeindex по умолчанию отказываются записывать в файлы, лежащие в произвольной директории системы (как и сам \TeX). Поэтому их можно запускать через механизм \cs{write18}. Чтобы изменить это правило, можно установить переменную окружения \envname{TEXMFOUTPUT} или изменить значение параметра |openout_any|. \XeTeX\ теперь поддерживает оптическое выравнивание полей, как это умеет делать pdf\TeX. (Шрифты с вариантами пока не поддерживаются). По умолчанию, \prog{tlmgr} теперь сохраняет предыдущую версию каждого пакета после апгрейда (\code{tlmgr option autobackup 1}), поэтому ошибки можно <<откатить назад>> командой \code{tlmgr restore}. Если у вас нет места на диске для этих копий, запустите \code{tlmgr option autobackup 0}. Новые программы: p\TeX\ и пакет утилит для набора японских текстов, программа \BibTeX{}U для варианта \BibTeX а с поддержкой Юникода, утилита \prog{chktex} (первая версия на \url{http://baruch.ev-en.org/proj/chktex}) для проверки документов, созданных \AllTeX ом, программа \prog{dvisvgm} (\url{https://dvisvgm.de}) для перевода из формата DVI в формат SVG. Включены программы для следующих новых платформ: \code{amd64-freebsd}, \code{amd64-kfreebsd}, \code{i386-freebsd}, \code{i386-kfreebsd}, \code{x86\_64-darwin}, \code{x86\_64-solaris}. Об одном изменении в \TL{} 2009 мы забыли упомянуть в свое время: многочисленные программы конвертера \TeX4ht (\url{https://tug.org/tex4ht}) были убраны из директорий для бинарников; все теперь делается одной программой \code{mk4ht}. Наконец, релиз \TL{} на \TK\ \DVD\ уже нельзя использовать <>, непосредственно с диска (что может показаться странным). Кстати, из-за этого установка с \DVD\ будет теперь значительно быстрее. \subsubsection{2011} В 2011 году было сделано относительно немного изменений. Программы для \MacOSX\ (\code{universal-darwin} и \code{x86\_64-darwin}) работают теперь только под Leopard или младшей системой; Panther и Tiger больше не поддерживаются. Программа \code{biber} для обработки библиографических списков добавлена для всех платформ. Она тесно связана с пакетом \code{biblatex}, который предлагает совершенно новый способ обработки библиографий из \LaTeX а. Программа MetaPost (\code{mpost}) больше не создает файлов \code{.mem}. Нужные файлы, например \code{plain.mp}, теперь просто перечитываются при каждом запуске. Это связано с поддержкой MetaPost как библиотеки "--- ещё одно важное, но прозрачное для пользователя изменение. Версия программы \code{updmap}, написанная на Перле, ранее использованная только под Windows, теперь улучшена и устанавливается для всех платформ. Это должно быть прозрачно для пользователя "--- разве что программа теперь работает гораздо быстрее. Программы \cmdname{initex} и \cmdname{inimf} были возвращены (но другие варианты \cmdname{ini*} "--- нет). % \subsubsection{2012} Программа \code{tlmgr} теперь поддерживает обновления из нескольких сетевых репозиториев. Эти возможности подробнее описаны в соответствующем разделе \code{tlmgr help}. Параметр \cs{XeTeXdashbreakstate} теперь по умолчанию равен~1, как для \code{xetex}, так и для \code{xelatex}. Это разрешает переход на новую строку после тире, что всегда было разрешено в plain TeX, \LaTeX, Lua\TeX\ и т.д. Старые документы в \XeTeX е, для которых нужно в точности сохранить старое форматирование, теперь должны будут явно установить \cs{XeTeXdashbreakstate} равным~0. Файлы, создаваемые программами \code{pdftex} и \code{dvips}, теперь могут быть больше 2~гигабайт. 35 стандартных шрифтов PostScriptа теперь по умолчанию включены в файлы, создаваемые \code{dvips}, так как сейчас существует много разных версий этих <<стандартных>> шрифтов. К программам, которые могут по умолчанию вызываться в ограниченном режиме через \cs{write18}, добавлена \code{mpost}. Файл \code{texmf.cnf} теперь ищется ещё и в директории \filename{../texmf-local}, т.\,е. если файл \filename{/usr/local/texlive/texmf-local/web2c/texmf.cnf} существует, он будет использован. Скрипт \code{updmap} теперь читает файлы \code{updmap.cfg} в каждом поддереве директорий, вместо одного глобального конфигурационного файла. Это изменение должно быть прозрачным для пользователя, если вы не редактировали вручную файлы \code{updmap.cfg}. Подробнее объяснено в документации, выдаваемой командой |updmap --help|. Платформы: добавлены \pkgname{armel-linux} и \pkgname{mipsel-linux}; из основного дистрибутива исключены платформы \pkgname{sparc-linux} и \pkgname{i386-netbsd}. % \subsubsection{2013} Изменена структура директорий: директория \code{texmf/} объединена с \code{texmf-dist/}. Переменные \code{TEXMFMAIN} и \code{TEXMFDIST} указывают теперь на \code{texmf-dist/}, Многие небольшие языковые коллекции объединены для упрощения установки. \MP: добавлена поддержка записи в PNG и чисел с плавающей точой (IEEE double). Lua\TeX: обновлено до Lua~5.2 и включена новая библиотека (\code{pdfscanner}) для включения страниц в формате PDF и многого другого (см. страницы Lua\TeX\ на WWW). \XeTeX\ (также см. страницы на WWW): \begin{itemize*} \item Для шрифтов теперь используется библиотека HarfBuzz вместо библиотеки ICU (ICU все еще используется для поддержки кодировок на входе, верстки справа налево и переносов в кодировке Unicode). \item Вместо SilGraphite теперь используется HarfBuzz и Graphite2. \item На Макинтоше теперь вместо устаревшего ATSUI используется Core Text. \item Если в системе есть шрифты с совпадающими названиями, предпочтение отдается TrueType/OpenType перед Type1. \item Исправлены расхождения между \XeTeX\ и \code{xdvipdfmx} в поиске шрифтов. \item Поддержка математики в OpenFonts. \end{itemize*} \cmdname{xdvi}: теперь использует FreeType вместо \code{t1lib}. \pkgname{microtype.sty}: добавлена поддержка \XeTeX\ (вынесение знаков препинания на поля) и Lua\TeX\ (вынесение знаков препинания на поля, манипуляции со шрифтами, разрядка), помимо других улучшений. \cmdname{tlmgr}: новый механизм \code{pinning} для работы с несколькими репозиториями; см. \verb|tlmgr --help| и \url{https://tug.org/texlive/doc/tlmgr.html#MULTIPLE-REPOSITORIES}. Платформы: добавлены или восстановлены \pkgname{armhf-linux}, \pkgname{mips-irix}, \pkgname{i386-netbsd} и \pkgname{amd64-netbsd}. Убрана \pkgname{powerpc-aix}. \subsection{2014} 2014 год ознаменовался новыми поправками от Кнута; это касается всех програм, но наиболее видимое изменение "---~восстановлены слова \code{preloaded format} в баннере. Как пишет Кнут, это теперь означает, что формат \emph{может} быть загружен по умолчанию, а не то, что он на самом деле загружен; этот формат может быть изменен. pdf\TeX: новый параметр для подавления предупреждений \cs{pdfsuppresswarningpagegroup}; новые примитивы для специальных пробелов, чтобы помочь переверстке PDF \cs{pdfinterwordspaceon}, \cs{pdfinterwordspaceoff}, \cs{pdffakespace}. Lua\TeX: значительные изменения в механизме загрузки шрифтов и переноса. Самое большое изменение "---~добавление нового движка \code{luajittex} и его собратьев \code{texluajit} и \code{texluajitc}. Они используют just-in-time компилятор (см. подробную статью \url{http://tug.org/TUGboat/tb34-1/tb106scarso.pdf}). \code{luajittex} все еще в состоянии разработки, он поставляется не для всех систем и существенно менее стабилен, чем \code{luatex}. Ни мы, ни разработчки не рекомендуем использование его для чего бы то ни было, кроме экспериментов. \XeTeX: сейчас на всех платформах поддерживаются одни и те же форматы графики (включая Mac), исключена декомпозиция составных символов Юникода, шрифты OpenType теперь предпочитаются Graphite для совместимости с предыдущими версиями \XeTeX а. \MP: поддерживается новая система нумерации \code{decimal}, наряду с внутренней \code{numberprecision}; новое определение \code{drawdot} в \filename{plain.mp} от Кнута; исправлены баги в экспорте SVG и PNG и др. Утилита \cmdname{pstopdf} (Con\TeX{}t) будет убрана в качестве самостоятельной команды после релиза из-за конфликта с системной командой под тем же названием. Ее все еще можно будет использовать как \code{mtxrun --script pstopdf}. Утилиты \cmdname{psutils} были существенно обновлены новым разработчиком. В результате несколько редко используемых утилит (\code{fix*}, \code{getafm}, \code{psmerge}, \code{showchar}) сейчас находятся в директории \dirname{scripts/}, а не не в общей директории с другими программами (возможно, это будет изменено в будущем). Добавлен новый скрипт \code{psjoin}. Наш вариант Mac\TeX\ (раздел~\ref{sec:macosx}) больше не включает специфических для макинтошей пакетов шрифтов Latin Modern и TeX Gyre, так как пользователь может легко включить эти шрифты в систему. Мы также убрали программу \cmdname{convert} из пакета ImageMagick, так как \TeX4ht (точнее, \code{tex4ht.env}) теперь использует Ghostscript напрямую. Коллекция \pkgname{langcjk} для китайского, японского и корейского языков разбита на отдельные коллекции меньшего размера. Платформа \pkgname{x86\_64-cygwin} добавлена, \pkgname{mips-irix} убрана; Микрософт больше не поддерживает Windows XP, так что наши программы под ними могут в любой момент перестать работать. \subsection{2015} \LaTeXe\ теперь по умолчанию включает в себя изменения, которые раньше делались при загрузпе пакета \pkgname{fixltx2e} (который теперь пуст). Новый пакет \pkgname{latexrelease} и другие механизмы позволяют управлять этим процессом. Подробности см. в \LaTeX\ News \#22 и документации по изменениям в \LaTeX{}е. Кстати, пакеты \pkgname{babel} и \pkgname{psnfss}, хотя и относятся к базовому дистрибутиву \LaTeX{}а, поддерживаются отдельно и не затронуты этими изменениями (и должны работать, как раньше). Теперь \LaTeXe\ включает в себя конфигурацию поддержки Юникода (что считается буквами, именами примитивов и т.д.), которая раньше была частью \TL. Это изменение должно быть прозрачно для пользователей; несколько низкоуровневых команд было переименовано или удалено, но поведение системы измениться не должно. pdf\TeX: Теперь поддерживает JPEG Exif, а также JFIF; не печатает предупреждений, если \cs{pdfinclusionerrorlevel} отрицателен; синхронизирован с \prog{xpdf}~3.04. Lua\TeX: Новая библиотека \pkgname{newtokenlib} для сканирования токенов; исправлены баги в генераторе случайных чисел и других местах. \XeTeX: Улучшена обработка графики; в первую очередь используется программа \prog{xdvipdfmx}; изменены внутренние коды \code{XDV}. MetaPost: Новая система счисления \code{binary}; новые программы \prog{upmpost} и \prog{updvitomp} для японского языка, аналогичные \prog{up*tex}. Mac\TeX:\ Обновлен пакет Ghostscript для поддержки CJK. Панель выбора дистрибутива \TeX\ теперь работает под Yosemite (\MacOSX~10.10). Пакеты шрифтов в ресурсах (без расширения в имени файла) более не поддерживаются в \XeTeX; пакеты в данных (\code{.dfont}) все еще поддерживаются. Инфраструктура : скрипт \prog{fmtutil} теперь читает \filename{fmtutil.cnf} в каждом дереве, как \prog{updmap}. Скрипты \prog{mktex*} Web2C (включая \prog{mktexlsr}, \prog{mktextfm}, \prog{mktexpk}) теперь предпочитают программы в собственной директории, вместо того, чтобы всегда использовать \envname{PATH}. Платформы: \pkgname{*-kfreebsd} удалены, так как теперь \TL\ можно установить на них через системный менеджер пакетов. Поддержку некоторых дополнительных платформ можно найти на (\url{https://tug.org/texlive/custom-bin.html}). Кроме того, программы для некоторых платформ не попали на \DVD\ (просто чтобы сэкономить место), но могут быть установлены обычным способом по сети. \subsection{2016} Lua\TeX: Масса изменений у примитивов, как переименования, так и удаления, а также изменения структуры нод. Изменения описаны в статье Ханса Хагена, ``Lua\TeX\ 0.90 backend changes for PDF and more'' (\url{https://tug.org/TUGboat/tb37-1/tb115hagen-pdf.pdf}); см. также подробности в справочнике к программе Lua\TeX, \OnCD{texmf-dist/doc/luatex/base/luatex.pdf}. Metafont: Новые экспериментальные программы MFlua и MFluajit, интегрирующие Lua и \MF, пока в стадии разработки. MetaPost: Исправление багов и подготовка к выпуску MetaPost~2.0. Поддержка \code{SOURCE\_DATE\_EPOCH} для всех вариантов, кроме Lua\TeX\ (где она ожидается в следующей версии) и классического \code{tex} (где она опущена намеренно): если переменная окружения \code{SOURCE\_DATE\_EPOCH} установлена, она используется для дат в PDF. Если также установлена переменная \code{SOURCE\_DATE\_EPOCH\_TEX\_PRIMITIVES}, то переменная \code{SOURCE\_DATE\_EPOCH} используется для примитивов \cs{year}, \cs{month}, \cs{day}, \cs{time}. Руководство пользователя pdf\TeX\ содержит подробную информацию и примеры. pdf\TeX: новые примитивы \cs{pdfinfoomitdate}, \cs{pdftrailerid}, \cs{pdfsuppressptexinfo} для информации в PDF, которая меняется при каждом запуске программы. Эти нововведния касаются только PDF, а не DVI. Xe\TeX: Новые примитивы \cs{XeTeXhyphenatablelength}, \cs{XeTeXgenerateactualtext},\\ \cs{XeTeXinterwordspaceshaping}, \cs{mdfivesum}; максимальное количество классов букв увеличено до 4096; увеличен байт номера версии DVI. Другие утилиты: \begin{itemize*} \item \code{gregorio}: новая программа, часть пакета \code{gregoriotex} для набора григорианской хоральной музыки. По умолчанию включена в список \code{shell\_escape\_commands}. \item \code{upmendex}: программа для создания указателей, в основном совместимая с программой \code{makeindex}, но с поддержкой сортировки по правилам Юникода. \item \code{afm2tfm} теперь делает поправки к высоте из-за диакритических знаков только в сторону увеличения; новая опция \code{-a} удаляет поправки \item \code{ps2pk} теперь может работать с расширенными шрифтами в формате PK/GF. \end{itemize*} Mac\TeX:\ Убрана панель выбора дистрибутива; теперь эту роль выполняет утилита \TL. Обновлены аппликации, добавлен скрипт \code{cjk-gs-integrate} для интегрирования шрифтов CJK (китайские, японские, корейские) в Ghostscript. Инфраструктура: Добавлена поддержка конфигурации \code{tlmgr} на уровне системы, проверки контрольных сумм пакетов. Если есть системная поддержка GPG, то проверяются криптографические подписи при обновлениях из сети, как при установке, так и при работе \code{tlmgr}. Если система не поддерживает GPG, обновления происходят по-старому. Платформы: убраны \code{alpha-linux} и \code{mipsel-linux}. \subsection{2017} Lua\TeX: Больше контроля над версткой и алгоритмами; на некоторых платформах добавлена библиотека \code{ffi} для динамической загрузки программ. pdf\TeX: Переменная окружения |SOURCE_DATE_EPOCH_TEX_PRIMITIVES|, добавленная в прошлом году, переименована в |FORCE_SOURCE_DATE|, с той же функцией; если набор токенов \cs{pdfpageattr} содержит строку \code{/MediaBox}, то другое значение \code{/MediaBox} не печатается. Xe\TeX: Матемтатика для Unicode/OpenType теперь основана на таблице MATH библиотеки HarfBuzz. Убраны некоторые баги. Dvips: Последние значения размеров страницы теперь имеют преимущество, что делает поведение программы таким же, как для \code{dvipdfmx} и соотвествует коду макропакетов; опция \code{-L0} (или \code{L0} в конфигурационном файле) восстанавливает старое поведение, когда имели преимущество первые значения. ep\TeX, eup\TeX: Новые примитивы из pdf\TeX а: \cs{pdfuniformdeviate}, \cs{pdfnormaldeviate}, \cs{pdfrandomseed}, \cs{pdfsetrandomseed}, \cs{pdfelapsedtime}, \cs{pdfresettimer}. Mac\TeX:\ Начиная с этого года, Mac\TeX\ для платформы |x86_64-darwin| поддерживает только версии \MacOSX, для которых Apple выпускает обновления. Сейчас это означает Yosemite, El~Capitan и Sierra (10.10 и новее). Программы для более старых версий \MacOSX\ не включены в Mac\TeX, но есть в \TeX\ Live (|x86_64-darwinlegacy|, \code{i386-darwin}, \code{powerpc-darwin}). Инфраструктура: Дерево \envname{TEXMFLOCAL} теперь читается до \envname{TEXMFSYSCONFIG} и \envname{TEXMFSYSVAR} (по умолчанию); мы надеемся, что это лучше соотвествует интуитивным представлениям о том, как локальные настройки имеют преимущество перед системными. Кроме того, у \code{tlmgr} новый режим \code{shell} для использования в интерактивном режиме и скриптах, и новая команда \code{conf auxtrees} для добавления и удаления новых деревьев. \code{updmap} и \code{fmtutil}: Эти скрипты теперь выдают предупреждение, когда вызываются без указания либо так называемого системного режима (\code{updmap-sys}, \code{fmtutil-sys}, или опция \code{-sys}), либо пользовательского режима (\code{updmap-user}, \code{fmtutil-user}, или опция \code{-user}). Мы надеемся помочь с частой проблемой, когда по ошибке запускается пользовательский режим, после чего системные обновления перестают влиять на настройки пользователя. См. \url{https://tug.org/texlive/scripts-sys-user.html}. \code{install-tl}: По умолчания личные деревья на Макинтошах устанавливаются в обычную для Mac\TeX а папку (|~/Library/...|). Новая опция \code{-init-from-profile} начинает установку с данного шаблона. Новая команда \code{P} сохраняет шаблон. Sync\TeX: Временные файлы теперь называются по шаблону \code{foo.synctex(busy)} вместо \code{foo.synctex.gz(busy)} (опущено \code{.gz}). Скрипты, которые удаляют временные файлы, могут нуждаться в обновлении. Другие программы: \code{texosquery-jre8} "---~новая программа, которая используется для получения информации о локали и системы изнутри \TeX а. По умолчанию она включена в список |shell_escape_commands|, которые можно вызывать из \TeX а. (Более старые версии JRE поддерживаются texosquery, но их нет в списке, так как они больше не поддерживаются Oracle) Платформы: см Mac\TeX\ выше. \subsubsection{2018} Kpathsea: теперь по умолчанию поиск файлов вне системных директорий ведется без учета регистра; чтобы вернуться к старому поведению, измените в \code{texmf.cnf} или в переменных окружения значение \code{texmf\_casefold\_search} на \code{0}. См. подробности в руководстве пользователя библиотекой Kpathsea (\url{https://tug.org/kpathsea}). ep\TeX, eup\TeX: Новый примитив \cs{epTeXversion}. Lua\TeX: Подготовка к переходу на Lua 5.3 в 2019 году: программа \code{luatex53} собрана для большинства платформ, но для использования ее надо переименовать в \code{luatex}. В качестве альтернативы можно использовать файлы из \ConTeXt\ Garden (\url{https://wiki.contextgarden.net}); см. подробности по ссылке выше. MetaPost: Исправлены баги с неправильным направлением обхода в форматах TFM и PNG. pdf\TeX: Теперь возможно использовать векторы кодировки для растровых шрифтов; текущая директория не записывается в PDF ID; исправлены баги для\cs{pdfprimitive} и других команд. Xe\TeX: Подержка \code{/Rotate} для PDF; ненулевой код ошибки при аварийной остановке; масса сложных исправлений в UTF-8 и в других примитивах. Mac\TeX:\ См. список изменений в поддержке версий MacOS ниже. Кроме того, файлы, которые Mac\TeX\ устанавливает в \code{/Applications/TeX/}, были реорганизованы для большей ясности. Сейчас туда на верхнем уровне устанавливаются четыре программы с GUI (BibDesk, LaTeXiT, \TeX\ Live Utility и TeXShop) и директории с дополнительными программами и документацией. \code{tlmgr}: новые оболочки \code{tlshell} (Tcl/Tk) и \code{tlcockpit} (Java); выдача в формате JSON; \code{uninstall} сейчас синоним для \code{remove}; новая опция \code{print-platform-info}. Платформы: \begin{itemize*} \item Удалены: \code{armel-linux}, \code{powerpc-linux}. \item \code{x86\_64-darwin} поддерживает 10.10--10.13 (Yosemite, El~Capitan, Sierra и High~Sierra). \item \code{x86\_64-darwinlegacy} поддерживает 10.6--10.10 (хотя для 10.10 рекомендуется \code{x86\_64-darwin}). Поддержка для 10.5 (Leopard) убрана, т.е. удалены и \code{powerpc-darwin}, и \code{i386-darwin platforms}. \item Windows: XP больше не поддерживается. \end{itemize*} \subsection{2019} Kpathsea: более аккуратная работа с переменными; новая переменная \code{TEXMFDOTDIR} вместо точки <<\code{.}>> позволяет легко добавлять поддиректории для поиска; см. комментарии в файле \code{texmf.cnf}). ep\TeX, eup\TeX: Новые примитивы \cs{readpapersizespecial} и \cs{expanded}. Lua\TeX: Теперь программа использует Lua 5.3, с соответствующими изменениями в арифметике и интерфейсе. Для чтения PDF теперь используется собственная библиотека pplib, что позволило избавиться от зависимости от библиотеки poppler (и C++). Соответственно изменен интерфейс к Lua. MetaPost: теперь команда \code{r-mpost} распознается как вызов \code{mpost} с опцией \code{--restricted}, и команда добавлена к списку команд, доступных из-под \TeX а. Минимальная точность теперь 2 в десятичном и двоичном режимах. Двоичный режим уже не доступен из-под MPlib, но все еще доступен для MetaPost. pdf\TeX: Новый примитив \cs{expanded}; если новый параметер \cs{pdfomitcharset} равен 1, то строка \code{/CharSet} не добавляется к PDF, так как сложно гарантировать ее правильность, которую требуют стандарты PDF/A-2 и PDF/A-3. Xe\TeX: Новые примитивы \cs{expanded}, \cs{creationdate}, \cs{elapsedtime}, \cs{filedump}, \cs{filemoddate}, \cs{filesize}, \cs{resettimer}, \cs{normaldeviate}, \cs{uniformdeviate}, \cs{randomseed}; теперь \cs{Ucharcat} может производить активные символы. code{tlmgr}: Поддержка программы \code{curl}, использование \code{lz4} и \code{gzip}, если они есть, вместо \code{xz} для локальных бэкапов, предпочтение системных программ для сжатия и скачивания перед программами \TL, если не установлена переменная окружения \code{TEXLIVE\_PREFER\_OWN}. \code{install-tl}: Новая опция \code{-gui} (без аргумента) теперь работает по умолчанию под Windows и MacOS X и вызывает оболочку Tcl/TK (см разделы~\ref{sec:basic} и~\ref{sec:graphical-inst}). Утилиты: \begin{itemize*} \item \code{cwebbin} (\url{https://ctan.org/pkg/cwebbin}) "---~новая версия CWEB под \TeX\ Live, с поддержкой новых диалектов языка, и программой \code{ctwill} для создания мини-индексов. \item \code{chkdvifont}: информация о шрифтах в файлах \dvi{} а также tfm/ofm, vf, gf, pk. \item \code{dvispc}: делает страницы файла DVI независимыми по отношению к specials. \end{itemize*} Mac\TeX:\ \code{x86\_64-darwin} теперь поддерживает \MacOSX\ 10.12 и выше (Sierra, High Sierra, Mojave); \code{x86\_64-darwinlegacy} все еще поддерживает 10.6 и выше. Спелл-чекер Excalibur больше не включен в пакет, так как ему требуется поддержка 32-битовых программ. Платформы: удалена \code{sparc-solaris}. \subsection{2020} Общие изменения: \begin{itemize} \item Примитив \cs{input} primitive во всех движках, включая \texttt{tex}, теперь понимает имена файлов, разделенные специфическим для системы способом. Стандартный способ, когда имена файлов разделены пробелами, не изменился. Такой способ раньше был имплементирован в движке Lua\TeX; теперь он есть для всех движков. Двойные кавычки ASCII (\texttt{"}) удаляются из имени файла, но в остальном имя файла не изменяется. Сейчас это не влияет на команду \cs{input} в \LaTeX е, так как последняя "---~макро, преопределяющее примитив \cs{input}. \item Новая опция \texttt{--cnf-line} для \texttt{kpsewhich}, \texttt{tex}, \texttt{mf}, и других программ позволяет задать любые конфигурационные изменения в командной строке. \item Добавление примитивов к движкам в этом и предыдущих релизах приведет к общей функциональности примитивов во всех движках (\textsl{\LaTeX\ News \#31}, \url{https://latex-project.org/news}). \end{itemize} ep\TeX, eup\TeX: Новые примитивы \cs{Uchar}, \cs{Ucharcat}, \cs{current(x)spacingmode}, \cs{ifincsname}; исправлены \cs{fontchar??} и \cs{iffontchar}. Только для eup\TeX: \cs{currentcjktoken}. Lua\TeX: Интеграция с библиотекой HarfBuzz в новых движках \texttt{luahbtex} (используется для \texttt{lualatex}) и \texttt{luajithbtex}. Новые примитивы: \cs{eTeXgluestretchorder}, \cs{eTeXglueshrinkorder}. pdf\TeX: Новый примитив \cs{pdfmajorversion}; он только меняет номер версии в файле PDF, но не влияет на сам PDF. \cs{pdfximage} и аналогичные примитивы теперь ищут файлы там же, где и \cs{openin}. p\TeX: Новые примитивы \cs{ifjfont}, \cs{iftfont}. Также для ep\TeX, up\TeX, eup\TeX. Xe\TeX: Исправлены \cs{Umathchardef}, \cs{XeTeXinterchartoks}, \cs{pdfsavepos}. Dvips: Новые кодировки для растровых шрифтов, что улучшает копирование текстов (\url{https://tug.org/TUGboat/tb40-2/tb125rokicki-type3search.pdf}). Mac\TeX:\ Mac\TeX\ и \texttt{x86\_64-darwin} теперь требуют MacOS 10.13 или выше (High~Sierra, Mojave, и Catalina); \texttt{x86\_64-darwinlegacy} поддерживает 10.6 и выше. Mac\TeX\ нотаризован, и программы, вызываемые из командной строки, усилены, как требуется фирмой Apple. BibDesk и \TeX\ Live Utility не в Mac\TeX е, так как они не нотаризованы, но в файле \filename{README} указано, откуда их можно скачать. \code{tlmgr} и инфраструктура: \begin{itemize*} \item Автоматическая вторая попытка скачать пакеты, которые не удалось скачать в первый раз. \item Новая опция \texttt{tlmgr check texmfdbs} для проверки файлов \texttt{ls-R} и \texttt{!!} в каждом дереве. \item Использование номера версии для файлов пакетов, как \texttt{tlnet/archive/\textsl{pkgname}.rNNN.tar.xz}; это должно быть прозрачно для пользователей, но это кардинально меняет работу дистрибутива. \item Информация о дате \texttt{catalogue-date} больше не берется из \TeX~каталога, так как она часто не имеет отношения к обновлению пакета. \end{itemize*} \htmlanchor{news} \subsection{Настоящее: 2021} \label{sec:tlcurrent} Общие изменения: \begin{itemize} \item Добавлены последние изменения Дональда Кнута в его плановой настройке программ \TeX\ и \MF (\url{https://tug.org/TUGboat/tb42-1/tb130knuth-tuneup21.pdf}. Они также есть в архиве CTAN (пакеты \code{knuth-dist} и \code{knuth-local}). Как и ожидалось, изменения касаются только экзотических ситуаций и не влияют на работу программ в реальных условиях. \item Для всех движков, кроме оригинального \TeX{}а, установка параметра \cs{tracinglostchars} на 3 или больше приведет к ошибке, а не только предупреждению в логе, и будет указан шестнадцатеричный код отсутствующего символа. \item Для всех движков, кроме оригинального \TeX{}а, добавлен новый целочисленный параметер \cs{tracingstacklevels}. Если он положителен, и параметр \cs{tracingmacros} положителен, в логе появляется префикс, указывающий глубину макроподстановки (например, \verb|~..| для глубины 2). Кроме того, трассировка не делается для глубины $\ge$ значению этого параметра. \end{itemize} Aleph: Основанный на движке Aleph формат \LaTeX{}а, \code{lamed}, исключен из дистрибутива. Сама программа \code{aleph} включена и поддерживается. Lua\TeX: \begin{itemize*} \item Lua 5.3.6. \item В \cs{tracingmacros} обработка уровня вложенности реализована как обобщенный вариант новой переменной \cs{tracingstacklevels}. \item Специально отмечаются математические глифы, чтобы не применять к ним текстовые преобразования. \item Удалены компенсация ширины и поправки на италики в коде для традиционной математики. \end{itemize*} MetaPost: \begin{itemize*} \item Переменная |SOURCE_DATE_EPOCH| для воспроизводимого результата, не зависящего от даты. \item Удалена ошибочная конечная \texttt{\%} в mpto. \item Документирован ключ \texttt{-T}, добавлены другие изменения в документацию. \item Значение \texttt{epsilon} изменено в двоичном и десятичном режиме, так что |mp_solve_rising_cubic| теперь работает, как ожидается. \end{itemize*} pdf\TeX{}: \begin{itemize*} \item Новые примитивы \cs{pdfrunninglinkoff} и \cs{pdfrunninglinkon} для того, чтобы отключать гиперлинки, например, в заголовках страниц. \item Предупреждение вместо ошибки, когда \cs{pdfendlink} и \cs{pdfstartlink} оказываются на разных уровнях вложенности. \item Таблица, созданная \cs{pdfglyphtounicode}, теперь сохраняется в файле \texttt{fmt}. \item Изменения в коде: удалена поддержка библиотеки \texttt{poppler}, так как оказалось слишком сложно синхронизироваться с ее изменениями. В самом \TeX Live pdf\TeX\ всегда использует \texttt{libs/xpdf}, сокращенный и адаптированнй код из \texttt{xpdf}. \end{itemize*} Xe\TeX{}: Исправления в кернинге математических формул. Dvipdfmx: \begin{itemize*} \item Ghostscipt теперь вызывается в безопасном режиме. Если вы полностью доверяете всем входным файлам, вы можете вернуться к небезопасному режиму при помощи ключа \verb|-i dvipdfmx-unsafe.cfg|. Это необходимо, в частности, для работы PSTricks под \XeTeX ом, где нужно использовать \verb|xetex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" ...| \item Если графический файл не найден, остановка с соответствующим кодом выхода. \item Расширенный синтаксис команд поддержки цвета. \item Команды для управления |ExtGState|. \item Поддержка совместимости с \code{pdfcolorstack} и \code{pdffontattr}. \item Экспериментальная поддержка \code{dviluatex}а теперь включает |fnt_def|. \item Поддержка новых возможностей виртуальных шрифтов для дефолтных вариантов японских шрифтов. \end{itemize*} Dvips: \begin{itemize*} \item По умолчанию заголовок документа в PostScriptе теперь название файла. Это можно изменить опцией \texttt{-title}. \item Если файл \texttt{.eps} или другой графический файл не найден, остановка с соответствующим кодом выхода. \item Поддержка новых возможностей виртуальных шрифтов для дефолтных вариантов японских шрифтов. \end{itemize*} Mac\TeX{}: Mac\TeX{} и новый набор программ \texttt{universal-darwin} теперь требуют macOS 10.14 или выше (Mojave, Catalina, или Big~Sur). Директория |x86_64-darwin| теперь отсутствует. Директория |x86_64-darwinlegacy|, которая устанавливается только юниксовским \texttt{install-tl}, совместима с 10.6 и выше. Это важный водораздел для Макинтошей, так как Эппл стала выпускать машины на основе процессора ARM в ноябре 2020 года и собирается продавать и поддерживать машины на основе ARM и Intel в обозримом будущем. Все программы в \texttt{universal-darwin} содержат код для ARM и Intel, собранный из одних и тех же исходников. Дополнительные программы Ghostscript, LaTeXiT, \TeX{} Live Utility, и TeXShop поддерживают обе архитектуры и криптографические подписи для безопасного режима, и поэтому в этом году включены в Mac\TeX. \code{tlmgr} and infrastructure: \begin{itemize*} \item Теперь хранится только один бэкап основного репозитория \texttt{texlive.tlpdb}. \item Еще больше совместимости между различными системами и версиями Перла. \item Результат \texttt{tlmgr info} теперь содержит поля \texttt{lcat-*} and \texttt{rcat-*} для данных из локального и удаленного каталогов. \item Трассировка подкоманд теперь сбрасывается в новый файл \texttt{texmf-var/web2c/tlmgr-commands.log}. \end{itemize*} \subsection{Будущее} \TL{} не совершенен, и никогда не будет совершенным. Мы предполагаем выпускать новые версии, добавляя справочный материал, утилиты, установочные программы, новые макропакеты и шрифты и все остальное, имеющее отношение к \TeX у. Эта работа делается добровольцами в свободное время, и многое остается сделать. Если вы можете помочь, не стесняйтесь. См. \url{https://tug.org/texlive/contribute.html}. Присылайте, пожалуйста, замечания и предложения по адресу:\hfill\null \begin{quote} \email{tex-live@tug.org} \\ \url{https://tug.org/texlive} \end{quote} \medskip \noindent \textsl{Happy \TeX ing!} \end{document}