Git Product home page Git Product logo

latex-g7-32 / latex-g7-32 Goto Github PK

View Code? Open in Web Editor NEW
323.0 14.0 73.0 1.65 MB

Шаблон LaTeX для оформления отчетов о НИР, расчётно-пояснительной записки к курсовым и дипломным работам (ГОСТ 7.32-2017 и ГОСТ РВ 15.110-2003).

License: GNU General Public License v3.0

Makefile 2.24% C 0.41% TeX 32.52% Python 2.56% PHP 0.90% C++ 3.84% CMake 12.90% Shell 2.88% Batchfile 0.05% Perl 20.29% Dockerfile 1.45% NASL 10.33% HTML 0.74% BitBake 8.89%
latex xelatex lyx gost g7-32 style

latex-g7-32's Introduction

Шаблон LaTeX для оформления отчетов о НИР, расчётно-пояснительной записки к курсовым и дипломным работам (ГОСТ 7.32-2001 и ГОСТ РВ 15.110-2003)

Ориентирован на студентов IT специальностей, научных работников и др. кому необходимо составлять документы по ГОСТ 7.32-2001 или ГОСТ РВ 15.110-2003.

Изначально был написан в расчёте на pdfLaTeX, с коммита 23b1612 добавлена поддержка XeLaTeX. Помимо стилей содержит "рыбу" РПЗ (в той же папке tex).

Также имеются необходимые макеты (layout) для LyX (редактор, редактирование в котором больше похоже на работу в Microsoft Word, чем на написание LaTeX кода, но результат получается такой же хороший, как в LaTeX). Для использования LyX также нужно скопировать стили LaTeX (из папки tex).

Результат

См. вкладку Релизы.

Попробовать online

Спасибо @KMax, теперь можно попробовать шаблон в ShareLaTeX.

Участие в проекте

Стиль распространяется "как есть". В случае обнаружения несостыковок с ГОСТом, обнаружении багов, а также если есть вопросы по использованию, не отражённые в документации, заводите, пожалуйста, issue. Pull requests принимаются.

Установка

Скачать последнюю версию.

C помощью git:

git clone --recurse-submodules https://github.com/latex-g7-32/latex-g7-32

Или скачать zip:

https://github.com/latex-g7-32/latex-g7-32/archive/refs/heads/7.32-2017-dev.zip

Или взять из релизов. Однако, релизы формируются с течением времени и могут содержать существенно устаревшую версию.

Скопировать файлы: 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.

Копирует (или перемещает) файлы со стилями в общую 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

  2. texlive

  3. inkscape

  4. dia

  5. graphviz

  6. ghostscript

  7. babun — не обязательно.

  8. cmake — не обязательно при использовании 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 — при использовании 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 файл должен выглядеть так:

@echo off
P:\ath\to\ghostscript\gswin32c.exe %*

(ВНИМАНИЕ: именно gswin32c.exe, не gswin32.exe.) Можно просто скопировать gswin32c.exe в gs.exe и добавить каталог с ними в $PATH.

В случае использования python из babun вам дополнительно нужен в $PATH pygmentize.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, либо указав 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.

Сборка с использованием Docker

После установки и настройки docker (обратитесь к документации вашего дистрибутиве) создайте образ:

latex_g7_32="/path/to/latex-g7-32"
docker build -t latex-g7-32 -f "$latex_g7_32/docker/Dockerfile" "$latex_g7_32"

Все необходимые зависимости будут установлены внутри образа.

Затем сборку можно будет осуществлять следующим образом:

gio trash "$latex_g7_32/results"
docker run --volume "$latex_g7_32":/doc latex-g7-32

Созданные файлы появятся в каталоге /path/to/latex-g7-32/results, его необходимо удалять перед пересборкой. При сборке этим методом шаблон собирается четырьмя способами: (make, cmake) × (pdflatex, xelatex), если вам достаточно какого‐то одного, то можно изменить docker/build.sh.

Альтернативная система сборки

Имеется также альтернативная система сборки с помощью модифицированного скрипта 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. Доработка "дебианщика"

Михаил Конник

3a. Доработка кафедры ИУ7

Иван Коротков

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)

4. GitHub, поддержка XeLaTeX, LyX

Роман Инфлянскас

5. Further fixes, tweaks and development

