Стиль LaTeX для оформления отчетов о НИР, расчётно-пояснительной записки к курсовым и дипломным работам (ГОСТ 7.32-2001 и ГОСТ РВ 15.110-2003) =========== Ориентирован на студентов IT специальностей, научных работников и др. кому необходимо составлять документы по ГОСТ 7.32-2001 или ГОСТ РВ 15.110-2003. Изначально был написан в расчёте на `pdfLaTeX`, с коммита `23b1612` добавлена поддержка `XeLaTeX`. Помимо стилей содержит "рыбу" РПЗ (в той же папке `tex`). Также имеются необходимые макеты (layout) для [LyX](http://ru.wikipedia.org/wiki/LyX) (редактор, редактирование в котором больше похоже на работу в `Microsoft Word`, чем на написание `LaTeX` кода, но результат получается такой же хороший, как в `LaTeX`). Для использования `LyX` также нужно скопировать стили LaTeX (из папки `tex`). ## Результат См. вкладку [Релизы](https://github.com/rominf/latex-g7-32/releases). ### Попробовать online Спасибо [@KMax](https://github.com/rominf/latex-g7-32/issues/11), теперь [можно попробовать](https://www.sharelatex.com/project/54885f204b9308be064f025e) шаблон в ShareLaTeX. ## Участие в проекте Стиль распространяется "как есть". В случае обнаружения несостыковок с ГОСТом, обнаружении багов, а также если есть вопросы по использованию, не отражённые в документации, заводите, пожалуйста, issue. Pull requests принимаются. ## Установка Скачать последнюю версию. C помощью git: ``` git clone https://github.com/latex-g7-32/latex-g7-32 ``` Или скачать zip: ``` https://github.com/latex-g7-32/latex-g7-32/archive/master.zip: ``` Или взять из [релизов](https://github.com/rominf/latex-g7-32/releases). Однако, релизы формируются с течением времени и могут содержать существенно устаревшую версию. Скопировать файлы: `G2-105.sty G7-32.cls G7-32.sty GostBase.clo gosttitleGostRV15-110mipt.sty gosttitleGostRV15-110.sty local-minted.sty` в локальный texmf. Для линукс это будет `$HOME/texmf/`. Для Виндовс `C:\Users\USERNAME\texmf\`. Проверить это можно командой `kpsewhich -var-value=TEXMFHOME`. Относительно texmf путь будет `texmf/tex/latex/latex-g7-32/`. ### Зависимости #### Основные для стилевого файла ##### LaTeX пакеты ``` amssymb amsmath caption flafter footmisc hyperref icomma iftex graphicx longtable underscore etoolbox lastpage titlesec flafter amssymb amsmath color mfirstuc nomencl ``` ###### openSUSE ``` texlive-latex texlive-iftex ``` #### pdfLaTeX-версия ##### LaTeX пакеты ``` cmap babel mathtext pscyr ucs ``` Для придания таймовского вида нужно установить соотв. шрифты (пакет `cyrtimes.sty`), в Debian/Ubuntu это пакет `scalable-cyrfonts-tex`. Если этого пакета нет, оно использует стандартную гарнитуру CM. #### XeLaTeX-версия ##### LaTeX пакеты ``` cm-unicode-fonts minted polyglossia xecyr ``` ###### openSUSE ``` cm-unicode-fonts texlive-minted texlive-polyglossia texlive-xecyr ``` ##### Программы ``` inkscape dia graphviz python pygments ``` #### LyX ``` lyx ``` #### Установочный скрипт ``` python3.4 ``` На текущий момент не работает см. [#26](https://github.com/rominf/latex-g7-32/issues/11). Копирует (или перемещает) файлы со стилями в общую `texmf` папку, макеты `LyX` в папку с настройками `LyX`. Для получения помощи вызовите `install.py --help`. ## Использование РПЗ После изменения РПЗ создайте директорию build в корне проекта, затем `cd ./build & cmake .. && make`. В ней появится файл РПЗ - rpz.pdf. Cmake по умолчанию собирает с xelatex. После изменения РПЗ запустите `make` в корне. Результатом будет `rpz.pdf`. Если требуется использование `pdfLaTeX` то в `Makefile` надо поменять в третье строке `xelatex` на `pdflatex`. ### Редактор Можно использовать любой редактор, например, `Kile`. На комманду `cd .. && make` вешается горячая клавиша и создаётся проект с корректным главным документом. ## Установка и использование под Windows Для работы в Windows необходимо установить следующие зависимости: 1. [dwimperl](http://dwimperl.com/windows.html) 2. [texlive](https://www.tug.org/texlive/windows.html) 3. [inkscape](https://inkscape.org/ru/download/) 4. [dia](http://dia-installer.de/) 5. [graphviz](http://www.graphviz.org/Download_windows.php) 6. [ghostscript](https://ghostscript.com/download/gsdnld.html) 7. [babun](http://babun.github.io/) — не обязательно. 8. [cmake](https://cmake.org/download/) — не обязательно при использовании `babun`, обязательно при работе без него. В случае с `babun` нужно использовать `pact install cmake`, а не самостоятельную установку из установщика на сайте. В любом случае необходимо либо иметь babun+make, либо babun+cmake, либо cmake. Внимание: CMake не собирает ничего сам, он генерирует скрипты для make (и ряда других программ), только он умеет использовать разные диалекты: nmake (из Visual Studio), mingw32-make, MSYS make, … Поэтому что‐то из этого нужно также установить. На данный момент сборка проверялась для `babun+cmake`, `babun+make` и просто нативного `cmake`. В последнем случае использовалась утилита `make` из пакета WinAVR, идентифицирующаяся как GNU make. 9. [python](https://www.python.org/downloads/windows/) — при использовании babun не нужно, он уже установлен там. После установки python установить его пакет pygments. После установки всех зависимостей необходимо добавить их в $PATH. Установщики некоторых (texlive, cmake и dwimperl) делают это сами (но, возможно, требуется установка галочки), для остальных нужно редактировать реестр, либо изменять PATH временно. В PATH помещаются каталоги, в которых находятся следующие файлы: `inkscape.exe`, `dia.exe`, `dot.exe`, `python.exe`. Ghostscript предоставляет файлы gswin32.exe и gswin32c.exe, однако для работы нужно иметь файл gs.exe или gs.bat где‐то в $PATH. В случае с bat файл должен выглядеть так: ```bat @echo off P:\ath\to\ghostscript\gswin32c.exe %* ``` (ВНИМАНИЕ: именно `gswin32c.exe`, не `gswin32.exe`.) Можно просто скопировать `gswin32c.exe` в `gs.exe` и добавить каталог с ними в `$PATH`. В случае использования python из babun вам дополнительно нужен в `$PATH` `pygmentize.bat` следующего содержания: ```bat @echo off C:\Users\{user}\.babun\cygwin\bin\python2.7.exe C:\Users\{user}\.babun\cygwin\bin\pygmentize %* ``` (замените `{user}` на своего пользователя). Что нужно в случае использования python без babun я не знаю, но исполняемый файл pygmentize должен быть в `$PATH`. После того, как `$PATH` станет содержать пути ко всем необходимым исполняемым файлам можно будет использовать выбранную систему сборки для создания PDF‐файла. В случае с babun+[c]make: 1. Откройте babun. 2. Войдите в каталог с проектом с помощью `cd /path/to/latex-g7-32`. 3. При использовании cmake: 1. Создайте каталог build: `mkdir build`. 2. Войдите в него: `cd build`. 3. Соберите проект: `cmake .. && make`. PDF появится в `/path/to/latex-g7-32/build/rpz.pdf` (он же rpz.pdf в текущем каталоге). 4. При изменении tex файлов и картинок/диаграмм/… можно собирать просто с помощью `make`. 5. При *добавлении* файлов/картинок/диаграмм нужно опять использовать `cmake ..` перед `make`. 6. Для очистки от сгенерированных файлов можно просто удалить каталог `build`. При использовании `make`: 1. Проект (пере)собирается просто `make`. PDF появится в `/path/to/latex-g7-32/rpz.pdf`. 2. Для очистки от сгенерированных файлов можно использовать `make clean`. Проверяйте их наличие с помощью `git status --ignored`, временные файлы не сконцентрированы в одном каталоге в этом случае. Нативный CMake: 1. Откройте `cmd.exe`. 2. Войдите в каталог с проектом с помощью: 1. `D:`, где `D:` — буква диска, на котором лежит проект. Данная часть предназначена для переключения текущего диска: в `cmd.exe` у каждого диска свой текущий каталог, текущий каталог `cmd.exe` является текущим каталогом текущего диска. Под `D:` здесь понимается буквально: “введите команду `D:` и нажмите ввод”. 2. `cd D:\path\to\latex-g7-32`. 3. Создайте каталог `build`: `mkdir build`. 4. Войдите в него: `cd build`. 5. Запустите `cmake ..`. Т.к. в отличие от \*nix систем (cygwin (babun) можно считать относящимся к таковым в определённой степени) на Windows нет «стандартного make», то вполне возможно, что просто `cmake ..` сделает не то, что нужно. Для GNU make из WinAVR, использовавшегося автором нужно было использовать команду `cmake .. -G "Unix Makefiles"`. Список возможных генераторов можно получить либо [на сайте CMake][cgens], либо указав `cmake` заведомо несуществующий генератор: к примеру, `cmake -G xxx_nonexistent_generator_xxx` (внимание, поведение может измениться в новой версии CMake). На сайте информация предоставлена более подробно. 6. Запустите `make`. В зависимости от того, какой генератор есть у вас в системе вместо `make` может оказаться `nmake` (распространяется с Visual Studio, соответствует `cmake .. -G "NMake Makefiles"`) или `mingw32-make` (распространяется с компилятором mingw32, соответствует `cmake .. -G "MinGW Makefiles"`). PDF файл появится в текущем каталоге (т.е. `D:\path\to\latex-g7-32\build`) под названием `rpz.pdf`. [cgens]: https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html ## Сборка с использованием Docker После установки и настройки docker (обратитесь к документации вашего дистрибутиве) создайте образ: ```Shell cd /path/to/latex-g7-32 cd docker docker build -t somename . ``` Все необходимые зависимости будут установлены внутри образа. Затем сборку можно будет осуществлять следующим образом: ```Shell rm -f /path/to/latex-g7-32/results docker run --volume /path/to/latex-g7-32/:/doc/ somename ``` Созданные файлы появятся в каталоге `/path/to/latex-g7-32/results`, его необходимо удалять перед пересборкой. При сборке этим методом шаблон собирается четырьмя способами: (make, cmake) × (pdflatex, xelatex), если вам достаточно какого‐то одного, то можно изменить `docker/build.sh`. ## Альтернативная система сборки Имеется также альтернативная система сборки с помощью модифицированного скрипта [latexmkmod](https://github.com/dvarubla/latexmkmod). Минимальные требования: сам скрипт и TeX Live. Сначала нужно установить этот скрипт. На Linux достаточно скопировать файл `latexmkmod.pl` в utils/latexmkmod. На Windows в дополнение к этому ещё нужно добавить в `PATH` интерпретатор Perl. Он обычно включён в TeX Live, может находиться, например, в C:\texlive\2017\tlpkg\tlperl\bin Для сборки выполнить либо `build.sh` (Linux), либо `build.bat` (Windows): создастся директория build и в ней будет PDF файл. Если в командной строке указать опцию `-bd mybuilddir`, то выходные файлы будут в директории mybuilddir. Если указана опция `-up`, то используется PdfLaTeX вместо XeLaTeX. Опция `-rcd ..` указывает относительный путь к текущей директории относительно директории с выходными файлами, полезно, если в Windows текущая директория содержит русские буквы. Опции latexmk также доступны (например, `-c` убирает выходные файлы) Если установлен только TeX Live, то вместо изображений dot, dia, svg отобразятся заглушки и листингов с кодом не будет. Чтобы появились изображения, нужно установить Graphviz, Dia и Inkscape. Чтобы появились листинги кода при использовании XeLaTeX, нужно дополнительно установить: Python 2 и Pygments (`pip install pygments`). Если используется PdfLaTeX, нужно установить iconv. Пути к исполняемым файлам всех программ должны быть в `PATH`, при необходимости нужно их добавить туда вручную. Пример содержимого этой переменной: `C:\Python27\;C:\Python27\Scripts;C:\texlive\2017\tlpkg\tlperl\bin;C:\texlive\2017\bin\win32;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files\Inkscape;C:\Program Files (x86)\Dia\bin;C:\Program Files (x86)\Graphviz2.38\bin;` ## Использование LyX Откройте `lyx/rpz.lyx` и редактируйте. В первый раз необходимо настроить параметры вызова XeLaTeX, для того, чтобы `minted` работал. Настроки -> Обработка файлов -> Конверторы -> LaTeX (XeTeX) -> PDF (XeTeX) -> Изменить -> Преобразователь: `xelatex -shell-escape $$i`. ## Шрифты В отчёте можно использовать свободный аналог Times New Roman - PT Astra, они находятся в репозитории в каталоге fonts. На линуксе устанавливаются в `$HOME/.fonts/` затем выполнить команды `fc-cache -f -v` и `luaotfload-tool -u -f`. На Windows шрифты нужно скопировать в каталог C:\Windows\Fonts и также желательно выполнить команду `fc-cache -f -v`, чтобы документ, использующий шрифты, быстрее компилировался. Опции класса документа, устанавливающие шрифты: 1. При использовании XeLaTeX: 1. `astra` (по умолчанию) — свободные шрифты Astra Sans, Astra Serif, Liberation Mono. 2. `times` — Шрифты Times New Roman, Arial, Courier New. Необходимо, чтобы у вас был подписан лицензионный договор с правообладателем шрифтов — компанией Monotype Imaging Inc. 3. `cm` — Шрифты CMU, которые обычно включены в TeX Live. 2. При использовании PdfLaTeX: 1. `times` (по умолчанию) — шрифты из пакета cyrtimes: Nimbus Roman и Nimbus Sans. 2. `pscyr` — шрифты из пакета pscyr: Antiqua PSCyr, Textbook PSCyr, ERKurier PSCyr. 3. `cm` — шрифты CM, которые обычно включены в TeX Live. Если какой-то шрифт не найден, то вместо него будет использоваться соответствующий шрифт CM. Эти опции нужно задавать в `\documentclass`, например так: `\documentclass[utf8x, times, 14pt]{G7-32}` ## Печать Для подготовки к печать варианты сборки с помощью Makefile и CMake имеют цель `printpdfs`. При её использовании (`make printpdfs` либо из корня репозитория, либо из каталога build в случае CMake) дополнительно создаётся до трёх PDF файлов рядом с `rpz.pdf`: `rpz.gs.pdf`, `rpz.gs-color.pdf` и `rpz.gs-gray.pdf`: - `rpz.gs.pdf` содержит все страницы, как и `rpz.pdf`, но использует меньше возможностей PDF: известно, что при печати `rpz.pdf` средствами некоторых принтеров, поддерживающих печать PDF с flash‐карты с графов может пропасть русский текст. - `rpz.gs-color.pdf` гарантированно содержит все «цветные» страницы, а также некоторые нецветные — inkscape создаёт чёрно‐белые PDF, которые ghostscript почему‐то считает нужным печатать цветными красками. - `rpz.gs-gray.pdf` содержит страницы, которые можно печатать, имея только чёрную краску. Для работы `printpdfs` требуется наличие ghostscript (команд `gs` или `gswin32c`). ## Авторы ### 1. Первая версия Алексей Томин ### 2. Доработка "дебианщика" [Михаил Конник](http://mydebianblog.blogspot.ru/2008/09/732-2001-latex.html) ### 3a. Доработка кафедры [ИУ7](http://iu7.bmstu.ru) |[Всеволод Крищенко](http://web.archive.org/web/20100424031801/http://sevik.ru/latex/)| ------------------- [Иван Коротков](https://github.com/tw33dl3dee) #### Changelog ``` 1. Заработали cases и tabular; 2. Добавлена опция utf8; 3. Комментарии в UTF-8; 4. Изменены отступы после тире в description; 5. Добавлен \paragraph; 6. Уменьшены отспупы после заголовков и учеличены --- до (хотя это, возможно, и нарушает 7-32); 7. Сделаны отсупы в оглалвнеии (ГОСТ эту тему обходит, как мы поняли); 8. \normalfont; 9. Добавлен раздел "Приложения". 9. Makefile для автоматизации рутины; 10. Рисунки (обрезка, конвертация dia, dot, svg); 11. Стили для листингов; 12. Разные мелочи. ``` ### 3b. Добавление layouts LyX [Расим (Brotherofken)](http://habrahabr.ru/post/116517/) ### 4. GitHub, поддержка XeLaTeX, LyX [Роман Инфлянскас](https://github.com/rominf) ### 5. Further fixes, tweaks and development According to the requirements of ГОСТ 7.32-2001 ред. 2009 года.pdf and some other random wishes. -- Ivan Zakharyaschev . (Read the git log... I tried to explain each change clearly.) ### 6a. Сборка под при помощи Сmake, Windows+cygwin, CMakeLists.txt, а также сборка с docker [Николай Павлов](https://github.com/ZyX-I) ### 6b. Сборка при помощи [latexmkmod](https://github.com/dvarubla/latexmkmod), Windows+Linux, [dvarubla](https://github.com/dvarubla) ## Благодарности [Ростислав Листеренко](https://github.com/kaedvann) (сообщения об ошибках) Стиль разрабатывается при поддержке ["Дизайн-центр МФТИ"](http://miptdesigncenter.tilda.ws), [НТКТеХЛАБ](http://ntktechlab.org). ## См. также ### Статьи [Записки дебианщика](http://mydebianblog.blogspot.nl/2008/11/latex.html) ### Репозитории [@qrilka: порт второй версии на `XeLaTeX`](https://github.com/qrilka/G7-32) [@petethepig: порт урезанной третьей версии ("под себя") на `XeLaTeX`](https://github.com/petethepig/diploma) ### Классы LaTeX для написания диссертаций [Russian-Phd-LaTeX-Dissertation-Template](https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template) [Класс для диссертаций disser](https://github.com/polariton/disser)