# Установка и сборка * [Быстрый старт](#Быстрый-старт) * [Компиляция черновика](#Компиляция-черновика) * [Простые ошибки](#Простые-ошибки) * Установка * [В Ubuntu с TexLive внутри контейнера DockerTex](#В-ubuntu-с-texlive-внутри-контейнера-dockertex) * [В Ubuntu](#В-ubuntu) * [В Debian](#В-debian) * [В Fedora](#В-fedora) * [В Gentoo](#В-gentoo) * [TeXLive на Linux в обход привязанных к конкретному линуксу пакетам](#texlive-на-linux-в-обход-привязанных-к-конкретному-линуксу-пакетам) * [В MacOS 10.10 и выше](#В-MacOS-1010-и-выше) * [Установка шрифтов PSCyr](#Установка-шрифтов-pscyr) * [Рабочий способ установки в Ubuntu 15.10](#Рабочий-способ-установки-в-ubuntu-1510) * [Установка в MacOS 10.x](#Установка-в-macos-10x) * [Рабочий способ установки в Debian 9](#Рабочий-способ-установки-в-debian-9) * [Сборка PDF из командной строки](#Сборка-pdf-из-командной-строки) * Разное * [Пакеты и версии LaTeX](#Пакеты-и-версии-latex) * [Редактирование текста](#Редактирование-текста) * [Форматирование исходного кода](#Форматирование-исходного-кода) * [Сжатие файлов](#Сжатие-файлов) * [Пересборка pdf для типографии](#Пересборка-pdf-для-типографии) * [Отчёт о времени сборки](#Отчёт-о-времени-сборки) * [Сборка графики `.tikz`](#Сборка-графики-tikz) ## Быстрый старт 1. Скачать шаблон в архиве или клонировать этот репозиторий. 2. Установить в вашей среде компиляции (например, в редакторе TeXStudio) движок библиографии `Biber`. 3. Скомпилировать `dissertation.tex` для получения диссертации и `synopsis.tex` для получения автореферата. 4. Убедиться, что всё успешно компилируется на вашем компьютере (`Warning` в `*.log` файле компиляции допустимы). 5. Если что-то не устраивает в оформлении — проверьте закомментированые возможности в файлах шаблона, много тонкостей в ГОСТ не определены. Например, в файле `biblatex.tex` можно отключить отображение в списке литературы полей DOI и ISBN, а в `styles.tex` строчкой `\linespread{1.42}` можно сделать полуторный интервал между строчками «как в Ворде» (несколько шире, чем общепринятый «типографский», поэтому на страницу влезет меньше текста). ## Компиляция черновика Для включения режима черновика можно выполнить любое из следующих действий: - в файле `usercfg.mk` добавить строчку `DRAFTON ?= 1` - в файле `setup.tex` поменять значение параметра `draft` на 1 - запустить команду `make draft` или `make DRAFTON=1` При этом шаблон будет собираться с некими отклонениями от ГОСТ, но в несколько раз быстрее (в основном отличия касаются оформления списка литературы). Этот режим удобен при промежуточных сборках, например, во время набора формул. **Обратите внимание**: нумерация работ в списке литературы при использовании режима черновика может быть неверной. Кроме того, при использовании `biblatex` в режиме черновика не ведётся подсчёт количества пунктов в списке литературы. Пользователи Linux могут применять команды `make dissertation-preformat` и `make synopsis-preformat`, чтобы использовать предварительное форматирование преамбулы диссертации и автореферата (может потребоваться установка пакета [`texlive-mylatexformat`](https://ctan.org/pkg/mylatexformat)). Это позволяет ускорить сборку ещё приблизительно в 1.5 раза (на повторную сборку черновика диссертации на компьютере с процессором Intel i5 требуется около двух секунд). ## Простые ошибки Если не собирается библиография, ссылки на литературу отображаются вопросами или жирными названиями: 1. Попробовать поменять параметр `bibliosel` в соответствующем файле `setup.tex`, подробнее читать [«в случае проблем с библиографией»](Bibliography.md#В-случае-проблем). 2. Очистить папки проекта от прошлых временных файлов (`*.aux`, `*.toc`, `*.bbl`, `*.bcf`, `*.synctex.gz` и прочие подобные). 3. Убедиться, что в вашей среде компиляции (например, в редакторе TeXStudio) правильно выбран движок библиографии (в соответствии с параметром `bibliosel` в каждом из файлов `setup.tex`). 4. Провести несколько компиляций проекта. 5. Если ничего из предыдущих пунктов не помогло, запустить `latexmk` на главном файле автореферата или диссертации, или выполнить [соответствующий `make`](#Сборка-pdf-из-командной-строки). Если компилируется с ошибками, то изучение соответствующего `*.log` файла может помочь определить причину (как правило, ошибки вызваны отсутствием необходимых пакетов или их версий). Часто первая ошибка в `*.log` файле является первопричиной остальных. ## Установка ### В Ubuntu с TexLive внутри контейнера DockerTex > Протестировано в Ubuntu 16.04 LTS и Ubuntu 18.04 LTS Для обеспечения максимальной воспроизводимости сборки проекта рекомендуется использовать специализиарованный Docker-контейнер от проекта [dockertex](https://gitlab.com/raabf/dockertex), базирующийся на Debian Buster 10 и TexLive 2018, с минимальной модификацией (добавлением пакета шрифтов от Microsoft - `ttf-mscorefonts-installer` и набора шрифтов Liberation в виде пакета `fonts-liberation`). Образ контейнера объемом около 2.5 Гб будет загружен из сети, при этом с учетом этапа распаковки в системе потребуется около 8 Гб свободного места в каталоге `/var`. Установка контейнера в вашу систему выполняется путем запуска соответствующего скрипта, находящегося в корне этого шаблона: ```bash sh install-dockertex.sh ``` Далее необходимо выйти из системы и зайти снова (либо перезагрузиться). После этого станут доступны две новых команды - `dockertex` и `dockertexstudio`. Для TexStudio будет создан ярлык с названием *Docker TexStudio (texlive2018)* в категории *Office*. **Команда `dockertex`** используется для сборки проекта - диссертации, автореферата и презентации (по сути это `make` без аргументов): ```bash dockertex make ``` После выполнения команды будут созданы три PDF-файла: `dissertation.pdf`, `presentation.pdf` и `synopsis.pdf`. При необходимости можно запустить `make clean`: ```bash dockertex make clean ``` Остальные аргументы `make` могут быть вызваны аналогично. **Команда `dockertexstudio`** используется для запуска TexStudio из контейнера: ```bash dockertexstudio ``` После открытия файла `dissertation.tex` и нажатия будет создан PDF диссертации. ### В Ubuntu > Протестировано на Ubuntu 19.04. > Для LTS-версий рекомендуется использование [DockerTex](#В-ubuntu-с-texlive-внутри-контейнера-dockertex) Для установки XeTeX в Ubuntu и необходимых дополнительных пакетов можно использовать команду: ```bash sudo apt-get install make texlive-xetex texlive-generic-extra texlive-lang-cyrillic texlive-lang-french texlive-science fonts-liberation latexmk biber ``` или для установки полного комплекта программ: ```bash sudo apt-get install texlive-full ``` Для использования шрифтов Microsoft требуется их установка. Например, для Ubuntu это можно сделать так: ```bash sudo apt-get install ttf-mscorefonts-installer sudo fc-cache -fv ``` ### В Debian > Протестировано на Debian 10. Установка аналогична Ubuntu. Для установки шрифтов Microsoft должен быть подключен репозиторий `contrib`. ### В Fedora > Протестировано на Fedora 27. Для установки XeTeX необходимо установить следующие пакеты: ```bash sudo dnf install texlive-xetex latexmk texlive-hyphen-russian biber \ texlive-extsizes texlive-cm texlive-amscls texlive-nag \ texlive-polyglossia texlive-euenc texlive-multirow \ texlive-makecell texlive-ec texlive-was texlive-zapfding \ texlive-totcount texlive-totpages texlive-interfaces \ texlive-tocloft texlive-tabulary texlive-floatrow \ texlive-biblatex texlive-biblatex-gost texlive-cite \ texlive-bibtex texlive-impnattypo texlive-cleveref \ texlive-tabu texlive-mwe ``` Далее можно установить шрифты из набора [Microsoft's Core Fonts](http://mscorefonts2.sourceforge.net/). Например, так: ```bash sudo dnf install http://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm sudo fc-cache -fv ``` > В Fedora 23 есть проблема > ([#84](https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template/issues/84)) > с компиляцией библиографии с помощью `biblatex` и `biber`, поэтому необходимо > переключиться на использование `bibtex`. Для этого в файле > `Dissertation/setup.tex` переключите `\setcounter{bibliosel}{1}` в `0`, чтобы > получилось `\setcounter{bibliosel}{0}`. Ту же самую операцию повторите в файле > `Synopsis/setup.tex`. ### В Gentoo В репозиториях Gentoo лежит относительно старая версия TeXLive и сопутствующих пакетов, однако особых проблем с ними возникнуть не должно. Следует учитывать лишь два момента: - Устаревший `dev-tex/latexmk` (на 31.05.2019). В репозитории лежит версия 456, которая не позволит собрать проект. Необходимо [создать собственный репозиторий](https://wiki.gentoo.org/wiki/Custom_repository) и скопировать в него ебилд от 456 версии, переименовав в соответствии с актуальной (на данный момент это 464a). (Если просто скопировать ебилд под новым именем в тот же самый главный репозиторий, то при очередном `emerge --sync` он будет перезатерт.) - Стилевой файл `impnattypo.sty`, необходимый для сборки проекта, отправлен мейнтейнерами в пакет `dev-texlive/texlive-langfrench`, поэтому кроме основных пакетов необходимо установить и его. ### TeXLive на Linux в обход привязанных к конкретному линуксу пакетам [How to install «vanilla» TeXLive on Debian or Ubuntu?](http://tex.stackexchange.com/a/95373) — инструкция на английском языке, как ставить TeXLive на Linux в обход привязанных к конкретному линуксу пакетам (на примере Debian и Ubuntu). ### В MacOS 10.10 и выше Для установки в среде MacOS достаточно установить пакет MacTeX [отсюда](https://tug.org/mactex/mactex-download.html). После установки необходимо добавить пути к установленным файлам в переменную окружения `PATH`, например, так: ```bash export PATH=$PATH:export PATH=$PATH:/Library/TeX/texbin ``` Чтобы сделать эффект постоянным можно добавить эту строку в `.bash_profile`: ```bash echo "export PATH=$PATH:export PATH=$PATH:/Library/TeX/texbin" >>~/.bash_profile ``` Теперь при следующем логине, вам будут доступны утилиты из пакета, необходимые для работы `make`-скриптов. ### Установка шрифтов PSCyr PSCyr — это пакет красивых русских шрифтов для LaTeX. К сожалению, его нужно устанавливать отдельно. Если он у вас не установлен, то ничего страшного — шаблон заработает и без него. Ну лучше бы его всё-таки поставить. Инструкции по установке PSCyr для различных конфигураций приведены [в файле `PSCyr/README.md` внутри репозитория](https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template/blob/master/PSCyr/README.md). Если вы не нашли подходящую вам инструкцию, но смогли выполнить установку самостоятельно, то большая просьба [поделиться](https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template/pulls) вашими наработками. #### Рабочий способ установки в Ubuntu 15.10 (компиляция из [инструкции на welinux](https://web.archive.org/web/20190609183954/http://welinux.ru/post/3200/) и файлов, которые есть в шаблоне) Нужно скачать шаблон, найти в папке PSCyr файл pscyr0.4d.zip и распаковать его содержимое куда угодно. Чтобы не переписывать пути, папка с содержимым должна называться PSCyr, а не pscyr, как в архиве. Затем надо зайти в терминал, перейти к тому каталогу, где лежит папка PSCyr с содержимым, и выполнить команды из вышеупомянутого руководства: ```bash mkdir ./PSCyr/fonts/map ./PSCyr/fonts/enc cp ./PSCyr/dvips/pscyr/*.map ./PSCyr/fonts/map/ cp ./PSCyr/dvips/pscyr/*.enc ./PSCyr/fonts/enc/ echo "fadr6t AdvertisementPSCyr \"T2AEncoding ReEncodeFont\"" > ./PSCyr/fonts/map/pscyr.map ``` Дальше надо узнать, где у вас локальный каталог texmf. Для этого выполняем ```bash kpsewhich -expand-var='$TEXMFLOCAL' ``` С вероятностью около единицы результат будет `/usr/local/share/texmf/`. Копируем всё туда: ```bash sudo cp -R ./PSCyr/* /usr/local/share/texmf/ ``` Ну и подключаем: ```bash sudo texhash updmap --enable Map=pscyr.map sudo mktexlsr ``` #### Установка в MacOS 10.x 1. Скачать файлы со шрифтами и распаковать их в одну папку. 2. Создать/отредактировать файл `install.sh`, чтобы он содержал следующее: ```bash #!/bin/sh INSTALLDIR=`kpsewhich -expand-var='$TEXMFLOCAL'` mkdir -p $INSTALLDIR/{tex/latex,fonts/tfm/public,fonts/vf/public,fonts/type1/public,fonts/map/dvips,fonts/afm/public,doc/fonts}/pscyr mv dvips/pscyr/* $INSTALLDIR/fonts/map/dvips/pscyr mv tex/latex/pscyr/* $INSTALLDIR/tex/latex/pscyr mv fonts/tfm/public/pscyr/* $INSTALLDIR/fonts/tfm/public/pscyr mv fonts/vf/public/pscyr/* $INSTALLDIR/fonts/vf/public/pscyr mv fonts/type1/public/pscyr/* $INSTALLDIR/fonts/type1/public/pscyr mv fonts/afm/public/pscyr/* $INSTALLDIR/fonts/afm/public/pscyr mv LICENSE doc/README.koi doc/PROBLEMS ChangeLog $INSTALLDIR/doc/fonts/pscyr mktexlsr echo "Map pscyr.map\n" >> $INSTALLDIR/web2c/updmap.cfg updmap-sys ``` 3. Запустить полученный скрипт с помощью `sudo`: ```bash sudo bash ./install.sh ``` #### Рабочий способ установки в Debian 9 Аналогично тому как в Ubuntu не проходит, возникают сложности с правами доступа к некоторым файлам. Разбираюсь в чем дело. Выводит в лог следующее сообщение: ```bash /usr/local/share/texmf/tex/latex/pscyr/pscyr.sty: Permission denied /usr/share/texmf/tex/latex/pscyr/pscyr.sty: Permission denied ``` ## Сборка PDF из командной строки Сборку можно производить следующими командами: * диссертация: `latexmk -pdf -pdflatex="xelatex %O %S" dissertation` * автореферат: `latexmk -pdf -pdflatex="xelatex %O %S" synopsis` Либо можно использовать make-файлы (движок `xelatex`): из корневого каталога выполнять * `make` для сборки всего * `make dissertation` для сборки диссертации, * `make synopsis` для сборки автореферата, * `make presentation` для сборки презентации для доклада, * `make dissertation-draft` для сборки диссертации в режиме черновика, * `make synopsis-draft` для сборки автореферата в режиме черновика, * `make synopsis-booklet` для сборки автореферата для печати, * `make presentation-booklet` для сборки презентации для печати, * `make presentation-handout` для сборки раздаточных материалов, * `make draft` для быстрой сборки диссертации и автореферата в режиме черновика, * `make release` для сборки всего и внесения финальных *.pdf файлов в систему контроля версий git * `make clean` очистка от временных файлов * `make distclean` очистка всех генерируемых файлов (включая *.pdf*) * `make pdflatex` сборка полной версии с движком `pdflatex` (несколько быстрее для автореферата, чем `xelatex`, движок для библиографии в соответствии с настройками [`setup.tex`](../common/setup.tex)). Презентация может собираться собираться любым из трёх движков: `pdflatex`, `xelatex`, `lualatex`. ## Разное ### Пакеты и версии LaTeX * Шаблон по умолчанию включает ряд распространённых пакетов, чтобы вы могли сразу ими пользоваться. Однако, на вашей машине какие-то пакеты могут быть не установлены. Если вам они не нужны, то вы можете их просто удалить (команда `\usepackage{<имя пакета>}`). * Лучше всего использовать актуальные и полные версии LaTeX-дистрибутивов, это поможет избежать многих проблем. Например, [MikTeX](http://miktex.org/download) 2.9.6361+ для Windows или [TeXLive](http://www.tug.org/texlive/acquire.html) 2017+ для множества ОС. ### Редактирование текста * Если у вас ещё не сформировались предпочтения по LaTeX-редактору, то обратите внимание на [TeXStudio](https://texstudio.org/#download), существующий для всех основных платформ. * Некоторые редакторы (в том числе TeXStudio) позволяют подключить проверку грамматики с помощью [Language Tool](http://wiki.languagetool.org/checking-la-tex-with-languagetool) (есть поддержка русского языка). Полностью от ошибок он не спасёт, но поиск простых случаев облегчает. Например, в предложении «Как правило слон больше черепахи.» он попросит поставить запятую, если одно и то же слово используется подряд (или с интервалом в несколько слов) — LT второе слово подчёркнет и при необходимости не сложно понять, есть смысл использовать синоним, может быть написать «этот, который» или так и оставить. Подобных простых проверок — [сотни](https://github.com/languagetool-org/languagetool/blob/master/languagetool-language-modules/ru/src/main/resources/org/languagetool/rules/ru/grammar.xml). ### Форматирование исходного кода Программа [`latexindent`](https://www.ctan.org/pkg/latexindent) позволяет форматировать исходный код `.tex` файлов. Это делает код более читаемым и единообразным. Для форматирования пользовательских документов можно использовать команду: ```bash make indent ``` Можно указывать другой файл для форматирования. Например, для форматирования только файла `MyFILE.tex`: ```bash make indent INDENT_FILES=MyFILE.tex ``` По умолчанию настройки форматирования считываются из файла `indent.yaml`. Для использования другого файла настроек, наберите в командной строке: ```bash make indent INDENT_SETTINGS=mysettings.yaml ``` ### Сжатие файлов Размер выходных `.pdf` файлов может быть большим. Особенно, если в тексте присутствует много рисунков с большим разрешением. Программа [`gs`](https://ghostscript.com/) позволяет значительно уменьшить размер `.pdf` файлов за счёт снижения качества растровых изображений. Для сжатия файла диссертации можно использовать команду: ```bash make compress-lowdpi ``` Сжатый файл будет создан с суффиксом `*_lowdpi.pdf` По умолчанию, разрешение изображений снижается до 144 DPI. Изменить разрешение и другие нюансы можно путём редактирования файла [`compress.mk`](../compress.mk#L36-L60) Сжать произвольный pdf файл `somefile.pdf` можно командой: ```bash make compress-lowdpi COMPRESS_FILE=somefile ``` ### Пересборка pdf для типографии Типографии могут выдвигать специальные требования к pdf файлам. Наиболее типичными являются: * отсутсвие прозрачности * задание всех цветов в CMYK * использование формата PDF версии 1.3 Для приведения pdf в соотвествие с данными требованиями можно использовать команду: ```bash make compress-cmyk ``` Принцип работы и возможные побочные эффекты описаны в [`compress.mk`](../compress.mk#L64-L143). ### Отчёт о времени сборки Для вывода на экран в конце сборки информации о затраченном времени можно использовать флаг `TIMERON=1`. К примеру, запуск команды ```bash make synopsis TIMERON=1 ``` выведет на экран в конце сборки информацию о времени, затраченном на каждый вызов используемого движка latex, а также суммарно затраченное время. ### Сборка графики `.tikz` В процессе создания графики с использованием библиотеки [`tikz`](https://en.wikipedia.org/wiki/PGF/TikZ) требуется частая компиляция исходного файла. Производить её вместе с остальным текстом довольно затратно по времени. Для ускоренной компиляции файлов `.tikz` отдельно от остального шаблона предусмотрен рецепт `make tikz`. Для запуска компиляции рисунка требуется задать путь к файлу `.tikz` при помощи переменной `TIKZFILE`. Например, ```bash make tikz TIKZFILE=Presentation/images/tikz_plot.tikz ``` сгенерирует файл `tikz_plot.pdf` в корневой папке. ### Генерация раздаточного материала Для защиты может потребоваться печать раздаточного материала презентации. В этих материалах содержатся слайды презентации и, возможно, комментарии к ним. Для генерации раздаточных материалов в шаблоне предусмотрен файл `presentation_handout.tex`. Первым делом требуется сгенерировать саму презентацию `presentation.pdf`. Далее, в файле `presentation_handout.tex` надо добавить слайды с соответствующими комментариями при помощи макро `\includeslide`. Выходной файл `presentation_handout.pdf` генерируется при помощи команды ```bash make presentation-handout ```