According to the requirements of ГОСТ 7.32-2001 ред. 2009 года.pdf and some other random wishes. -- Ivan Zakharyaschev [email protected].

(Read the git log... I tried to explain each change clearly.)

6a. Сборка под при помощи Сmake, Windows+cygwin, CMakeLists.txt, а также сборка с docker

Николай Павлов

6b. Сборка при помощи latexmkmod, Windows+Linux,

dvarubla

Благодарности

Ростислав Листеренко (сообщения об ошибках)

Стиль разрабатывается при поддержке "Дизайн-центр МФТИ", НТКТеХЛАБ.

См. также

Статьи

Записки дебианщика

Репозитории

@qrilka: порт второй версии на XeLaTeX

@petethepig: порт урезанной третьей версии ("под себя") на XeLaTeX

Классы LaTeX для написания диссертаций

Russian-Phd-LaTeX-Dissertation-Template

Класс для диссертаций disser

latex-g7-32's People

Contributors

afaikiac avatar dvarubla avatar einhander avatar felix-neko avatar fshp avatar idamir avatar imz avatar klimentyev avatar loyd avatar mbait avatar rominf avatar tw33dl3dee avatar zyx-i avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

latex-g7-32's Issues

Центровка заголовка приложений

Приветствую! Есть ли какая-то адекватная возможность центрировать заголовки в приложениях согласно пункту 6.14.3 ГОСТа? Пока смог навелосипедить только нечто с переопределением \@startsection, но получается как-то совсем не элегантно.

[Bug] install.py error

При запуске install.py получаю следующую ошибку:
$ python3.4 install.py
Traceback (most recent call last):
File "install.py", line 58, in
local: src_tex.glob("local-.sty") + src_tex.glob(".inc.tex"),
TypeError: unsupported operand type(s) for +: 'generator' and 'generator'

Заголовки не полужирного шрифта

При сборке проекта по умолчанию, ничего в нем не меняя после клонирования репозитория, отсутствует полужирный шрифт (bold) в заголовках разделов. Аналогично для слов из глоссария и списка сокращений. При этом далее по тексту полужирный шрифт есть.
Использую:

XeTeX 3.14159265-2.6-0.99996 (TeX Live 2016)
kpathsea version 6.2.2

Все необходимые пакеты установлены.
В чем может быть проблема?

Отступы перед названиями разделов и подразделов

Подскажите, пожалуйста, как можно настроить отступы перед названиями разделов и подразделов, что результат был похож на этот пример:
screenshot from 2015-06-16 15 47 12

А сейчас отступы перед названиями разделов и подразделов выглядят так:
screenshot from 2015-06-16 15 46 42

Пробовал смотреть в файл tex/G2-105.sty, но ничего не нашел.

Заранее спасибо!

При использовании PT Astra и Times New Roman не отображаются некоторые символы

Речь идёт о том, что для следующего патча:

diff -r ca8f88281d78 tex/50-research.tex
--- a/tex/50-research.tex	Fri Aug 11 21:31:10 2017 +0300
+++ b/tex/50-research.tex	Fri Aug 11 22:58:05 2017 +0300
@@ -1,6 +1,18 @@
 \chapter{Экспериментальный раздел}
 \label{cha:research}
 
+Альфа-частицы:
+%\alpha-частицы (text, backslash),
+\(\alpha\)-частицы (math, backslash),
+α-частицы (text, unicode),
+\(α\)-частицы (math, unicode).
+
+Цельсий:
+\textcelsius{} (text, backslash),
+\(\textcelsius{}\) (math, backslash),
+℃ (text, unicode),
+\(℃\) (math, unicode).
+
 В данном разделе проводятся вычислительные эксперименты.
 А на рис.~\ref{fig:spire01} показана схема мыслительного процесса автора...
 

с установленными PT Astra результат выходит таким:

работает только α+math+backslash

А если ещё добавить

diff -r ca8f88281d78 tex/GostBase.clo
--- a/tex/GostBase.clo	Fri Aug 11 21:31:10 2017 +0300
+++ b/tex/GostBase.clo	Fri Aug 11 23:06:11 2017 +0300
@@ -3,11 +3,11 @@
 \newif\if@usebold      \@useboldfalse
 \newcommand\Gost@encoding{}
 \newcommand\Gost@LineSpread{1.3}
