Да будет эта книга полезна советской молодежи!
Г. М. Фихтенгольц
Небольшое вступительное замечание. В связи с большим количеством разных вариантов того, как может выглядеть результат, не рекомендуется сразу приступать к установке, следуя инструкции "шаг за шагом". Лучше сначала прочитать ее и получить первое представление о том, что представляет собой процесс установки и чего следует ожидать от тех или иных шагов (это особенно касается пакета шрифтов PSCyr), и только после этого переходить к делу.
Кроме того, по тексту приведены ссылки на готовые решения на разных "этапах готовности", так что читатель может просто скачать нужный архив вместо того, чтобы заниматься непосредственно установкой.
Размер скачиваемых файлов (все они являются архивами) колеблется от 250 до 350 МБ, и, видимо, превышает порог возможностей штатных средств Google в части проверки на вирусы при скачивании. Пугаться соответствующих предупреждений не стоит - все эти архивы подготовлены автором в процессе написания "руководства".
Источники, на которые даны ссылки по тексту, указаны здесь.
TeX читается как "тех" (от греч. "искусство", "мастерство", "технология").
LaTeXчитается как "латех" (буквы "ла" - от фамилии Лэсли Лампорта, написавшего первый пакет макрорасширений, существенно облегчивших работу в ТеХ'е).
Так как LaTeX является функциональным расширением ТеХ, ниже эти понятия взаимозаменяемы.
К настоящему моменту информации о том, что такое LaTeX и как им пользоваться, очень и очень много. Чтобы не изобретать велосипед (уж очень не хочется!) просто приведем список того, что нужно прочитать для первого знакомства:
[Львовский]: Предисловие и пункты "1.1. Что такое TeX и LaTeX" и "1.2. Достоинства и недостатки" из Главы I;
[Гуссенс]: Глава 1;
[Кузнецов]: Предисловие;
[Котельников]: Вместо предисловия;
[Балдин]: Глава 1 (раздел 1.1) (очень рекомендуется!)
- этого материала с избытком хватит, чтобы составить представление о предмете дальнейшего разговора.
Для чего стоит использовать LaTeX: разработка
"ТеХнических" документов, которыми будут пользоваться большое количество человек на продолжительной основе (например: учебники, пособия, методические рекомендации);
документов большого объема.
Поясним сказанное. Под "ТеХническими" документами понимаются, прежде всего, те, которые содержат математику, поскольку ТеХ изначально предназначался именно для набора математических текстов. В связи с большой популярностью системы ТеХ, сегодня существуют пакеты для физики, химии и т. д.
Что касается документов большого объема, то здесь дело обстоит так. Предположим, что издательству требуется набрать 600-страничный роман. Скорее всего, после 200 страниц Word скажет, что ему плохо, заглючит и сведет на нет результат нескольких последних часов работы. Почему так? Причина: Word является системой типа WYSIWYG (What You See Is What You Get) - "что ты видишь на экране, то и получишь на печати". На такое отображение результата Word тратит много ресурсов, что однажды и грозит вылиться в превышение его сил (еще больше ситуацию может усугубить внедрение формул или рисунков). Именно поэтому и художественную литературу вроде Гарри Поттера любое уважающее себя издательство тоже будет набирать с использованием ТеХ'а.
ТеХ'у все это не грозит - по сути, документ можно набрать в блокноте, а затем попросить программу сделать из блокнота pdf-файл. Увеличение объема текста в блокноте просто увеличит время "сборки" документа. Вот тот редкий случай, когда Википедия и правда полезна: пример того, как устроен LaTeX - можно посмотреть, как выглядит работа в редакторе и какой результат ей соответствует.
К недостаткам работы в LaTeX нужно отнести, прежде всего, верстку таблиц и графиков. В части таблиц скажем, что если Вы ежемесячно делаете отчеты о своей работе, которые оформляются в виде таблицы, то Word - более чем подходящий и достаточный инструмент. Причина: скорее всего, количество строк (а может, и столбцов) будет меняться, а делать это в LaTeX'e неудобно.
Что касается графики, то, хотя и существуют пакеты для ее создания средствами самого LaTeX'a, это тоже очень неудобно. Гораздо проще создать рисунок (например, график) в сторонней программе (например, в Matlab или Microsoft Visio - причем в векторном виде, т. е. в высоком качестве!), а затем "вставить" его в итоговый документ.
Выводы: LaTeX удобен для технических документов и малопригоден для документов, которые требуются "здесь и сейчас" (если только они не создаются по шаблону).
Результатом работы программы является pdf-файл.
На сегодня каждый уважающий себя инженер, физик или работник типографии должен уметь работать в LaTeX так же хорошо, как и в Word.
В настоящий момент имеется два способа использования LaTeX: посредством установки на компьютер (в т. ч. в portable-варианте) или онлайн.
Онлайн-версия LaTeX известна как Overleaf; ее использование имеет три основных преимущества:
не требуется ничего устанавливать на компьютер;
работать с документом можно из любого места, где есть интернет-соединение;
имеется возможность совместной работы с документом.
К недостаткам относится то обстоятельство, что, хотя большинство нужд этот инструмент покрывает, не всегда есть возможность внести дополнения в функционал (или это сделать трудно) - примером может служить задача подключения нового шрифта.
Для использования онлайн-версии достаточно зарегистрироваться на сайте; использование полностью бесплатное.
Второй вариант связан с установкой программы на компьютер.
Основная цель - получить LaTeX в переносном варианте (portable), поскольку носить с собой флешку удобнее, чем ноутбук. Тем не менее, параллельно описывается процедура установки на компьютер (разница между этими процедурами небольшая).
Задача сводится к получению следующей сборки (указаны актуальные версии на момент написания, 19.02.2025):
Windows 10 / 11;
basic-miktex-24.1-x64;
TeXstudio 4.8.5;
дополнительный пакет шрифтов PSCyr версии 0.4d.
Полученная сборка должна быть сопряжена с Matlab. Это означает следующее: имеется возможность
писать код в Matlab, который потом при необходимости может быть автоматически включен в текст документа (с учетом русскоязычных комментариев);
сохранять рисунки (например, графики), сделанные в Matlab, в векторном виде, чтобы потом включать их в документ.
(Вместо Matlab может быть Python, C++ или другой язык программирования).
Смысл последних требований в том, что - при правильной настройке программ и правильной организации рабочего процесса - вся рутинная работа (по оформлению) перекладывается на плечи LaTeX'а, а нам остается сосредоточиться только на сущностной стороне дела: написать текст, программный код, сделать графики, после чего попросить LaTeX собрать все это в один документ, нажав только одну клавишу.
* * *
В части общих сведений нужно сказать следующее:
прежде всего, для определенности изложения ниже предполагается, что установка производится на диск F:\, независимо от того, является ли он локальным диском на компьютере или флешкой (если ваш локальный диск имеет другую букву - с очевидными изменениями по тексту; в случае флешки, которая может получать разные буквы при подключении к разным ЭВМ, - отдельная история, описанная далее);
диск F:\ не является системным - это связано с тем, что по умолчанию в Windows 10 (и выше) системный диск (в целях борьбы с вредоносными приложениями) защищен от записи без дополнительного подтверждения этого действия администратором (само по себе это хорошее дело, но, поскольку LaTeX в итоге создает pdf-файлы и записывает их на диск, для него это создает проблемы);
размер диска F:\ (в случае установки на компьютер) составляет 6 ГБ (или более).
Полный размер LaTeX'a (т. е. вместе со всеми пакетами) составляет около 3 ГБ, хотя на практике занимаемое им место может быть больше (это зависит от файловой системы; например, на диске компьютера папка mitex-portable имеет размер 1,08 ГБ, а на флешке с файловой системой exFAT занимает место в 4,20 ГБ). Поскольку сейчас редко можно встретить флешку размером меньше 16 ГБ, это едва ли является проблемой. Что до локальных дисков, то они, как правило, имеют файловую систему NTFS (по крайней мере в случае операционной системы Windows), где различие между фактическим размером и занимаемым местом на диске не такое существенное (например, те же 1,08 ГБ на компьютере занимают 1,11 ГБ), так что 6 ГБ должно хватить с избытком.
После проведения всех операций на диске F:\ в итоге будут сформированы 3 папки:
F:\LaTeXDoc
F:\miktex-portable
F:\TeXstudioPortable
Первая из них предназначена для "наведения порядка", т. е. для хранения других папок, каждая из которых содержит файлы отдельного pdf-документа (чтобы файлы разных проектов не лежали в одном месте). Для создания одного pdf-документа LaTeX попутно формирует около 6 вспомогательных файлов, так что на один документ (часто говорят "проект") приходится 8 файлов (.tex-файл, в котором происходит основная работа, 6 вспомогательных файлов и собственно итоговый pdf-файл). В папке одного проекта может быть и больше файлов (например, удобно отдельные главы помещать в отдельные .tex-файлы, которые потом включаются в основной файл), а также другие папки (например, для хранения включаемых в документ рисунков или программного кода). Папку F:\LaTeXDoc можно создать сразу.
Здесь уместно упомянуть об одной хитрости. Предположим, что мы хотим сделать portable-версию, но флешки под рукой нет. Тогда можно поступить так:
создать локальный диск на компьютере (размером в те самые 6 ГБ, назначив ему при создании букву F в целях простоты);
установить на него портативную версию (так, как будто это флешка);
скопировать на флешку, когда она появится, все файлы с диска, которые будут получены по результату установки (вопросы переносимости обсуждаются ниже), а диск удалить (вернув его место туда, откуда оно было "взято взаймы").
(Хорошая мысля приходит опосля - возможно, этот способ будет даже более быстрым, чем установка на флешку.)
Наконец, независимо от того, идет ли речь о локальном диске или о флешке, на диске F:\ могут быть и другие файлы и папки.
Начнем с вспомогательного замечания: если устанавливается не портативная версия, то лучше сначала установить MiKTeX, а потом вернуться к установке TeXstudio. В этом случае TeXstudio может автоматически выставить нужные настройки (на случай, если этого не произойдет, в разделах 7 и 8 описано, как настроить программу вручную).
Как показала практика, независимо от того, стоит ли цель сделать portable-версию или нет, в плане TeXstudio можно обойтись portable-вариантом. Этот подход привлекателен тем, что не требует установки - достаточно скачать и распаковать архив.
Скачать TeXstudio (как в полной, так и в portable версиях) можно с официального сайта. Программа полностью бесплатная, о чем заявляют сами разработчики.
На момент написания актуальной версией была версия 4.8.5; вот резервная ссылка на скачивание portable-версии.
После распаковки архива в папку F:\TeXstudioPortable последняя занимает на диске 600 МБ при размере в 509 МБ (в файловой системе exFAT).
Для установки MiKTeX нужно скачать установщик с официального сайта (вот резервная ссылка). Программа полностью бесплатная.
Как указано на сайте, для установки portable-версии нужно:
скачать основной установщик (Download the installer (basic-miktex-*.exe));
переименовать скачанный файл в miktex-portable.exe (Rename the installer to miktex-portable.exe).
* * *
Дальше начинается описание тонкостей, которые могут встретиться в процессе установки. Скажем прямо: это - история нелегкой борьбы; отдельные ее части разбросаны по интернету; некоторых, наверное, нет вовсе. Она является таковой потому, что пользователю, малознакомому с тонкостями настройки (автор в их числе), очень трудно с ними разобраться в полной мере (тем более в отсутствии русскоязычных руководств).
Эта история приводится здесь во всех подробностях по двум причинам. Первая, как метко выразился пользователь одного форума, состоит в том, что те, кто умеют пользоваться инструментом, пользуются им и не тратят времени на объяснения другим (отсюда как раз "обрывочность" сведений, которые можно найти на различных форумах). Вторая причина: да, труднорешаемые проблемы могут встретиться даже при наличии подробного руководства, однако без такого руководства все проблемы попадают в эту категорию:
С одной стороны, заранее ожидать проблем не стоит. С другой стороны, если они все же возникнут, хочется верить, что полнота описания позволит свести их число к минимуму или, по крайней мере, сделает начинающих более дееспособными в деле их решения.
* * *
Прежде всего, скачанный и переименованный файл лучше скопировать на диск С:\ (непосредственно в корень диска; в любом случае желательно, чтобы в пути не было кириллицы) и запускать оттуда НЕ от имени администратора. Далее по порядку:
Copying Conditions:
"I accept the MiKTeX copying condition"
"Далее"
Installation Directory:
вариант по умолчанию C:/miktex-portable меняем на F:/miktex-portable
"Далее"
Settings: оставляем предложенные настройки по умолчанию
Preferred paper = A4
Install missing packages on-the-fly = Ask me first
"Далее"
Review:
"Start"
Executing:
ждем окончания загрузки
От чего зависит время, требуемое на установку, осталось загадкой. При подготовке этого текста пришлось заниматься установкой трижды; результаты таковы.
Во всех случаях установка выполнялась с использованием надежного интернет-соединения на флешку USB 2.0. Если к моменту установки она не пережила 2 - 3 клинических смерти, то процесс занимает 20 - 40 минут (так было в первых двух случаях); если флешка находится в плачевном состоянии, установка легко растягивается на добрых 5 часов. (И это плохой признак: скорее всего, дело в "битых секторах" флеш-памяти, которые дадут о себе знать тем, что сведут на нет работоспособность инструмента.)
Что важно отследить при установке: в числе обнаруженных проблем, о которых сообщит установщик, должна остаться только одна, которая на картинке указана под номером 2:
2: major issue: So far, you have not checked for MiKTeX updates.
Очень важно, чтобы сообщения
The PATH variable does not unclude the MiKTeX executables
не было!
Запуск установки от имени администратора, приводит к тому, что на одном из последних этапов выдается сообщение об ошибке, а в log-файл помещается информация следующего толка: "опция -admin нужна только при установке полноценной версии".
Было бы неплохо, чтобы разработчик указывал такие сведения сразу.
Примерно вот так должны выглядеть записи в окне установщика.
"Далее"
Update Check:
снимаем галочку "Check for updates now"
соглашаемся с появившемся сообщением (ОК)
"Далее"
снимаем галочку "Tell me more" и закрываем окно.
Мы выбираем вариант загрузки пакетов по запросу (Install missing packages on-the-fly = Ask me first), поскольку едва ли все пакеты понадобятся разом при работе над одним проектом; их загрузка занимает значительно больше времени и, самое главное, по непонятным причинам в процессе установки portable-версии появлялась ошибка в момент обновления базы данных имеющихся пакетов.
Поскольку дозагрузка пакетов по мере необходимости не представляет проблемы (конечно, при наличии интернета), самым простым решением является не пытаться загрузить все пакеты сразу. По этой же причине мы отказываемся от проверки на наличие обновлений.
Начнем с организации удобного рабочего места, т. е. с настройки TeXstudio. При первом его запуске (программа texstudio.exe из папки F:\TeXstudioPortable) весьма вероятно получение сообщения о том, что TeXstudio не сконфигурирован:
Это - нормальная реакция программы на то, что она не смогла найти нужные файлы; как правило (если TeXstudio ставится после MiKTeX, и особенно если MiKTeX установлен на диск С:\), редактор в состоянии автоматически найти нужные программы и прописать пути к ним.
Ничего страшного в этом нет - мы все настроим сами. Ставим галочку "Не предупреждать снова" и закрываем окно.
Последние версии TeXstudio поставляются с русским языком в том числе, причем язык интерфейса корректно определяется при первом запуске. Если это не так:
Options -> Configure TeXstudio -> General -> Language -> ru_RU (Russian)
После этого сначала настроим некоторые важные мелочи:
Общие настройки
снимаем галочки с опций "Проверить конфигурацию LaTeX" и "Автоматически проверять каждые";
Компиляция
убедиться, что Компилятор по умолчанию = PdfLaTeX;
Редактор
убедиться, что Кодировка по умолчанию = UTF-8;
Проверка орфографии:
Директории с орфографическими словарями = F:\TeXstudioPortable\dictionaries
Язык по умолчанию = ru_RU-Russian
а затем перейдем к основным настройкам:
Команды:
в поле PdfLaTeX ввести
pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex
принять все указанные настройки (ОК).
Оговоримся сразу: сделанного может оказаться недостаточно для того, чтобы LaTeX начал работать. К настоящему моменту это еще не повод расстраиваться; ниже мы опишем во всех подробностях, как настроить LaTeX так, чтобы описанные в этом пункте действия привели к результату.
Если MiKTeX устанавливался не в portable-варианте, то описанных выше действий, скорее всего, хватит. Чтобы это проверить, создадим папку
F:\LaTeXDoc\test
после чего в программе TeXstudio создадим новый файл (при создании до первого сохранения они получают имя untitled), напишем в него следующий текст:
Контрольный пример 1
% начало контрольного примера 1 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
\end{document}
% окончание контрольного примера 1 - эту строчку можно не копировать
(если директории с орфографическими словарями и язык по умолчанию выбраны правильно, то слово "выключной" должно быть подчеркнуто), сохраним файл в созданной папке под именем test и запустим на выполнение нажатием клавиши F5.
Если настройки LaTeX'а выставлены правильно, он выдаст окно-запрос Package Installation на загрузку недостающих пакетов:
russianb.ldf
t2aenc.def
lacodes.mf
(опция Install missing packages on-the-fly = Ask me first "в действии"). Нажимаем "Install" и ожидаем окончания загрузки.
На каждый пакет программа выдает отдельный запрос; все это дело занимает около 15 минут. Естественно, один пакет загружается только 1 раз, так что в будущем эти 15 минут более тратить не придется.
Нужно отметить, что вызов сборки .tex-файла (это те операции, которые выполняются при нажатии на F5) иногда нужно выполнить несколько раз, т. к. файл собирается последовательно, каждый раз обращаясь к пользователю с просьбой дозагрузки нужных пакетов по мере обнаружения их отсутствия (при этом LaTeX может выдавать различные ошибки или просить загрузить один пакет несколько раз). Обычно это выглядит так (П - пользователь, М - MiKTeX; начиная с первой итерации или около того):
- П: F5
- M: Процесс запущен: pdflatex -shell-escape -interaction=nonstopmode "test".tex
... какая-то служебная информация о процессе выполнения сборки документа ...
... приглашение к загрузке пакета russianb.ldf ...
- П: Install
- M: ... какая-то служебная информация о процессе выполнения сборки документа ...
... процесс прерван с жалобой на то, что нет какого-то файла/пакета <имя_1> ...
- П: F5
- M: ... приглашение к загрузке пакета <имя_1> ...
- П: Install
- M: ... какая-то служебная информация о процессе выполнения сборки документа ...
... процесс прерван с жалобой на то, что нет какого-то файла/пакета <имя_2> ...
- П: F5
- M: ... приглашение к загрузке пакета <имя_2> ...
и т. д.
О том, что MiKTeX занят обработкой команд, свидетельствует смена зеленых стрелок на красный квадрат ("СТОП") в интерфейсе TeXstudio.
После того, как LaTeX загрузит все необходимые пакеты и обработает введенный текст, во внутреннем просмотрщике можно будет увидеть результат (сформированный pdf-файл). Он находится в той же папке
F:\LaTeXDoc\test
и называется так же, как и .tex-файл: test.pdf.
В TeXstudio над областью предварительного просмотра, рядом со значком лупы, есть кнопка, позволяющая открыть pdf-файл во внешнем просмотрщике (например, в Adobe Reader) при его наличии (и при том, что выставлены соответствующие настройки в TeXstudio).
* * *
Так или иначе, все, что сказано дальше, можно отнести к категории дополнительных настроек.
Предположим, что создана папка
F:\LaTeXDoc\test
в которой сохранен файл test.tex, как это описано в предыдущем разделе, и опишем, что делать, если LaTeX отказывается работать.
Чтобы лучше уяснить смысл изложенных ниже действий, отметим, что программа TeXstudio - это только редактор кода; в принципе, текст будущего документа можно написать и в блокноте, а потом сменить расширение .txt на .tex. За непосредственное создание pdf-файла отвечает программа
pdflatex.exe
которая находится в папке
F:\miktex-portable\texmfs\install\miktex\bin\x64
На TeXническом жаргоне иногда говорят, что подготовленный файл "скармливают" программе pdflatex.exe для получения собственно pdf-файла. "Скормить" файл можно и с помощью командной строки, однако делать это, естественно, не так удобно, как хотелось бы - поэтому эта возможность встроена в TeXstudio (именно ей мы пользуемся, когда нажимаем F5).
Отсюда следует первая возможная причина, по которой LaTeX может отказаться создавать pdf-файл - он попросту не знает, где находится нужная программа, и выводит сообщение вида
Ошибка: не удаётся выполнить команду pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape "test".tex
Убедитесь, что вы установили (La)TeX-дистрибутив, напр. MiKTeX или TeX Live, а также задали корректные пути к файлам дистрибутива на странице конфигурации команд.
(La)TeX-редакторы вроде TeXstudio не работают, если не установлены обработчики команд (La)TeX из дистрибутива.
Очевидным решением является подсказать программе, куда нужно обращаться - указать абсолютный путь к исполняемому файлу. Для этого нужно снова перейти в настройки (Параметры -> Конфигурация TeXstudio) и выбрать там раздел "Команды":
Тот факт, что некоторые поля заполнены, означает, что TeXstudio сам нашел нужные программы. Наша задача - заполнить остальные. Сделать это можно двумя способами: с помощью диалогового окна, кнопка вызова которого расположена рядом с заполняемым полем (на котором изображен лист А4 с загнутым уголком), или путем ввода вручную нужного текста.
При выборе первого варианта программа выдает диалоговое окно, в котором нужно перейти в папку ...\x64 и выбрать там соответствующую программу. При выборе второго (с точки зрения автора более предпочтительного) нужно скачать файл с путями (это удобнее, чем копировать с сайта), заменить в нем букву F на нужную букву диска, после чего скопировать и вставить в соответствующие поля следующие сведения:
LaTeX:
F:/miktex-portable/texmfs/install/miktex/bin/x64/latex.exe -src -interaction=nonstopmode --shell-escape %.tex
PdfLaTeX:
F:/miktex-portable/texmfs/install/miktex/bin/x64/pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex
XeLaTeX:
F:/miktex-portable/texmfs/install/miktex/bin/x64/xelatex.exe -synctex=1 -interaction=nonstopmode %.tex
LuaLaTeX:
F:/miktex-portable/texmfs/install/miktex/bin/x64/lualatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex
Просмотрщик DVI:
C:\Windows\system32\OpenWith.exe "?am.dvi"
Просмотрщик PS:
C:\WINDOWS\system32\OpenWith.exe "?am.ps"
Внешний просмотрщик PDF:
"C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe" "?am.pdf"
DviPs:
F:/miktex-portable/texmfs/install/miktex/bin/x64/dvips.exe -o %.ps %.dvi
DviPng:
F:/miktex-portable/texmfs/install/miktex/bin/x64/dvipng.exe -T tight -D 120 %.dvi
Ps2Pdf:
F:/miktex-portable/texmfs/install/miktex/bin/x64/ps2pdf.exe %.ps
DviPdf:
F:/miktex-portable/texmfs/install/miktex/bin/x64/dvipdfmx.exe %.dvi
BibTeX:
F:/miktex-portable/texmfs/install/miktex/bin/x64/bibtex.exe %
BibTeX 8 бит:
F:/miktex-portable/texmfs/install/miktex/bin/x64/bibtex8.exe %
Biber:
F:/miktex-portable/texmfs/install/miktex/bin/x64/biber.exe %
Makeindex:
F:/miktex-portable/texmfs/install/miktex/bin/x64/makeindex.exe %.idx
Texindy:
F:/miktex-portable/texmfs/install/miktex/bin/x64/texindy.exe %.idx
Xindex:
F:/miktex-portable/texmfs/install/miktex/bin/x64/xindex.exe -l * %.idx
Makeglossaries:
F:/miktex-portable/texmfs/install/miktex/bin/x64/makeglossaries.exe %
Metapost:
F:/miktex-portable/texmfs/install/miktex/bin/x64/mpost.exe -interaction=nonstopmode ?me)
Asymptote:
F:/miktex-portable/texmfs/install/miktex/bin/x64/asy.exe ?m*.asy
Ghostscript:
F:/miktex-portable/texmfs/install/miktex/bin/x64/mgs.exe "?am.ps"
Latexmk:
F:/miktex-portable/texmfs/install/miktex/bin/x64/latexmk.exe -pdf -silent -synctex=1 %
texdoc:
F:/miktex-portable/texmfs/install/miktex/bin/x64/texdoc.exe
Внешний терминал:
C:\Windows\system32\cmd.exe
Примечание - Поля SVN, SVNADMIN и GIT не описаны, т. к. автор ими не пользуется.
Вот так выглядит результат:
Настройки предполагают, что Adobe Acrobat установлен на компьютере; если его нет, то pdf-файлы можно просматривать, например, через браузер. Вообще говоря, достаточно указывать только те настройки, которые в дальнейшем предполагается использовать (в случае, если файлы будут собираться только с помощью pdflatex.exe нужды указывать путь, например, к lualatex.exe нет, однако почему бы не настроить все полностью, тем более, что это не сложно).
Если на предыдущем этапе создать pdf-файл не получилось, то теперь все должно сработать.
Интересно заметить, что при использовании диалогового окна TeXstudio дополнительно оборачивает команды в кавычки: вместо
F:/miktex-portable/texmfs/install/miktex/bin/x64/latex.exe -src -interaction=nonstopmode --shell-escape %.tex
в соответствующее поле заносится
"F:/miktex-portable/texmfs/install/miktex/bin/x64/latex.exe" -src -interaction=nonstopmode %.tex
По опыту автора, разницы между этими подходами нет. Следует обратить внимание вот на что: при использовании диалогового режима ключ
... --shell-escape ...
автоматически не подставляется, так что это придется делать вручную.
При подготовке математической статьи следующей по частоте использования (после красивого оформления формул) является возможность включения в текст иллюстративного материала. Делать это удобно следующим образом.
В папке с проектом создается папка, в которой будут храниться все рисунки. В нашем случае мы создадим папку
F:\LaTeXDoc\test\picturies
в которую - для нужд демонстрации излагаемого ниже материала - загрузим следующие файлы: exit_way, tespic_eps и tespic_png.
Сразу отметим, что материал ниже не имеет цели сколь-нибудь детального изложения того, как работает механизм включения рисунков. Задача состоит в том, чтобы повторить представленные ниже "тестовые" шаги и убедиться, что этот механизм работает. Предполагается, что более подробные сведения будут почерпнуты из соответствующей литературы по мере знакомства с LaTeX'ом.
Чтобы иметь возможность включать в документ графический материал, нужно подключить пакет graphicx с помощью команды
\usepackage{graphicx}
(имеется еще пакет graphics, но здесь он рассматриваться не будет), после чего указать папку, в которой хранятся рисунки, которые будут включаться в документ:
\graphicspath{{picturies/}}
(двойные фигурные скобки - не опечатка).
В таком виде команда задает так называемый относительный путь к папке picturies, т. е. программа будет пытаться найти папку picturies, прежде всего, в той же папке, в которой находится основной файл test.tex. Если ей это не удастся, она произведет поиск в других доступных ей папках, а если и это не увенчается успехом - выдаст сообщение об ошибке.
Можно указать и абсолютный путь, т. е. явно указать папку, в которой лежат рисунки - в этом случае команда выглядела бы вот так:
\graphicspath{{F:/LaTeXDoc/test/picturies/}}
Первый способ удобен, если все рисунки относятся только к одному проекту, а второй - если рисунки требуется включать в нескольких проектах.
Дополнительно к пакету graphicx рекомендуется скачать пакет caption с помощью команды
\usepackage[labelsep = period, figurename = Рисунок]{graphicx}
- его использование позволяет легко изменить два основных параметра, важных для оформления рисунка:
слово, с которого начинается подрисуночная подпись (в оригинале это Fig. - сокращенное от англ. Figure, а при использовании пакета babel - Рис.);
разделитель между номером рисунка и собственно его названием (в английской традиции это двоеточие, в то время как в русской - точка).
(Эти изменения, очевидно, производятся с помощью необязательных аргументов, переданных в квадратных скобках.)
После этого можно легко поместить в текст любой растровый рисунок (.jpg, .jpeg, .png и т. д.):
Контрольный пример 2
% начало контрольного примера 2 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунка \ref{fig:ris1} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\end{document}
% окончание контрольного примера 2 - эту строчку можно не копировать
Об окружении figure и команде caption подробнее можно прочитать в [Львовский, с. 185].
Результат должен выглядеть вот так: test2.pdf.
Если внимательно посмотреть на рисунок в файле test2.pdf, то можно заметить некоторую "шероховатость" линий и общую "зернистость" рисунка в целом (что особенно хорошо видно при увеличении изображения). Этот эффект - следствие применения растровой графики.
Чтобы работа выглядела более солидно, желательно включать графику в векторном виде - например, представленную в формате .eps. При использовании Matlab созданный график можно сохранить в eps-формате вот так:
fig = figure;
% ...
saveas(fig, 'figurename', 'epsc')
(опция 'epsc' требует, чтобы сохранение в формате .eps было выполнено с теми цветами, которые были использованы при построении графика; в случае использования опции 'eps' в коде Matlab график будет сохранен в черно-белом цвете).
Созданные файлы с расширением .eps помещаются в ту же папку, что и остальные рисунки. Для включения в документ их сначала нужно преобразовать к пригодному виду; за это отвечает пакет epstopdf, который подключается соответствующей командой. Кроме подключения пакета других действий в тексте документа не требуется; так же как и остальные рисунки, eps-файлы включаются в документ с помощью команды
\uncludegraphics{название_рисунка}
выглядит это так:
Контрольный пример 3
% начало контрольного примера 3 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунков \ref{fig:ris1} и \ref{fig:ris2} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_eps}
\caption{Пример векторной графики}
\label{fig:ris2}
\end{figure}
\end{document}
% окончание контрольного примера 3 - эту строчку можно не копировать
Весьма вероятно, что при установке на компьютер этого будет достаточно. Однако при подготовке portable-варианта это решение может не сработать. Проблемы также возникнут, когда флешка начнет использоваться на другом компьютере, поскольку, скорее всего, ей будет назначена другая буква диска. Способ, который описан ниже, универсален, но для определенности предположим, что рассматривается сценарий, когда (против того, о чем мы договорились выше) флешка сначала имела букву D, а при использовании на новом рабочем месте получила букву F.
Вот важное предупреждение: не следует "исправлять ситуацию" путем смены буквы диска через "Управление дисками"! Это действие может вызвать сбои в работе всех программ, которые есть на флешке; такой радикальный подход не требуется.
Симптомом проблемы является получение сообщения об ошибке вида
Package pdftex.def Error: File 'picturies/testpic_eps-eps-converted-to.pdf' not found: using draft setting. (...)
в окне "Лог" и следующей информации в окне "Сообщения":
Процесс запущен: D:/miktex-portable/texmfs/install/miktex/bin/x64/pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape "test".tex
'miktex-epstopdf-unrestricted' is not recognized as an internal or external command, operable program or batch file.
pdflatex: major issue: So far, you have not checked for MiKTeX updates.
Процесс закончился с ошибками
(еще раз обращаем внимание, что в сообщении об ошибке будет отображаться буква D!).
История такова: чтобы вставить eps-файл в документ, MiKTeX сначала "отдает его на обработку" программе miktex-epstopdf.exe, которая находится в той же папке, что и pdflatex.exe и другие (пути к которым мы указывали ранее). На жалобы о том, что pdflatex или другая программа давно не обновлялись, можно не обращать внимания; существо дела - в сообщении TeXstudio о том, что MiKTeX не может распознать команду на обработку файла с помощью программы miktex-epstopdf. Мы переходим к одному из самых сложных моментов.
Начнем с простого подхода, который потенциально способен решить проблему. Чтобы помочь MiKTeX'у в деле поиска программы miktex-epstopdf (если быть более точным - программы miktex-epstopdf-unrestricted, но они лежат в одной папке), требуется явно указать нужный путь с помощью включения его в переменную окружения PATH. Делается это следующим образом:
Параметры -> Конфигурация TeXstudio -> Компиляция -> Показать расширенные параметры;
в появившемся окне "Параметры компиляции" в строке "Команды ($PATH)" вписать нужный путь:
F:/miktex-portable/texmfs/install/miktex/bin/x64
Важно: возможно (но это, конечно, не точно), есть какая-то разница между тем, чтобы скопировать путь, и тем, чтобы указать его с помощью диалогового окна, которое вызывается кнопкой рядом с полем для ввода. Рекомендуется использовать второй способ.
при желании можно скрыть подробности, сняв галочку "Показать расширенные параметры";
применить изменения (ОК).
После этого можно снова запустить файл на обработку и получить нужный результат. Он должен выглядеть вот так: test3.pdf.
Если после нескольких попыток проблема не исчезла, можно попробовать "освежить память" MiKTeX'у, обновив пути к пакетам. Для этого:
из папки F:\miktex-portable\texmfs\install\miktex\bin\x64 запускается от имени администратора программа miktex-console (не miktex-console_admin!) - на появляющееся предупреждение внимание можно не обращать;
в открытой программе последовательно выполняются команды
Tasks -> Refresh file name database
Tasks -> Refresh font map files
после чего miktex-console можно закрыть и попробовать собрать файл еще раз.
Внесение пути в переменную окружения - способ, который без малого на 100% должен решить проблему; именно на него мы будем полагаться в дальнейшем. Однако при первом использовании, судя по опыту, вполне можно ожидать, что он не сработает - почему-то MiKTeX'у трудно поверить, что по указанному пути нужная программа и правда есть. В этом случае следует перейти к тяжелой артиллерии; ее использование является, в частности, еще одним способом решения проблемы (который вовсе не требует манипуляций с переменной окружения).
Начнем с того, что отменим наши последние действия:
Параметры -> Конфигурация TeXstudio -> Компиляция -> Показать расширенные параметры
очищаем поле "Команды ($PATH)" (убираем вписанный нами только что путь)
снимаем галочку "Показать расширенные параметры" и переходим в пользовательский режим;
нажимаем на шестеренку напротив поля "Компилятор по умолчанию", вызывая окно "Команды быстрой компиляции";
в "Упорядоченный список команд:" добавляем команду вызова компилятора LuaLaTeX - она добавляется в конец списка;
перемещаем команду вызова компилятора LuaLaTeX в начало списка и применяем изменения - после этого в поле "Компилятор по умолчанию" вместо PdfLaTeX будет указан текст
txs:///lualatex | txs:///pdflatex
принимаем изменения (ОК).
Начнем с того, что было сделано. При попытке снова запустить сборку файла (по клавише F5), в окне "Сообщения" (иногда его называют внутренним терминалом TeXstudio) мы увидим следующую информацию:
Процесс запущен: F:/miktex-portable/texmfs/install/miktex/bin/x64/lualatex.exe -synctex=1 -interaction=nonstopmode --shell-escape "test".tex
lualatex: major issue: So far, you have not checked for MiKTeX updates.
Процесс закончился нормально
Процесс запущен: F:/miktex-portable/texmfs/install/miktex/bin/x64/pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape "test".tex
pdflatex: major issue: So far, you have not checked for MiKTeX updates.
Процесс закончился нормально
- она означает, что наш файл был собран дважды: сначала - компилятором lualatex, а затем - pdflatex. (Зачем это понадобилось будет объяснено в следующем разделе.)
(Здесь мы возвращаемся к нашему основному предположению, что используемым диском является диск F:\.)
Так как теперь файл собирается дважды, процесс, очевидно, требует в два раза больше времени. В целом, это не является стеснительным обстоятельством; можно оставить все как есть. Однако по непонятной причине если теперь вернуться к первому варианту решения проблемы, т. е.:
Параметры -> Конфигурация TeXstudio -> Компиляция -> убрать компилятор LuaLaTeX (порядок действий обратный);
Параметры -> Конфигурация TeXstudio -> Компиляция -> Показать расширенные параметры;
в строке "Команды ($PATH)" вписать нужный путь (как это было описано ранее)
то первый способ начинает корректно работать!
Выше было упомянуто, что эти дополнительные действия едва ли потребуются при установке на компьютер - дело в том, что при полноценной установке путь к папке с программами (в том числе с программой miktex-epstopdf) записывается в системную переменную PATH автоматически.
Как было указано в предыдущем разделе, при работе в Matlab (по крайней мере в версиях R2020b и старше) имеется возможность сохранять сделанные графики в eps-формате при помощи команды
saveas(fig, 'figurename', 'epsc')
Хотя эта возможность принципиально закрывает поставленную в разделе 4 задачу по сопряжению Matlab с LaTeX, скажем несколько слов о том, какими еще средствами можно создавать рисунки высокого качества.
Прежде всего, в их число, конечно, включается использование всех программ, создающих рисунки в eps-формате (например, CorelDraw, Illustrator и др.). Общим для всех этих программ недостатком является то, что их использование требует определенной подготовки. С этой точки зрения на другом конце спектра находится несколько искусственный, однако достаточно удобный и доступный неискушенным пользователям способ создания рисунков, основанный на том, что команда \includegraphics{...} позволяет вставлять один pdf-файл в другой.
* * *
В частности, именно это было сделано при подготовке файла test3.pdf. Если после его создания перейти в папку
F:\LaTeXDoc\test\picturies
то в ней можно обнаружить файл testpic_eps-eps-converted-to.pdf. Этот файл был создан с помощью программы miktex-epstopdf-unrestricted, которая преобразовала файл типа .eps в файл типа .pdf (отсюда и ее название), что позволило корректно выполнить команду \includegraphics{...}. Нужно заметить, что в созданном pdf-файле содержится рисунок в точности тех же размеров, какие он имел на момент создания eps-файла.
Теперь можно внятно объяснить, зачем нужно было компилировать файл дважды. Дело в том, что LuaLaTeX почему-то может вызвать программу miktex-epstopdf без дополнительных усилий с нашей стороны (и успешно создать файл testpic_eps-eps-converted-to.pdf), однако у этого компилятора имеются проблемы с обработкой текста (в частности, кириллицы - формулы обрабатываются без нареканий). Что ж, большего и не надо - коль скоро нужный pdf-файл создан, осталось только попросить PdfLaTeX включить его в документ.
Выше по тексту названия miktex-epstopdf и miktex-epstopdf-unrestricted употреблялись весьма вольно. Строгости ради: программа miktex-epstopdf вызывается при полноценной установке MiKTeX, в то время как в случае портативной версии используется miktex-epstopdf-unrestricted (по крайней мере, судя по конфигурационным файлам).
Для определенности отметим, что ниже предполагается использование способа с включением папки в переменную окружения PATH.
* * *
Сказанное означает, что можно создать рисунок в любой программе, которая позволяет сохранить его в формате .pdf, после чего результат можно вставлять в документ. В качестве примера можно указать на Microsoft Visio из пакета Microsoft Office - здесь удобно создавать диаграммы, сложные блок схемы и пр.
Особенностью Visio является то, что без дополнительных ухищрений нельзя убрать лишние поля (чтобы созданный рисунок имел нужные размеры). Одним из возможных решений является следующая последовательность действий:
нарисовать рисунок в Visio;
выделить его внутри редактора Visio и скопировать в Word (если задать такую же ширину полосы набора, какая будет в итоговом pdf-файле, то на этом этапе заодно можно оценить, сколько места занимает рисунок, в частности, помещается ли он по ширине в будущий документ);
в программе Word вызвать контекстное меню, нажав правой кнопкой мыши на вставленный рисунок, и выбрать: Объект Visio -> Открыть (созданный рисунок вновь откроется в Visio, но теперь без лишних полей);
Файл -> Сохранить как -> Тип файла: PDF (или Файл -> Экспорт -> Создать PDF/XPS).
Созданный pdf-файл помещается в папку picturies и вставляется в документ как и обычно. Например:
Контрольный пример 4
% начало контрольного примера 4 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунков \ref{fig:ris1} и \ref{fig:ris2} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_eps}
\caption{Пример векторной графики}
\label{fig:ris2}
\end{figure}
В конце концов, в документ можно включить не только формулы. Рассмотрим, например, рисунок \ref{fig:ris3}:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{exit_way}
\caption{План эвакуации}
\label{fig:ris3}
\end{figure}
\end{document}
% окончание контрольного примера 4 - эту строчку можно не копировать
Вот так выглядит результат: test4.pdf. (Файл exit_way был создан именно описанным здесь способом.)
При просмотре всех созданных файлов можно заметить, что шрифт текста выглядит несколько блеклым. Это связано с тем, что шрифт Computer Modern в его виде "из коробки" применяется в растровом формате (так что он не только блеклый, но и низкого качества, что видно, например, при увеличении масштаба).
В этой главе мы расскажем, как улучшить положение дел, однако сначала сделаем важное предупреждение: перед тем как переходить к описанным ниже шагам нужно сделать резервную копию файлов (например, можно заархивировать папку F:/miktex-portable).
Существует три варианта решения обозначенной проблемы. Первым из них является подключение шрифтового пакета PSCyr (Post Script Cyrillic). Пожалуй, основная причина, по которой будет рассматриваться этот пакет, заключается в том, что он содержит шрифт Times New Roman, столь часто требуемый при оформлении текста (на самом деле, это почти Times New Roman, но отличия настолько незначительные, что заметить их может только профессиональный полиграфист).
Для тех, кому интересны детали - вот очень короткая история разработки пакета, а также примеры шрифтов, которые он содержит. (С небольшими отличиями - еще один источник на эту же тему.)
Важно: пакет PSCyr предлагается как один из возможных вариантов, работающих с компилятором pdflatex (т. е. с программой pdflatex.exe). Иной раз можно увидеть совет использовать компилятор XeLaTeX или LuaLaTeX, однако какие подводные камни сопровождают такое использование автору неизвестно. Скорее всего, небольшой поиск по сети даст информацию о том, как использовать любые шрифты из Windows, или, по крайней мере, как использовать тот же Times New Roman без тех усилий, которые описаны ниже, однако автор такого поиска не проводил (и будет признателен, если уважаемый читатель опробует и в подробностях сообщит рабочий вариант). Если нужды в использовании других шрифтов нет, этот раздел можно пропустить - уже в следующем мы расскажем, как настроить стандартный шрифт Computer Modern.
Все пакеты, которые были скачаны до сих пор, скачивались с сайта CTAN (Comprehensive TeX Archive Network) - специального сайта, на который со всего мира все разработчики своих пакетов выкладывают свои решения, сопровождая их документацией. К сожалению, как справедливо было отмечено на одной интернет-странице, пакету PSCyr "не хватает отеческой заботы": кроме указанных выше двух источников документации на него без малого нет никакой, а сам он не выложен на CTAN (как правило, если пакет выложен в общий доступ, при наличии ошибок авторам дают обратную связь и они вносят соответствующие корректировки). Все это означает, что для настройки потребуются некоторые усилия.
Последней версией пакета является PSCyr версии 0.4d. Предположим, что архив скачан и распакован в папку F:\PSCyr. Дальнейший порядок действий такой:
содержимое папки F:\PSCyr\doc копируется в папку F:\miktex-portable\texmfs\install\doc;
папка base из папки F:\PSCyr\dvipdfm копируется в папку F:\miktex-portable\texmfs\install\dvipdfm;
папка pscyr из папки F:\PSCyr\dvips копируется в папку F:\miktex-portable\texmfs\install\dvips;
папка pscyr из папки F:\PSCyr\fonts\afm\public копируется в папку F:\miktex-portable\texmfs\install\fonts\afm\public;
папка pscyr из папки F:\PSCyr\fonts\tfm\public копируется в папку F:\miktex-portable\texmfs\install\fonts\tfm\public;
папка pscyr из папки F:\PSCyr\fonts\type1\public копируется в папку F:\miktex-portable\texmfs\install\fonts\type1\public;
папка public из папки F:\PSCyr\fonts\vf копируется в папку F:\miktex-portable\texmfs\install\fonts\vf;
папка pscyr из папки F:\PSCyr\tex\latex копируется в папку F:\miktex-portable\texmfs\install\tex\latex;
(прочие файлы из папки F:\PSCyr - ChangeLog, install.sh, LICENSE и manifest - копировать не обязательно)
запускается командная строка от имени администратора;
Обычно начальной папкой является C:\Windows\system32.
выполняется переход в папку ...\х64 с помощью команды
cd /d F:\miktex-portable\texmfs\install\miktex\bin\x64
(можно скопировать и вставить, не забыв про букву диска)
Важно: активной должна стать именно папка ...\х64! Об этом свидетельствует то, что стрелка ">", приглашающая ввести новые команды, стоит после папки ...\х64, а не после папки system32, как это было сначала.
из командной строки выполняется команда
initexmf --edit-config-file dvips
в открывшийся файл блокнота вводится текст
p +pscyr.map
файл сохраняется и закрывается.
При выполнении команды должно появиться предупреждение
initexmf: security risk: running with elevated privileges
свидетельствующее о том, что команды выполняются от имени администратора - это важно, так как одна из команд ниже без этого выполнена не будет.
из командной строки выполняется команда
initexmf --edit-config-file pdftex
в открывшийся файл блокнота вводится текст
+pscyr.map
файл сохраняется и закрывается;
из командной строки выполняется команда
initexmf --edit-config-file updmap
в открывшийся файл блокнота вводится текст
Map pscyr.map
файл сохраняется и закрывается;
из командной строки выполняется команда
updmap
(ее выполнение может занять некоторое время);
из командной строки выполняется команда
initexmf --edit-config-file dvipdfm
в открывшийся файл блокнота вводится текст
f pscyr2.map
файл сохраняется и закрывается;
из командной строки выполняется команда
initexmf -u
(ее выполнение может занять некоторое время);
не закрывая командную строку, из папки F:\miktex-portable\texmfs\install\miktex\bin\x64 запускается от имени администратора программа miktex-console (не miktex-console_admin!) - на появляющееся предупреждение внимание можно не обращать;
в открытой программе последовательно выполняются команды
Tasks -> Refresh file name database
Tasks -> Refresh font map files
после чего программу можно закрыть.
Об их выполнении пользователя извещает строка прогресса, которая появляется внизу окна на время выполнения команд.
из командной строки выполняется команда
mkfntmap
- на этом настройка закончена; командная строка больше не нужна.
До некоторых пор этих действий было достаточно, однако теперь требуются еще два шага:
файл pscyr.map из папки F:\PSCyr\dvips\pscyr копируется в папку в папку F:\miktex-portable\texmfs\install\miktex\bin\x64;
обновляется карта шрифтов:
miktex-console (не miktex-console_admin!) от имени администратора
Tasks -> Refresh file name database
Tasks -> Refresh font map files
(для краткости действия последнего пункта договоримся и далее называть "обновлением карты шрифтов").
После этого можно использовать новые шрифты. Для этого в преамбулу (так называется весь текст tex-файла, расположенный до команды \begin{document} - ее еще иногда называют "шапкой" документа) нужно вставить строчку
\usepackage{pscyr}
причем в недрах "документации" (а именно - в конце файла README.win из архива PSCyr) указано, что
"Во избежание проблем пакет PSCyr должен загружаться перед пакетами inputenc и babel":
Контрольный пример 5
% начало контрольного примера 5 - эту строчку можно не копировать
\documentclass{article}
\usepackage{pscyr}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
% прочий текст - как в контрольном примере 4
% окончание контрольного примера 5 - эту строчку можно не копировать
Если все было сделано правильно, MiKTeX попросит загрузить пакеты t2a.enc и ttfonts.map, а после обработки tex-файла выдаст такой результат: test5.pdf.
Команду \usepackage{pscyr} можно дать с необязательным аргументом math:
\usepackage[math]{pscyr}
- в этом случае шрифт сменится и в формулах (впрочем, начертание греческих букв не поменяется): test6.pdf.
Для использования во всем документе другого шрифта нужно указать его в преамбуле с помощью команды
\renewcommand{\rmdefault}{...}
где вместо многоточия указывается короткое наименование одного из шрифтов, доступных в пакете PSCyr. Например, чтобы подключить шрифт Times New Roman, нужно дать команду
\renewcommand{\rmdefault}{ftm} % ftm = free times
Эта команда дается, как правило, одной из последних:
Контрольный пример 7
% начало контрольного примера 7 - эту строчку можно не копировать
\documentclass{article}
\usepackage[math]{pscyr}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\renewcommand{\rmdefault}{ftm} % far = free arial, чтобы подключить шрифт Arial
\begin{document}
% прочий текст - как в контрольном примере 4
% окончание контрольного примера 7 - эту строчку можно не копировать
и в результате получается вот такой документ (по умолчанию LaTeX сам подбирает положение рисунков на бумаге): test7.pdf.
* * *
О "последних двух шагах" нужно сказать отдельно. Предыдущие шаги можно повсеместно найти на просторах интернета, однако, начиная с последних версий, разработчики MiKTeX применили новый механизм включения шрифтов в файл, основанный на так называемых примитивах (что заставило пользователей практически биться в истерике и вызвало мучительные поиски решения). Это означает, что при создании документа для определения параметров шрифта программа обращается не к файлу
\pdftex.cfg
как это было раньше (именно в него мы внесли команду добавления карты шрифта +pscyr.map), а выполняет команды-примитивы. Одним из этих примитивов является команда подключения карты шрифта
\pdfmapfile{+font.map}
где font.map - файл с так называемой картой шрифта.
Согласно документации на компилятор pdftex, при вызове
\pdfmapfile{+font.map}
(описание работы этой команды дано на с. 34) в поисках файла карты шрифта происходит просмотр следующих папок: папки с проектом, системных папок, а также папок, указанных пользователем.
Из сказанного следует, что файл pscyr.map можно было бы копировать в папку
F:\LaTeXDoc\test
но, очевидно, не так много удобства в необходимости помнить о том, что в каждый проект нужно тащить еще один файл.
Поскольку одна из папок уже была явно указана нами в настройках программы TeXstudio (для целей работоспособности epstopdf), файл pscyr.map был скопирован именно туда - теперь LaTeX при подготовке любого проекта знает, где искать карту шрифта pscyr.
На самом деле после этих манипуляций можно даже не подключать пакет PSCyr командой \usepackage{pscyr}, а только указывать нужный шрифт с помощью команды \renewcommand{\rmdefault}{...} (убедиться в этом можно, закомментировав команду \usepackage{pscyr} в тексте контрольного примера 6); команда \usepackage{pscyr} нужна теперь только для того, чтобы использовать опцию math.
* * *
Согласно "документации" на PSCyr:
"Чтобы начать работу с коллекцией шрифтов PSCyr, достаточно в преамбуле ТеХ'овского документа подключить стилевой файл pscyr.sty и установить внутреннюю кодировку символов Т2А".
Таким образом, контрольные примеры 5 и 6 должны были выглядеть так:
\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage{pscyr}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
...
Судя по сведениям из сети, пакет babel самостоятельно выбирает нужную кодировку, так что контрольные примеры 5 и 6 успешно компилируются без команды
\usepackage[T2A]{fontenc}
Шрифт Computer Modern - это шрифт, поставляемый "из коробки"; очевидно, именно он был использован при подготовке тестовых файлов, упоминавшихся в самом начале. На взгляд автора, этот шрифт смотрится весьма неплохо, и единственное, чего ему не хватает - общего повышения качества выполнения, куда, в частности, входят векторизация и контрастность.
По сравнению с PSCyr решить эту проблему очень легко. Как указано в [Кузнецов, с. 8], для этого нужно лишь загрузить пакет cm-super, причем сделать это достаточно один раз - подключать его с помощью команды
\usepackage{...}
в каждом новом проекте нужды нет. Загрузка пакета cm-super выполняется с помощью программы miktex-console, которая уже упоминалась выше.
Для этого:
из F:\miktex-portable\texmfs\install\miktex\bin\x64 запускаем от имени администратора программу miktex-console (не miktex-console_admin!), приветственное предупреждение снова игнорируем;
в открытой программе открываем меню "Packages"
в строке поиска вводим название пакета: cm-super
после того как пакет будет найден, правой кнопкой мыши вызываем контекстное меню и выбираем "Install package"
программа выдаст уведомление об обновлении -> ОК
начнется загрузка пакета:
дожидаемся ее окончания, которое выглядит вот так:
Чтобы применить шрифт, удалим все команды использования pscyr (\usepackage{pscyr} и \renewcommand{\rmdefault}{...}) и соберем файл заново: test8.pdf.
К сожалению, описанный выше способ установки PSCyr имеет один недостаток - при установке нового шрифтового пакета может обнаружиться (хотя и не всегда), что включение в преамбулу команд \usepackage{pscyr} и \renewcommand{\rmdefault}{...} не дает ожидаемого результата.
Эта неприятность устраняется легко - требуется просто снова обновить карту шрифтов. Неприятностью это названо потому, что потенциально такая ситуация может возникать всякий раз при загрузке нового шрифтового пакета (прочие загруженные пакеты на это не влияют). Впрочем, это не должно сильно портить впечатление от использования PSCyr, поскольку вряд ли шрифтовые пакеты будут устанавливаться очень часто. Читателю следует иметь ввиду эту особенность, если он захочет снова переключиться на PSCyr и обнаружит, что последний не работает.
Сказанное относится и к переносимости portable-версии, о которой пойдет речь далее.
Скачать архив (miktex-portable + TeXstudio + файлы для проверки работоспособности) с подключенными PSCyr и cm-super можно по ссылке (достаточно распаковать архив и, возможно, отрегулировать некоторые настройки, о которых сказано в разделе 21).
Если со шрифтом Computer Modern все ясно, то пакет PSCyr устанавливается, главным образом, ради шрифтов Times New Roman и Arial (автору, впрочем, нравятся еще несколько). Конечно, если есть возможность обойти все указанные трудности, например, использовать системные шрифты, ей стоит воспользоваться.
Главная тонкость, которая встает на этом пути, заключается (в возможной) проблеме совместимости. Было бы неплохо, скажем, полностью перейти на LuaLaTeX - по непроверенным данным его использование позволяет почти без проблем подключать любой шрифт из числа тех, которые хранятся в папке Windows/Fonts (а также, как мы видели, при его использовании нет проблем с eps-графикой). Однако не факт, что с этим компилятором "дружат" прочие пакеты, которые, безусловно, так же потребуются в работе.
Что касается компилятора PdfLaTeX, то в сети наверняка найдется пара-другая работающих решений на тему того, как использовать шрифты Windows, однако начинающим пользователям следует иметь ввиду, что эти решения должны быть либо очень простыми, вроде
\usepackage{шрифт_который_я_хочу}
либо очень подробными, поскольку объяснить LaTeX'у, как использовать новый шрифт - задача не из легких (что было видно на примере PSCyr).
Существует довольно много пакетов, позволяющих вставлять программный код в текст документа (впрочем, не только программный - сюда же относятся, например, псевдокоды алгоритмов). Мы остановимся на пакете matlab-prettifier, поскольку он отвечает поставленной задаче в части сопряжения с Matlab.
За знакомством читатель приглашается на страницу короткой справки Overleaf. Первым делом убедимся в работоспособности пакета и заодно опробуем механизм вставки кода вручную:
Контрольный пример 9
% начало контрольного примера 9 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\usepackage{matlab-prettifier}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунков \ref{fig:ris1} и \ref{fig:ris2} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_eps}
\caption{Пример векторной графики}
\label{fig:ris2}
\end{figure}
В конце концов, в документ можно включить не только формулы. Рассмотрим, например, рисунок \ref{fig:ris3}:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{exit_way}
\caption{План эвакуации}
\label{fig:ris3}
\end{figure}
В \LaTeX{} можно вставлять \texttt{Matlab}-код. Например:
\begin{lstlisting}[
style = Matlab-editor,
frame = single,
numbers = left,
title = Пример кода №1]
%% Sample Matlab code
!mv test.txt test2.txt
A = [1, 2, 3; ... foo
4, 5, 6];
s = 'abcd';
for k = 1 : 4
Disp(s(k)) % bar
end
%{
create row vector x, then reverse it
%}
x = linspace(0, 1, 101);
y = x(end : -1 : 1);
\end{lstlisting}
\end{document}
% окончание контрольного примера 9 - эту строчку можно не копировать
Этот пример - один из тех, что приведен на странице Overleaf. Вот что получается на печати: test9.pdf.
Сегодня весьма популярно программирование на С++ и Python. Не приводя примеров в виде pdf-файлов, просто укажем, что минутный поиск по сети быстро выдаст ответ на вопрос, какие настройки следует задать пакету для того, чтобы включить в текст документа код соответствующего типа.
При рассмотрении примеров из справки Overleaf можно заметить, что ни один из них не включает в себя русскоязычных комментариев непосредственно в коде (из предыдущего примера видно, что исключение составляет заголовок кода). Попытка просто включить их в текст к успеху не приводит, и сейчас мы обсудим, что с этим можно сделать.
Причина, конечно, в том, что по умолчанию англоязычные пакеты не поддерживают кириллические символы. В качестве решения иногда предлагают предварительно конвертировать текст документа в другие кодировки (не UTF-8: к распространенным кодировкам, использующимся на Windows, относятся windows cp-1251 и koir-8), но по скромному мнению автора делать этого не нужно.
За решение проблемы выражаю признательность Роману Химову. Суть дела в том, чтобы вручную объяснить LaTeX'у, как обрабатывать каждый отдельный символ. Делается это так:
Контрольный пример 10
% начало контрольного примера 10 - эту строчку можно не копировать
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\usepackage{matlab-prettifier}
\lstdefinestyle{mystyle}{
style = Matlab-editor,
frame = single,
numbers = left,
basicstyle = \ttfamily\footnotesize}
\lstset{style = mystyle}
\lstset{
literate={а}{{\selectfont\char224}}1
{б}{{\selectfont\char225}}1
{в}{{\selectfont\char226}}1
{г}{{\selectfont\char227}}1
{д}{{\selectfont\char228}}1
{е}{{\selectfont\char229}}1
{ё}{{\"e}}1
{ж}{{\selectfont\char230}}1
{з}{{\selectfont\char231}}1
{и}{{\selectfont\char232}}1
{й}{{\selectfont\char233}}1
{к}{{\selectfont\char234}}1
{л}{{\selectfont\char235}}1
{м}{{\selectfont\char236}}1
{н}{{\selectfont\char237}}1
{о}{{\selectfont\char238}}1
{п}{{\selectfont\char239}}1
{р}{{\selectfont\char240}}1
{с}{{\selectfont\char241}}1
{т}{{\selectfont\char242}}1
{у}{{\selectfont\char243}}1
{ф}{{\selectfont\char244}}1
{х}{{\selectfont\char245}}1
{ц}{{\selectfont\char246}}1
{ч}{{\selectfont\char247}}1
{ш}{{\selectfont\char248}}1
{щ}{{\selectfont\char249}}1
{ъ}{{\selectfont\char250}}1
{ы}{{\selectfont\char251}}1
{ь}{{\selectfont\char252}}1
{э}{{\selectfont\char253}}1
{ю}{{\selectfont\char254}}1
{я}{{\selectfont\char255}}1
{А}{{\selectfont\char192}}1
{Б}{{\selectfont\char193}}1
{В}{{\selectfont\char194}}1
{Г}{{\selectfont\char195}}1
{Д}{{\selectfont\char196}}1
{Е}{{\selectfont\char197}}1
{Ё}{{\"E}}1
{Ж}{{\selectfont\char198}}1
{З}{{\selectfont\char199}}1
{И}{{\selectfont\char200}}1
{Й}{{\selectfont\char201}}1
{К}{{\selectfont\char202}}1
{Л}{{\selectfont\char203}}1
{М}{{\selectfont\char204}}1
{Н}{{\selectfont\char205}}1
{О}{{\selectfont\char206}}1
{П}{{\selectfont\char207}}1
{Р}{{\selectfont\char208}}1
{С}{{\selectfont\char209}}1
{Т}{{\selectfont\char210}}1
{У}{{\selectfont\char211}}1
{Ф}{{\selectfont\char212}}1
{Х}{{\selectfont\char213}}1
{Ц}{{\selectfont\char214}}1
{Ч}{{\selectfont\char215}}1
{Ш}{{\selectfont\char216}}1
{Щ}{{\selectfont\char217}}1
{Ъ}{{\selectfont\char218}}1
{Ы}{{\selectfont\char219}}1
{Ь}{{\selectfont\char220}}1
{Э}{{\selectfont\char221}}1
{Ю}{{\selectfont\char222}}1
{Я}{{\selectfont\char223}}1
}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунков \ref{fig:ris1} и \ref{fig:ris2} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_eps}
\caption{Пример векторной графики}
\label{fig:ris2}
\end{figure}
В конце концов, в документ можно включить не только формулы. Рассмотрим, например, рисунок \ref{fig:ris3}:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{exit_way}
\caption{План эвакуации}
\label{fig:ris3}
\end{figure}
В \LaTeX{} можно вставлять \texttt{Matlab}-код. Например:
\begin{lstlisting}[
style = Matlab-editor,
frame = single,
numbers = left,
title = Пример кода №1]
%% Пример Matlab-кода
!mv test.txt test2.txt
A = [1, 2, 3; ... foo
4, 5, 6];
s = 'abcd';
for k = 1 : 4
Disp(s(k)) % bar
end
% Так можно включить в код многострочный комментарий
%{
создайте вектор-строку x, а затем разверните ее
%}
x = linspace(0, 1, 101);
y = x(end : -1 : 1);
\end{lstlisting}
\end{document}
% окончание контрольного примера 10 - эту строчку можно не копировать
На выходе получается test10.pdf. Автор решения подчеркивает, что "это - злостный мега-костыль". Что ж, может, так оно и есть, но работает этот костыль безупречно.
Когда читатель узнает о том, как создавать свои стилевые файлы, преамбулу можно будет разгрузить, переместив определение новых символов в стилевой файл.
В целях разумной компоновки файлов с кодом, относящихся к проекту, можно поступить так же, как и с рисунками: создать папку
F:\LaTeXDoc\test\matlabcode
в которой будут храниться все файлы Matlab, использующиеся при создании документа.
Например, при подготовке тестовых файлов для получения рисунка 2 был написан следующий m-файл: test.m. Предлагается скачать и сохранить его в созданной папке matlabcode.
Программа написана так, чтобы подготовленные с ее помощью рисунки автоматически сохранялись в папке F:\LaTeXDoc\test\picturies в нужном формате (.eps). В документ код вставляется с помощью команды \lstinputlisting[<options>]{matlabcode\<filename>}:
Контрольный пример 11
% начало контрольного примера 11 - эту строчку можно не копировать
\documentclass{article}
\usepackage{cmap}
%\usepackage[T2A]{fontenc} % раскомментировать, если этого потребует применение pscyr
%\usepackage{pscyr}
%\renewcommand{\rmdefault}{ftm}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{graphicx}
\graphicspath{{picturies/}}
\usepackage{epstopdf}
\usepackage[labelsep = period, figurename = Рисунок]{caption}
\usepackage{matlab-prettifier}
\usepackage[
bookmarks = true,
colorlinks = true,
unicode = true,
urlcolor = black,
linkcolor = black,
anchorcolor = black,
citecolor = black,
menucolor = black,
filecolor = black]{hyperref}
\lstdefinestyle{mystyle}{
style = Matlab-editor,
frame = single,
numbers = left,
basicstyle = \ttfamily\footnotesize}
\lstset{style = mystyle}
\lstset{
literate={а}{{\selectfont\char224}}1
{б}{{\selectfont\char225}}1
{в}{{\selectfont\char226}}1
{г}{{\selectfont\char227}}1
{д}{{\selectfont\char228}}1
{е}{{\selectfont\char229}}1
{ё}{{\"e}}1
{ж}{{\selectfont\char230}}1
{з}{{\selectfont\char231}}1
{и}{{\selectfont\char232}}1
{й}{{\selectfont\char233}}1
{к}{{\selectfont\char234}}1
{л}{{\selectfont\char235}}1
{м}{{\selectfont\char236}}1
{н}{{\selectfont\char237}}1
{о}{{\selectfont\char238}}1
{п}{{\selectfont\char239}}1
{р}{{\selectfont\char240}}1
{с}{{\selectfont\char241}}1
{т}{{\selectfont\char242}}1
{у}{{\selectfont\char243}}1
{ф}{{\selectfont\char244}}1
{х}{{\selectfont\char245}}1
{ц}{{\selectfont\char246}}1
{ч}{{\selectfont\char247}}1
{ш}{{\selectfont\char248}}1
{щ}{{\selectfont\char249}}1
{ъ}{{\selectfont\char250}}1
{ы}{{\selectfont\char251}}1
{ь}{{\selectfont\char252}}1
{э}{{\selectfont\char253}}1
{ю}{{\selectfont\char254}}1
{я}{{\selectfont\char255}}1
{А}{{\selectfont\char192}}1
{Б}{{\selectfont\char193}}1
{В}{{\selectfont\char194}}1
{Г}{{\selectfont\char195}}1
{Д}{{\selectfont\char196}}1
{Е}{{\selectfont\char197}}1
{Ё}{{\"E}}1
{Ж}{{\selectfont\char198}}1
{З}{{\selectfont\char199}}1
{И}{{\selectfont\char200}}1
{Й}{{\selectfont\char201}}1
{К}{{\selectfont\char202}}1
{Л}{{\selectfont\char203}}1
{М}{{\selectfont\char204}}1
{Н}{{\selectfont\char205}}1
{О}{{\selectfont\char206}}1
{П}{{\selectfont\char207}}1
{Р}{{\selectfont\char208}}1
{С}{{\selectfont\char209}}1
{Т}{{\selectfont\char210}}1
{У}{{\selectfont\char211}}1
{Ф}{{\selectfont\char212}}1
{Х}{{\selectfont\char213}}1
{Ц}{{\selectfont\char214}}1
{Ч}{{\selectfont\char215}}1
{Ш}{{\selectfont\char216}}1
{Щ}{{\selectfont\char217}}1
{Ъ}{{\selectfont\char218}}1
{Ы}{{\selectfont\char219}}1
{Ь}{{\selectfont\char220}}1
{Э}{{\selectfont\char221}}1
{Ю}{{\selectfont\char222}}1
{Я}{{\selectfont\char223}}1
}
\begin{document}
\section{Проба}
\subsection{пера}
Для проверки корректной работы переносов (пакет \texttt{babel}) необходима длинная строка.
Заверстанная в строку формула: $e^{i \pi} + 1 = 0$. Один мой коллега сказал однажды, что хотя обычно пишут $e^{i \pi} = -1$, первая формула --- самая красивая, поскольку она связывает все 5 фундаментальным математических констант, в то время как второй вариант содержит только 4 из них.
А вот пример выключной формулы:
$$
\sum_{k = 1}^{n} \sin \frac{2 \pi k}{n} = 0
$$
С помощью рисунков \ref{fig:ris1} и \ref{fig:ris2} можно убедиться в том, что предыдущая формула справедлива по крайней мере для $n = 20$:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_png}
\caption{Пример растровой графики}
\label{fig:ris1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{testpic_eps}
\caption{Пример векторной графики}
\label{fig:ris2}
\end{figure}
В конце концов, в документ можно включить не только формулы. Рассмотрим, например, рисунок \ref{fig:ris3}:
\begin{figure}[h!]
\centering
\includegraphics[scale = 0.7]{exit_way}
\caption{План эвакуации}
\label{fig:ris3}
\end{figure}
В \LaTeX{} можно вставлять \texttt{Matlab}-код. Например:
\begin{lstlisting}[
style = Matlab-editor,
frame = single,
numbers = left,
title = Пример кода №1]
%% Пример Matlab-кода
!mv test.txt test2.txt
A = [1, 2, 3; ... foo
4, 5, 6];
s = 'abcd';
for k = 1 : 4
Disp(s(k)) % bar
end
% Так можно включить в код многострочный комментарий
%{
создайте вектор-строку x, а затем разверните ее
%}
x = linspace(0, 1, 101);
y = x(end : -1 : 1);
% При необходимости написать функцию для многократного
% использования, можно сделать это прямо в m-файле,
% но, в отличие от С++, они обязательно должны быть
% написаны после всего остального кода:
function y = f(x)
y = log(sin(x)) + 1;
y(gt(y, 0)) = 3;
end
\end{lstlisting}
Чтобы не оформлять код вручную, как это было сделано в предыдущем примере, можно загружать его непосредственно из файла:
\lstinputlisting[title = Пример кода №2.m]{matlabcode/test.m}
(Впрочем, для этого нужно отдельно повозиться с корректным отображением кириллицы.)
Рисунок \ref{fig:ris2} был создан именно таким образом.
\end{document}
% окончание контрольного примера 11 - эту строчку можно не копировать
Результат: test11.pdf.
Итак, остался последний вопрос: как добиться того, чтобы созданная portable-версия была таковой в полной мере?
Ответ на него состоит из двух частей.
В первую очередь, необходимо разобраться с тем, как обеспечить переносимость, т. е. как заставить LaTeX работать, если при подключении к другому компьютеру флешка получит букву, отличную от F.
С этой целью в папке F:\TeXstudioPortable\config создадим папку
F:\TeXstudioPortable\config\my_config
после чего в созданной папке сохраним текущие настройки:
Параметры -> Сохранить профиль:
в созданной папке сохраним текущие настройки - например, под именем
my_configure_f
(если при сохранении TeXstudio пожалуется на проблемы, можно сохранить файл под именем my_conigure, а затем переименовать его).
Предположим теперь, что на новом рабочем месте флешке была присвоена буква E. Тогда:
в папке E:\TeXstudioPortable\config\my_config создаем копию файла my_configure_f и переименовываем ее в my_configure_e;
открываем созданный файл my_configure_e через "Блокнот" (правой кнопкой мыши -> "Открыть с помощью"; галочку "Всегда использовать это приложение для открытия ..." можно снять, поскольку не обязательно ассоциировать файлы этого типа с блокнотом);
в меню блокнота выбираем Правка -> Заменить или нажимаем CTRL + H, после чего заполняем поля:
Что: F:
Чем: E:
(с двоеточиями!);
нажимаем "Заменить все" и закрываем блокнот с сохранением изменений.
Теперь нужно применить новые настройки в TeXstudio. Для этого:
Параметры -> Загрузить профиль:
в качестве профиля выбираем и загружаем только что отредактированный файл my_configure_e.
(При этом само окно TeXstudio ведет себя странно, меняя размер, но это мелочи - просто возвращаем его на место.)
Если теперь в настройках (Параметры -> Конфигурация TeXstudio) выбрать пункт "Команды", то можно увидеть, что буква F всюду заменена буквой E. Остается лишь попробовать скомпилировать какой-нибудь тестовый файл, чтобы убедиться, что настройки применяются корректно.
Как видно, создавать новые файлы конфигурации можно по мере нужды, и делать это нужно только один раз.
Вторая часть вопроса связана с тем, как именно файлы portable-версии могут переноситься с одного компьютера на другой.
Помимо очевидного способа с использованием флешки подойдет тот, который уже неявно использовался выше - с помощью архива (или простого копирования файлов). С учетом того, что читатель теперь знает, как настраивается программа, достаточно, например:
создать архив с программой и выложить его в общий доступ;
на новом рабочем месте скачать и распаковать архив;
применить нужные настройки.
Естественно, если на момент создания архива были уже скачаны какие-то пакеты, все они окажутся на новом рабочем месте после распаковки, что добавляет еще немного удобств.
По результатам настоящей инструкции получается вот такой дистрибутив - дело настройки LaTeX на этом заканчивается.
В заключение коротко отметим несколько важных аспектов работы в LaTeX.
Для улучшенного поиска русских слов в документе можно подключить пакет cmap (впрочем, надо отметить, что и поиск из коробки работает неплохо). Подключать его следует сразу после команды \documentclass{...}.
Пакет cmap - типичный пример того, когда для корректной работы PSCyr требуется обновление карты шрифтов после установки пакета.
Помимо того, что LaTeX дает возможность делать перекрестные ссылки по тексту, было бы неплохо, чтобы эти ссылки были интерактивными. За это отвечает пакет hyperref. Следует иметь ввиду, что пакет переопределяет многие команды из других пакетов, в связи с чем имеются разные мнения на тему того, подключать ли его первым или последним (автор придерживается второй точки зрения на основании сведений, данных компетентными людьми).
Читатель уже заметил, что пакеты cmap и hyperref включены в контрольный пример 11. Таким образом, test11.pdf - пример того, как может выглядеть на практике итоговый pdf-файл.
В контрольном примере 11 пакет hyperref подключается с необязательными настройками, отвечающими за цветовое оформление ссылок. На вкус автора ссылки должны быть просто интерактивными и не выделяться в тексте, так что всюду указан цвет black.
Когда читатель дойдет до главы IX в [Львовский], он узнает, как создавать свои собственные стилевые файлы, которые потом можно подключать с помощью команды \usepackage{...}. Этот механизм очень удобен - например, можно включить в стилевой файл все команды по добавлению кириллицы в Matlab (раздел 19), чтобы поддерживать порядок в преамбуле документа (а также ряд других команд).
Важное замечание - нужно следить, чтобы кодировки стилевого файла, tex-файла и та, которая декларируется командой
\usepackage[utf8]{inputenc}
совпадали. В противном случае возможны курьезы: в стилевом файле можно определить новую команду, которая на печати должна выдавать "и т. д.", но которая при этом на деле не будет делать вообще ничего (или выдавать крокозябры), поскольку при обращении к стилевому файлу LaTeX не сможет (корректно) прочитать таблицу кодировок.
При формировании документа довольно быстро обнаруживается, что требуется подключать не один и не два пакета, а также применять различные настройки. Эти настройки можно держать в преамбуле, а можно вынести в стилевой файл - в любом случае желательно правильно их организовать.
Суть дела в том, что одни настройки влияют на другие, так что указывать их нужно "в нисходящем порядке". Например, некоторые настройки абзаца (межстрочный интервал, межабзацный интервал) должны задаваться до макета полосы набора, т. к. значения этих величин учитываются ТеХ'ом при верстке последнего (см., например, [Львовский, с. 166]).
Вот примерная структура стилевого файла:
дополнительные пакеты;
размеры шрифтов;
настройки абзаца;
оформление заголовков;
настройки оглавления (содержания);
колонтитулы;
макет полосы набора;
дополнительные настройки;
объявление математических функций;
пользовательские команды без счетчиков;
пользовательские команды со счетчиками.
Например, благодаря тому, что на момент объявления пользовательских команд (со счетчиками или без) дополнительные пакеты уже подключены, возможности последних уже могут использоваться при разработке первых.
Хотя пакеты, включенные в ядро LaTeX (это те пакеты, которые скачиваются при загрузке дистрибутива MiKTeX с официальной страницы), отлажены и стабильны (их совместная работа не вызывает нареканий), все прочие пакеты таким свойством обладают не всегда. Это выражается в том, что команды, определенные в одном пакете, могут переопределить команды, которые используются в другом (такое нечасто, но случается). В связи с этим желательно при подготовке документа использовать именно те пакеты, которые нужны (или хотя бы, по крайней мере, не подключать их бездумно).
Первое, что нужно знать при работе с ГОСТ: если Вас просят "оформить по ГОСТ", сразу уточните - по какому? В России на данный момент требования к текстовым документам устанавливают, например, ГОСТ 7.32-2017 или ГОСТ Р 2.105-2019 (помимо ряда других возможных ГОСТов из ЕСКД или ЕСПД), и между ними есть различия.
Прискорбно, но в России есть требования к текстовым документам, однако нет ни одного инструмента по их реализации! Повсеместно используется Word, однако это связано, скорее всего, с тем, что пакет Microsoft Office занял нишу раньше всех, а не с тем, что он покрывает чуть меньше одной трети требований.
Бесплатная бизнес-идея: разработать Word-подобный "Логос", учитывающий специфику отечественных требований. Без всяких шуток, думается, этот проект нашел бы немало поддержки.
Что касается LaTeX'а, то потенциально на нем можно реализовать все, что угодно, и ГОСТы входят в число этих возможностей. Однако на практике требуется еще поискать приемлемый вариант реализации - в основном потому, что последние не всегда безупречны.
Стандартные классы (book, article, report и letter) по умолчанию используют шрифт размером в 10 пунктов (pt), а в целом поддерживают шрифты, размером не более 12 пунктов. Например, в любом из контрольных примеров можно использовать шрифт в 12 пунктов вот так:
\usepackage[12pt]{article}
В то же время при разработке документов обычно используется шрифт размера 14 пунктов. Простейшим способом использовать шрифт такого размера является скачивание пакета, содержащего уже разработанные соответствующим образом классы, например:
\usepackage[14pt]{extarticle}
Класс extarticle тоже поддерживает ограниченный набор размеров, однако он, как правило, с запасом покрывает потребности, возникающие при верстке большей части документов.
В начале разговора о разработке своего оформления первое, что нужно сделать, - повторить предупреждение, данное в [Львовский]: разработчику желательно в деталях знать книгу [Кнут]. Если же читатель все-таки возьмется за это дело, то ему будут полезны следующие руководства:
Следует иметь ввиду, что перед началом разработки желательно максимально точно представить, как должен выглядеть результат. По опыту автора, новшества лучше вносить поэтапно.
Одним из примеров правила минимального количества пакетов служит настройка макета полосы набора. В [Львовский, разд. 4.2, с. 164] сказано, что
"... значение \textheight следует устанавливать таким образом, чтобы отношение (\textheight − \topskip) / \baselineskip было целым числом."
и далее приводится пример, как это сделать.
Первое: изменять параметры страницы можно с помощью пакета geometry. Его использование весьма просто, однако автор не знает, соблюдается ли при этом указанное правило. Если разработчики пакета не предприняли каких-либо мер, то очевидно, что в общем случае ответ будет "нет".
Второе: если нужного результата можно добиться без применения пакета, то почему бы этого не сделать? Пусть мы хотим иметь следующие параметры страницы:
формат = А4;
верхнее поле = вычисляется с учетом верхнего колонтитула;
нижнее поле = 20 мм;
левое поле = 15 мм;
правое поле = 15 мм;
с одной стороны, большие поля бессмысленны (потеря места на бумаге), с другой стороны без полей нельзя (это грозит трудностями при восприятии и при печати)
на странице помещается 43 строки текста (в случае отсутствия формул).
Значения для полей справа и слева в 15 мм - это не слишком много и не слишком мало; 20 мм свободного места снизу объясняются тем, что для визуального успеха макета количество свободного места сверху и снизу должно быть примерно равным с учетом наличия сверху колонтитулов.
Немного о том, как задавать значения счетчиков, немного экспериментов - и вот результат.
Настройка макета полосы набора
% начало настройки макета полосы набора
\newlength{\lowerspace}
\newlength{\leftspace}
\newlength{\rightspace}
\newcounter{stringonpaper}
\setlength{\lowerspace}{20mm}
\setlength{\leftspace}{15mm}
\setlength{\rightspace}{15mm}
\setcounter{stringonpaper}{43}
\setlength{\marginparsep}{4mm}
\setlength{\marginparwidth}{7mm}
\setlength{\headheight}{4mm}
\setlength{\headsep}{5mm}
\setlength{\hoffset}{-1in}
\setlength{\textwidth}{\paperwidth}
\addtolength{\textwidth}{-\leftspace}
\addtolength{\textwidth}{-\rightspace}
\setlength{\evensidemargin}{\rightspace}
\setlength{\oddsidemargin}{\leftspace}
\setlength{\voffset}{-1in}
\setlength{\textheight}{\thestringonpaper\baselineskip}
\setlength{\textheight}{\baselinestretch\textheight}
%\addtolength{\textheight}{\topskip}
\setlength{\topmargin}{\paperheight}
\addtolength{\topmargin}{-\lowerspace}
\addtolength{\topmargin}{-\textheight}
\addtolength{\topmargin}{-\headsep}
\addtolength{\topmargin}{-\headheight}
% окончание настройки макета полосы набора
Обратите внимание: в отличие от [Львовский], строка \addtolength{\textheight}{\topskip} закомментирована.
Причина, по которой в [Львовский] к высоте тела документа прибавляется значение \topskip, не ясна, так как такая добавка нарушает логику расчета - по сути, она добавляет еще одну строчку (что подтвердилось при тестировании этого решения). Почему в [Львовский] рецепт приведен все-таки именно в таком виде осталось загадкой.
Наконец, если на печати получается не тот результат, который ожидался, следует убедиться, что свою лепту в это дело не вносит принтер (проследить, что печать выполняется с параметром "реальный размер" или ему подобным).
* * *
Думаю, это знакомо любому, кто писал что-либо повествовательное - в процессе работы над текстом уже видны неточности; где-то можно рассказать лучше, о чем-то хочется сказать больше. Чтобы написанное увидело свет, нужно уметь вовремя остановиться, и автор поспешит воспользоваться этим правилом.
Все остальные находки читатель сделает уже на своем собственном пути.