-\ifPDFTeX
+%\ifPDFTeX
   \newcommand\Gost@fonts{times}
-\else
-  \newcommand\Gost@fonts{astra}
-\fi
+%\else
+%  \newcommand\Gost@fonts{astra}
+%\fi
 
 \DeclareOption{a3paper}{\setlength\paperheight{420mm}\setlength\paperwidth{297mm}}
 \DeclareOption{a4paper}{\setlength\paperheight{297mm}\setlength\paperwidth{210mm}}

то будет уже лучше:

работают α+math+backslash и α+text+unicode

а с cm

diff -r ca8f88281d78 tex/GostBase.clo
--- a/tex/GostBase.clo	Fri Aug 11 21:31:10 2017 +0300
+++ b/tex/GostBase.clo	Fri Aug 11 23:10:21 2017 +0300
@@ -3,11 +3,11 @@
 \newif\if@usebold      \@useboldfalse
 \newcommand\Gost@encoding{}
 \newcommand\Gost@LineSpread{1.3}
-\ifPDFTeX
-  \newcommand\Gost@fonts{times}
-\else
-  \newcommand\Gost@fonts{astra}
-\fi
+%\ifPDFTeX
+  \newcommand\Gost@fonts{cm}
+%\else
+%  \newcommand\Gost@fonts{astra}
+%\fi
 
 \DeclareOption{a3paper}{\setlength\paperheight{420mm}\setlength\paperwidth{297mm}}
 \DeclareOption{a4paper}{\setlength\paperheight{297mm}\setlength\paperwidth{210mm}}

всё куда‐то поехало (не разбирался, что и куда, но после перехода astra→times я увидел всё то же, а с times→cm я увидел следующую страницу; вроде разница в размерах шрифтов не должна быть настолько большой), но всё работает отлично:

всё показывается как надо, кроме α+math+unicode

Вопрос: можно ли как‐то исправить первые два случая? Особенно учитывая то, что ℃ не работает вообще ни с какими ГОСТовскими шрифтами?

Релиз???

Господа, а не сделать ли нам релиз? Изменений накопилось уже много. С моей стороны в текущую версию вошло все, что я бы хотел видеть в релизе.

Нужен пример титульника

Доброго вечера!

А не сможете ли вы добавить к штатному примеру (который RPZ) ещё и титульный лист отчёта о НИР?

Очень будет пользительно.
^__^

Длинный листинг

Как‐то мне захотелось вставить слишком длинный листинг, чтобы он уместился на одну страницу (и, соответственно, в один float), но тем не менее не потерять одностраничные листинги (я не всегда хочу разрывать код) и простую возможность сделать подпись. Пакет minted предоставляет опцию newfloat, но она теряет гарантированно одностраничные листинги и вообще у меня как‐то не заработала. Как оказалось, для длинных листингов вида \begin{longlisting}\caption{Описание}\label{lst:lbl}\end{longlisting} достаточно всего двух строчек в tex/local-minted.sty: \usepackage{caption} и \newenvironment{longlisting}{\captionsetup{type=listing}}{} (не проверял, правда, будет ли листинг показан в списке листингов, которого у меня нет). Полагаю, что для pdfLaTeX будет что‐то подобное. Может, включить в шаблон?

Примеры использования шаблона

Неплохо бы добавить в README ссылки на проекты, использующие данный шаблон. Надеюсь, я не один такой, что выложил свой проект (диплом) в общий доступ?

Разделение проекта на шаблон и реализацию

Никто для себя при работе с проектом не разделял репозиторий на 2 репозитория: стили со сборочной системой и непосредственно исходники .tex, рисунки, листинги для конкретного документа?
Наверняка каждый из нас создает не единственный документ, используя этот стиль. Логично было бы иметь репозиторий со стилем, постоянно актуализировать его, что-то добавлять/изменять самому, при этом не затрагивая документ. В остальных репозиториях только файл в для документов.
Наверное, через символьные ссылки можно организовать. Пока не погружаться в эту работу. Вдруг у кого-нибудь уже были подобные мысли.

Переход на общедоступные отечественные шрифты PT Astra

http://astralinux.com/fonts.html

Требованиями органов государственного управления и иных учреждений предусмотрено применение зарубежного проприетарного шрифта Times New Roman при подготовке документов. Использование этого шрифта в операционных системах, отличных от MS Windows, требует заключения соответствующего лицензионного договора с правообладателем – компанией Monotype Imaging Inc. (США) и предусматривает денежные отчисления за каждый используемый экземпляр шрифта. Более того, в связи с санкционной политикой, проводимой в отношении Российской Федерации заключение такого лицензионного договора стало невозможным.

В целях обеспечения импортозамещения и перехода на использование отечественных информационных технологий разработчик операционных систем "Astra Linux" АО "НПО РусБИТех" и разработчик общенациональных шрифтов ООО НПП "ПараТайп" представляют общедоступные отечественные шрифты PT Astra Sans и PT Astra Serif, являющиеся полноценными метрическими аналогами зарубежного шрифта Times New Roman. Использование этих шрифтов вместо Times New Roman не приводит к искажению документов, а свободное распространение и кросс-платформенность в совокупности с замечательным дизайном делают их доступными и удобными для применения в любых операционных системах и офисных программных средствах.

metrika1
metrika2

http://www.paratype.ru/cinfo/news.asp?NewsId=3469

Совместно с разработчиком операционных систем «Astra Linux» АО «НПО РусБИТех» ПараТайп представляет общедоступные шрифты PT Astra Sans и PT Astra Serif.
Шрифты разработаны на основе Pt Sans и PT Serif, модифицированных таким образом, чтобы они подходили под стандарты оформления документов, эталоном ёмкости для которых является Times New Roman. Каждая из гарнитур представлена четырьмя базовыми начертаниями с широкой языковой поддержкой. Помимо стандартного набора знаков для работы с языками Западной и Восточной Европы, а также комплекта стандартной кириллицы, шрифты содержат знаки всех алфавитов государственных титульных языков Российской Федерации. Сформированные в рамках кроссплатформенного формата OT-TTF, шрифты дополнительно оптимизированы для экранов различного разрешения.
PT Astra Sans, PT Astra Serif спроектированы дизайнерами Александрой Корольковой и Изабеллой Чаевой и подготовлены к выпуску компанией ПараТайп в 2016 году.
Скачать PT Astra Sans
Скачать PT Astra Serif
С лицензией вы можете ознакомится, пройдя по следующей ссылке: http://astralinux.ru/ofl.html

Отдам проект в хорошие руки

Печально, но я не буду больше активно заниматься проектом. Он потерял для меня актуальность после того, как я написал диплом.

Очень приятно было получать (и не исправлять 😈) bug-report-ы, отзывы благодарных пользователей, смотреть на звёздочки на GitHub, и видеть ссылку на этот репозиторий первой по запросу "гост 7.32 latex" в Google.

Я с радостью передам стиль тому, кому он действительно нужен. Человек должен частично разбираться в дебрях TeX (полностью не разбирается даже великий Кнут!), а также LaTeX, XeLaTeX, LyX, ГОСТ и других страшных буквосочетаниях.

Документация по пакету

Мне кажется, что по пакету все же нужна документация.
Примеры это хорошо и правильно, но иногда все же требуется понять как получить какую-либо вещь и смотреть как же оно реализовано в коде не всегда удобно.
Тем более для CTAN она нужна будет.

Не работает кириллица в формулах в PdfLaTeX

При использовании PdfLaTeX в файле G2-105.sty подключается пакет mathtext c комментарием %русские буквы в формулах. Этот пакет на самом деле перехватывает определение новых символов (вроде \cyrt), делая их совместимыми с math mode, и также перехватывает смену кодировки. Поэтому он должен подключаться до fontenc, inputnenc и babel. Более того, пакет hyperref переопределяет эти же символы, и где-то внутри себя меняет кодировку. Неудивительно, что кириллица в формулах не работает и к тому же выдаются предупреждения вроде «Font shape `PD1/cmr/m/n' undefined»

У меня есть идеи, как это исправить: запоминать переопределённые символы, убирать перехватывание смены кодировки сразу перед hyperref и потом возвращать. Можно ещё адаптировать ответ с tex.stackexchange

Так ли уж нужна xelatex branch сейчас?

Может быть стоит перелить правки g7-32 из неё в основную и после этого уничтожить, чтобы не вносить сомнения. Судя по коду, master branch вполне с xelatex работает.

Использование CI для «релизов»

Предлагаю написать .travis.yml, чтобы travis автоматически собирал PDF‐ки, лучше даже четырьмя способами (cmake, make) × (pdflatex, xelatex). Можно также с помощью travis сразу выкладывать куда‐то. Я собираюсь для своего диплома сделать нечто подобное, т.к. научный руководитель просил отправлять ему PDF’ки, но это будет в одном виде (cmake + xelatex), и на bitbucket pipelines — для своих проектов я обычно выбираю bitbucket + mercurial.

Замечу, что в https://github.com/latex-g7-32/latex-g7-32/releases последний «релиз» был 28 апреля 2014 года. А README всё ещё ссылается туда, утверждая, что там результаты. Самый простой способ, по моему мнению —

  1. Создать сайт latex-g7-32.github.io, создав репозиторий, принадлежащий компании «latex-g7-32» и названный «latex-g7-32.github.io».

  2. Создать ключ для travis, сохранив его публичную часть в Settings/Deploy keys.

  3. Создать .travis.yml следующего содержания:

    sudo: false
    dist: precise
    os: linux
    language: c
    addons:
        apt:
            packages:
                - texlive-full
                - inkscape
                - make
                - cmake
                - dia
                - graphviz
                - python-pygments
    script: ./ci/build.sh
    after_success: ./ci/deploy.sh
    matrix:
        include: [{}]
  4. Создать исполняемые скрипты:

    ci/build.sh:

    #!/bin/sh
    
    set -e
    set -x
    set -u
    
    ARGS_make_pdflatex="LATEX=pdflatex"
    ARGS_make_xelatex=""
    ARGS_cmake_pdflatex="-DPREFER_XELATEX=false"
    ARGS_cmake_xelatex=""
    
    build() {
        local buildsystem=$1 ; shift
        local latex=$2 ; shift
    
        git clone --depth=1 -b travis-current-commit . ../temp
        (
            cd ../temp
    
            if test $buildsystem = cmake ; then
                mkdir build
                (
                    cd build
                    eval 'cmake .. $ARGS_cmake_'$latex
                    make
                    cp rpz.pdf ..
                )
            else
                eval 'make $ARGS_make_'$latex
            fi
    
            cp rpz.pdf ../result/rpz-${buildsystem}-${latex}.pdf
        )
        rm -rf ../temp
    }
    
    mkdir ../result
    git checkout -b travis-current-commit
    
    for buildsystem in make cmake ; do
        for latex in pdflatex xelatex ; do
            build ${buildsystem} ${latex}
        done
    done

    ci/deploy.sh:

    #!/bin/sh
    
    set -e
    set -x
    set -u
    
    chmod 0600 ci/keys/id_rsa
    mv ci/keys/id_rsa ~/.ssh
    git clone ssh://[email protected]/latex-g7-32/latex-g7-32.github.io ../site
    
    git config --global user.name 'Travis CI bot'
    git config --global user.email '[email protected]'
    git config --global push.default simple
    
    SHA="$(git rev-parse HEAD)"
    
    (
        cd ../site
        for file in ../results/*.pdf ; do
            base="$(basename "$file")"
            tgt_fname="${SHA}-$base"
            ln "$file" "$tgt_fname"
            ln -f "${tgt_fname}" "${base}"
            git add "$base" "$tgt_fname"
        done
        echo "${SHA}: $(date --utc +"%Y-%m-%d %H:%M")" >> filelist.txt
        git add filelist.txt
    )
  5. Включить travis, установить travis gem (нужен ruby и rubygems), убедиться, что он понимает, с каким репозиторием работать.

  6. Положить в ci/keys/ приватную часть ключа. Зашифровать её с помощью travis encrypt-file --add before_install --decrypt-to ci/keys/id_rsa ci/keys/id_rsa. Сделать commit с зашифрованным файлом.

  7. Если я нигде не ошибся, то после push оно заработает. Можно будет поправить README, указав, что примеры находятся в latex-g7-32.github.io/rpz-{cmake,make}-{pdflatex,xelatex}.pdf.

Поддержка пакета nomencl

В текущем коде аббревиатуры и определения находятся в отдельных файлах 10-defines и 11-abbrev, и подписаны «Абривиатуры вручную, зачем?» в rpz.tex (кстати, в комментарии две ошибки в одном слове). Есть возможность заменить эти два файла на пакет nomencl, для чего нужно:

  1. Заменить два \include в rpz.tex на \printnomenclature.

  2. Добавить в preamble.inc.tex

    % Сокращения
    \usepackage{nomencl}
    
    \renewcommand\nomname{}
    \renewcommand\nomgroup[1]{%
        \ifx#1A%
            \Abbreviations%
        \else%
            \Defines%
        \fi%
    }
    \renewcommand\nomlabel[1]{#1~---}
    \renewcommand\thenomenclature{%
        \list{}{%
            \let\makelabel\nomlabel%
        }%
    }
    
    \makenomenclature
  3. Помимо bibtex также вызывать makeindex (в #38 это есть, но закомментировано).

  4. Для создания аббревиатуры/определения использовать

    \nomenclature[A]{ABBREV}{expansion}
    \nomenclature[D]{Item}{definition}

Вопрос только в том, что эти \renewcommand вообще‐то хорошо бы отправить в какой‐нибудь .sty файл. Но если они появятся до \usepackage{nomencl}, то они будут переписаны пакетом nomencl.

Если что, в моём дипломе это генерирует две ожидаемые страницы:

обозначения и сокращения и глоссарий

Замечу, что чтобы поменять местами страницы придётся переделывать все вызовы \nomenclature (точнее, дополнительные аргументы A и D), а также второй аргумент \ifx. Думаю, имеет смысл создать команды \Abbrev и \Define в macros.inc.tex, а A и D спрятать под макросы \AbbrevPrefix и \DefinePrefix соответственно.

Несколько полезных для печати вещей

У меня в дипломе ещё есть полезный скрипт: автоматизированное разделение PDF’ки на две «только цветные страницы» и «только чёрно‐белые страницы» средствами ghostscript, конвертация pdf в pdf им же для исправления проблемы, описанной в #43 (comment). Нужно это включать в шаблон?

Уточнение, зачем нужно: на работе цветные принтеры отдельно и ими просят без нужды не пользоваться, большой офисный принтер чёрно‐белый и без конвертации не печатает (своими силами с флэшки, через компьютер отрабатывает нормально) русский текст в dot графах. Считаю такое довольно обычной ситуацией, да и при печати за деньги ч/б и цветное идёт по разным тарифам.

(Кстати, с тирэ никаких проблем у меня нигде не было ещё до волны исправлений тирэ.)

Замена gost 780u на gost

Стиль gost780u устарел, к тому же на него есть issue #15.
Мое предложение заменить его на стиль ugost2008 из дистрибутива TexLive который активно развивается.

Блок‐схемы на tikz

Как‐то я попытался вставить в свой диплом блок‐схему, но не смог обнаружить нормального пакета, чтобы он рисовал красиво и по ГОСТ:

  • Dia отвалилась почти сразу:

    1. Я попытался туда скопировать текст, но он просто не вставляется. Ужасно, т.к. я весь русский текст пишу путём «написал в Vim с включённым дополнением для транслитерации, скопировал, вставил». Нашёлся способ обхода через xdotool и через собственные возможности ввода в транслите, имеющиеся у dia, но и то, и то было неудобно.
    2. Ещё я прочитал, что требуются фиксированные соотношения сторон и размеры с заданным шагом, чего в dia я как‐то не увидел (хотя шаг, наверное, можно было изменить).
    3. Последнее, я не нашёл блоков для начала и конца цикла.
  • Dot мне показалось сложно настроить на вывод блок‐схемы как надо. В первую очередь — из‐за того, что в стандартных формах опять не было начала и конца цикла, а идея рисовать графику на HTML мне совершенно не понравилась. Или даже использовать нарисованную кем‐либо. И опять же, не видно фиксации соотношения сторон.

  • Tikz не давал сделать фиксированное соотношение сторон и опять не было блоков начала/конца цикла. Но последние удалось найти в интернете.

  • Других альтернатив я не знал.

В связи с этим я решил, что неплохо бы сделать свою блок‐схему именно на tikz — нет проблем dia, нет недоумения от HTML в dot, есть пример кода для новых форм и примеры кода блок‐схем. После того, как я понял, почему ничего не работает (неправильный идентификатор в tikzset, стиль оттуда не подгружает фигуру), переделать код прямоугольника под фиксированное соотношение сторон из стандартной библиотеки tikz особого труда не составило. После некоторого размышления было добавлено указание параметра a (определяет размер) пользователем в форме «текст либо влезет в размер, либо LaTeX остановится от бесконечной рекурсии» (как иначе делать фатальные ошибки я не знаю, искать было лень). Потом туда добавились все блоки, что я у себя использовал: начало/конец цикла (найдены на ЛОРе и перепилены), подпрограмма, ввод‐вывод, ветвление, соединитель.

Правда у всех неправильный \anchorborder и определение, влезет ли текст (они взяты от прямоугольника и оставлены как есть). \anchorborder, кажется, нужно перепилить так, чтобы он искал ближайшую к заданной точку из якорей север/юг/запад/восток (насколько я понял, этот макрос определяет, откуда пойдёт стрелка; а она должна идти только от якорей, поэтому заморачиваться с точным определением не нужно).

Основной плюс именно моих форм: вы пишете \node [io=30mm]; \node [block=30mm,join]; и получаете их ровно друг под другом: параметр задаёт размер a из https://ru.wikipedia.org/wiki/Блок-схема (да, и для соединителя, который кружок диаметром 0,5 b тоже), что позволяет делать различные блоки точно соответствующими по размеру.

Вопрос: такие блок‐схемы здесь нужны? Пакет на CTAN я сейчас не оформлю, тем более что нет решения нужного вопроса для большинства блоков: «как выдать ошибку, если текст не влезает». Для решения последнего я могу нормально поправить код «подпрограммы», но для остальных в идеале нужно бы написать что‐то, что определяет, «пересекает ли текст границу фигуры», а не «влезает ли текст в прямоугольник заданного размера», а то размер прямоугольника, гарантирующий непересечение границ текстом у того же «ветвления» слишком маленький, хотя в центр можно смело пихать текст подлиннее.

PS: фигуры: https://bitbucket.org/zyx-mephi/dip/src/ae3630154fb3a84b5d09832834fcb2c67734b667/tex/preamble.inc.tex#preamble.inc.tex-145, сама блок‐схема: https://bitbucket.org/zyx-mephi/dip/src/ae3630154fb3a84b5d09832834fcb2c67734b667/tex/92-thread-impl.tex#92-thread-impl.tex-49, результат: https://zyx-i.github.io/rpz-ae3630154fb3a84b5d09832834fcb2c67734b667.pdf, приложение В (страницы 44—48).

Имена приложений в содержании

Очень нужно в содержании именовать приложения не просто буквой, а полностью - "Приложение А ...". Сейчас там так:
image
Хотя в госте четких предписаний по этому поводу не нашел, логичнее как то указывать, что это есть "Приложение А".

Некликабельные ссылки в оглавлении

При нажатии на ссылку в оглавлении вне нумерованной части (Заключение, Литература) перехода не происходит. По крайней мере в Evince и Adobe Reader 10. Если закомментировать строку \setcounter{secnumdepth}{-1} в G2-105.sty, то ссылки становятся кликабельными, но у них появляется номер.

Ошибка с CMake при изменении исходников

Изменения исходных файлов из каталога src не отражаются в PDF файле. Подозреваю, это из-за того, что нет DEPENDS в командах перемещения или конвертирования этих файлов. Ещё странно, что компилятор LaTeX запускается, даже если вообще ни один файл не изменён.

LaTeX Error: Option clash for package caption (when making with pdflatex with texlive-2008)

Когда транслируется пример с помощью pdflatex с texlive-2008 из ALT Sisyphus (да, старый; может быть с новыми версиями такой ошибки и не будет) возникает ошибка:

! LaTeX Error: Option clash for package caption.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.7 \include{preamble.inc}

\@input{listings.inc.aux}

Подробности я записал в https://bugzilla.altlinux.org/show_bug.cgi?id=31414#c1.

Но в результате PDF какой-никакой получается.

Несколько ошибок с XeLaTeX и Polyglossia

Я обнаружил следующие ошибки при компиляции с XeLaTeX:

  1. Лишняя точка в конце номера секции
  2. \addto\captionsrussian не работает
  3. \cyr* из xecyr несовместимы с MakeUppercase (то есть, например, будет «Заключение» вместо «ЗАКЛЮЧЕНИЕ») Также их переопределяет hyperref.

Первые две я вроде исправил, а с третьей возможно несколько вариантов исправления. Самый простой и правильный вариант, очевидно, вообще не использовать эти \cyr*, но я не уверен, может ли это отразиться на совместимости. Ещё можно заменить их все, например, на последовательности с ^^^^.

Длинные тире слишком тонкие: их не видно в Adobe Reader

Есть у меня документ, содержащий длинные тире.

Я компилирую его с помощью MikTeX под Windows.

Когда я открываю PDFку с помощью Adobe Reader, то длинные тире в документе оказываются столь тонкими, что на некоторых размерах (например, 100%) вообще не видны.

Как бы это забороть?

Пример прикладываю:

% Исходная версия шаблона --- 
% https://www.writelatex.com/coursera/latex/5.2.1

% Формат ГОСТ 7.32-2001, скачать тут: https://github.com/rominf/latex-g7-32
% поправлен <USERNAME> 2015-10-31, чтобы лучше
% соответствовать ГОСТ 7.32-2001 ред. 2009 года.pdf
\documentclass[report,utf8,usehyperref]{G7-32}

%\documentclass[12pt,twoside,a4paper]{article}


\usepackage[utf8x]{inputenc} %% ваша любимая кодировка здесь

\usepackage[english,russian]{babel} %% это необходимо для включения переносов
\usepackage{cyrtimespatched}


\begin{document} % конец преамбулы, начало документа
	
	(ВОТ ТУТ ДЛИННЫЕ ТИРЕ ВИДНЫ ТОЛЬКО В 125 \%, а на 100 \% уже не видны):
	\begin{itemize}
		\item bla:
		\item bla;
		\item blablabla;
		\item blablabla;
		\item няшки;
		\item показание примера упадка и падения нравов.
	\end{itemize}
	
	
	А --- Б.
		
\end{document}


Скриншот -- тут: http://imgur.com/a/fFDzK

Разнести стили и РПЗ файлы

В репозитории каша. Ну изначально она была для того, чтобы можно было ничего никуда не копировать, а прямо так собирать, но с появлением lyx это стало тупо и не работать.

Minted в PdfLaTeX

В 40-impl.tex написано, что minted «нормально работает лишь в \XeLaTeX». Кто-нибудь знает, что конкретно не работает в PdfLaTeX? Я раньше постоянно использовал minted и PdfLaTeX и вроде бы всё было нормально.
Если же это устаревшие сведения, то, мне кажется, нужно перейти на minted. Тогда можно использовать весь UTF-8, также там более точный парсер, больше поддерживаемых языков.

Опубликовать шаблон проекта отчета по ГОСТ 7.32-2001 на ShareLaTeX

Долго время жду появление такого шаблона на ShareLaTeX, но как-то не дождусь :)

Попробовал "тупо" скопировать содержимое папки tex в новый пустой проект, переименовать rzt.tex в main.tex, чтобы сделать этот файл "главным", но валятся ошибки. Так как я ничего почти не понимаю в LaTeX, кроме использования базового синтаксиса, то решить их у меня пока не получается.

Буду благодарен за любую помощь!

Как я понимаю ниже, это описание окружения, в котором компилируется проект:

    This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2014.10.28)  10 DEC 2014 15:10
    entering extended mode
    \write18 enabled.
    %&-line parsing enabled.

Ошибка при добавлении второго minted листинга при использовании make

Со слов @dvarubla:
Вообще я обнаружил весьма неприятную вещь. В текущей системе сборки с Make зависимости генерируются с помощью texdepend, а этот скрипт, увы, для их нахождения проходит регулярными выражениями по исходникам. В результате, когда я просто попытался добавить второй Minted листинг кода, я получил ошибку о ненайденном файле. Листинг кода, который есть сейчас, работает только потому что такой же файл test.c подключается с помощью \lstinputlisting. То есть система не совсем рабочая.
Я вижу два пути решения. Либо копировать все исходные файлы и генерировать все изображения, независимо от того, используются ли они (как это сделано в системе сборки с CMake), либо использовать мой скрипт.

Как решение пока можно собирать с помошью cmake.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.