Разработка модуля для автоматизации формирования отчётов

ox-gost

guap.ru

guap.ru

Обо мне

pank-su или Панков Василий

guap.ru

Обо мне

pank-su или Панков Василий

  • сотрудничаю с лабораторией геномики и палеогеномики при Зоологическом Институте

  •  

guap.ru

Обо мне

pank-su или Панков Василий

  • сотрудничаю с лабораторией геномики и палеогеномики при Зоологическом Институте
  • победитель World Skills и Volga-IT по мобильной разработке(Android)

  •  

guap.ru

Обо мне

pank-su или Панков Василий

  • сотрудничаю с лабораторией геномики и палеогеномики при Зоологическом Институте
  • победитель World Skills и Volga-IT по мобильной разработке(Android)
  • разрабатываю сайты для решения различных математических задач

  •  

guap.ru

Постановка задачи

Отчёт

guap.ru

Постановка задачи

Структура

Отчёт

guap.ru

Постановка задачи

Оформление

Структура

Отчёт

guap.ru

Постановка задачи

Оформление

​Вставка материалов

Структура

Отчёт

guap.ru

Постановка задачи

Оформление

​Вставка материалов

Структура

Отчёт

guap.ru

Постановка задачи

Отчёт

​Вставка материалов

Структура

Код

Списки

Заголовки

Мат. формулы

Легко-настраиваемый титульный лист

Включение файлов (include)

Авто-содержание

guap.ru

Возможные решения

guap.ru

Возможные решения

  • Microsoft Word

guap.ru

Возможные решения

  • Microsoft Word

Плюсы:

Минусы:

guap.ru

Возможные решения

  • Microsoft Word

Плюсы:

 

всем знаком

Минусы:


излишний функционал

 

долгая настройка

 

закрытость

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown

Плюсы:

 

Минусы:

 

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown

Плюсы:

легко экспортировать

 

популярный

 

текстовый формат 

 

простой

Минусы:

нет единого экспортера

 

нет единого приложения для редактирования

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  • LaTeX
\LaTeX

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  • LaTeX
\LaTeX \\ x^2 + 10 = \frac{1}{x} \\ \int2x = x^2

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
\LaTeX

Плюсы:

 

Минусы:

 

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
\LaTeX

Плюсы:

вид документа похож на отчёты

 

множество библиотек

 

 

Минусы:

тяжело редактировать

 

тяжёлые пакеты

 

проблемы с языками

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
  • notion
\LaTeX

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
  • notion
\LaTeX

Плюсы:

 

 

Минусы:

 

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
  • notion
\LaTeX

Плюсы:

база данных для документов

 

можно редактировать несколькими людьми одновременно

 

 

Минусы:

закрытость платформы

 

плохой экспорт

 

ограниченные возможности

guap.ru

Возможные решения

  • Microsoft Word
  • Markdown
  •  
  • notion
  • org-mode
\LaTeX

guap.ru

Emacs

guap.ru

Emacs. История

 

- (аббревиатура от «Editor MACroS») семейство многофункциональных расширяемых текстовых редакторов.

Первый выпуск: 1976 год

Ричард Столлман

GNU Emacs стал первой программой проекта GNU.

guap.ru

Emacs. Что это?

guap.ru

Emacs. Что это?

буфер (buffer)

мини-буфер (minibuffer)

Строка состояния (modeline)

guap.ru

Emacs. MiniBuffer

guap.ru

Emacs. MiniBuffer

CTRL + X

C-x C-f

ALT + X

guap.ru

Emacs. MiniBuffer

CTRL + X

ALT + X

CTRL-X CTRL-F

guap.ru

Emacs. Особенности

Особенности

  • множество комбинаций клавиш
  • возможность редактирования несколько файлов одновременно
  • легковесность
  • полная настройка
  • открытость
  • отличная документация
  • мультиплатформенность (доступен даже на android)

guap.ru

Emacs. Конфигурационный файл

(setq dashboard-startup-banner "~/.emacs.d/me/god.png")

(use-package magit)

(setq org-publish-project-alist '(("org"
				   :base-directory "c:/Users/user/Desktop/sem_6"
				   :base-extension "org"
				   :recursive t
				   :publishing-function org-html-publish-to-html
				   :publishing-directory "C:/Users/user/Desktop/sem_6/publ")))

(defun my-org-confirm-babel-evaluate (lang body)
  (not (string= lang "sql")))  ;don't ask for ditaa
(setq org-confirm-babel-evaluate #'my-org-confirm-babel-evaluate)

(setq org-babel-default-header-args:sql '(
					  (:dbuser . "org-mode")
					  (:dbpassword . "org-mode")
					  ))


(use-package company-box
  :hook (company-mode . company-box-mode))

(use-package google-translate)

guap.ru

Emacs. Lisp

(defun test ()
  "comment"
  (interactive)
  (message (+ 2 2))
)

guap.ru

Emacs. Lisp

(defun test ()
  "comment"
  (interactive)
  (message (+ 2 2))
)

guap.ru

Emacs. Lisp

(defun test ()
  "comment"
  (interactive)
  (message (+ 2 2))
)

guap.ru

Emacs. Lisp

(defun test ()
  "comment"
  (interactive)
  (message (+ 2 2))
)

guap.ru

Emacs. Lisp

Это полностью свой язык программирования, это значит, что emacs, может использоваться как интерпретатор 

guap.ru

Emacs. Mode

Mode - это некий режим работы emacs, который предусматривает работу некоторых функций и возможностей

python-mode

guap.ru

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

Документация по любой функции и по любой изменяемой (defcustom) переменной доступно с помощью C-x C-h [f/v]

Пример документации

guap.ru

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

Либо же, можно воспользоваться интернетом и просмотреть документацию по https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html или купить книжку за 50 $

guap.ru

org-mode

guap.ru

org-mode. Что это?

 - режим редактирования, форматирования и организации документов, предназначенный для заметок , планирования и авторской работы

guap.ru

org-mode. Заголовки

* Заголовок 1 уровня
** Заголовок 2 уровня
*** Заголовок 3 уровня
**** Заголовок 4 уровня
***** Заголовок 5 уровня

org-mode

HTML

guap.ru

org-mode. Форматирование текста

Текстовый вид

HTML

*жирный* =моноширный= _подчёркнутый_

~код~ большой_маленький

/italic/ +зачёркнутый+

guap.ru

org-mode. Списки

Текстовый вид

HTML

- раз
  - раз раз
    - раз раз раз
  - раз два
- два
  1. нумерация


1. первый
2. второй
3. третий
   1. 3.1

guap.ru

org-mode. Таблицы

Текстовый вид

HTML

| Плюсы                         | Минусы      |
|-------------------------------+-------------|
| это org-mode, здесь всё круто | порог входа |

guap.ru

org-mode. Блоки

#+begin_src python
print("Hello World")
#+end_src

#+begin_center
Я по центру
#+end_center

#+begin_quote
А я с отступом
#+end_quote

#+begin_verse
А
тут
меньше
\n
#+end_verse

#+begin_export html
<p style="color: red;">А я только в html</p>
#+end_export


#+begin_export latex
А я только в \LaTeX
#+end_export

Экспорт в LaTeX

guap.ru

org-mode. Блоки

Экспорт в HTML

guap.ru

org-mode. org-babel

guap.ru

org-mode. Ссылки и картинки


[[pank.su][крутой сайт]]

#+CAPTION: Картинка
[[file:images/2023-04-10_11-45-36_screenshot.png]]


org-mode (text)

org-mode (gui)

guap.ru

org-mode. Вид в emacs

guap.ru

org-mode. Настройки экспорта

#+TITLE: Это название
#+AUTHOR: Панков Вася
#+DESCRIPTION: Это описание
#+OPTIONS: toc:nil
#+LANGUAGE: ru

#+CAPTION: Тестовая картинка
#+ATTR_HTML: :width 200
[[file:images/2023-04-10_11-54-19_screenshot.png]]


#+CAPTION: Листинг
#+INCLUDE: test.html src html

Текст в org-mode

Экспорт в html

guap.ru

org-mode. Итоги

  • множество горячих клавиш, на множество действий
  • возможность программирования не выходя из emacs
  • возможность структурировать файлы и их хранение, благодаря #+INCLUDE
  • единый и легко настраиваемый экспорт во все возможные форматы

guap.ru

Собственный экспортер

HTML

\LaTeX

ODT

guap.ru

Собственный экспортер

HTML

  • удобно редактировать
  • легко менять стиль документа
  • бесстраничный формат

guap.ru

Собственный экспортер

HTML

  • удобно редактировать
  • легко менять стиль документа
  • бесстраничный формат

для нас это минус

guap.ru

Собственный экспортер

HTML

\LaTeX

ODT

guap.ru

Собственный экспортер

\LaTeX

ODT

guap.ru

Собственный экспортер

ODT

- open document text

Плюсы

Минусы

  • файл представляет собой архив
    • требует зависимости для своего создания
    • не понятно, что не так и где не так
  • xml - разметка, к которой мало документации
  • проблема со стилями
  • возможность редактирования в LibreOffice
  • понятность для тех, кто работал с .doc и .docx форматами

guap.ru

Собственный экспортер

Плюсы:

  • вид документа похож на отчёты
  • множество библиотек
  • ox-latex обладает множеством настроек, что упрощает нам создание экспорта
  • возможность редактирования .tex файла

Минусы:

  • тяжело редактировать
  • тяжёлые пакеты
  • проблемы с языками
\LaTeX

guap.ru

Собственный экспортер

Плюсы:

  • вид документа похож на отчёты
  • множество библиотек
  • ox-latex обладает множеством настроек, что упрощает нам создание экспорта
  • возможность редактирования .tex файла

Минусы:

  • тяжело редактировать
  • тяжёлые пакеты
  • проблемы с языками
\LaTeX

guap.ru

Собственный экспортер

#+LANGUAGE: ru
#+latex_class: extarticle
#+latex_class_options: [a4paper,14pt]
#+latex_header: \usepackage[utf8x]{inputenc}
#+latex_header: \usepackage[T2A]{fontenc}
#+latex_header: \usepackage[russian]{babel}
#+latex_header: \usepackage{tempora}
#+latex_header: \usepackage{geometry}
#+latex_header: \geometry{a4paper, left=30mm, top=20mm, bottom=20mm, right=15mm }
#+latex_header: \usepackage{graphicx}
#+latex_header: \usepackage{array}
#+latex_header: \usepackage{tabularx}
#+latex_header: \usepackage{listings}
#+latex_header: \usepackage{float}
#+latex_header: \usepackage{setspace}
#+LATEX_HEADER: \usepackage{tabularx}
#+latex_header: \usepackage{longtable}
#+latex_header: \usepackage{titlesec}
#+latex_header: \titleformat*{\section}{\large\bfseries}
#+latex_header: \titleformat*{\subsection}{\normalsize\bfseries}
#+latex_header: \titleformat*{\subsubsection}{\normalsize\bfseries}
#+latex_header: \addto\captionsrussian{\renewcommand{\contentsname}{\centering \normalsize СОДЕРЖАНИЕ}}
#+latex_header: \addtocontents{toc}{\protect\thispagestyle{empty}}
#+latex_header: \usepackage{titletoc}
#+latex_header: \titlecontents{section}[0pt]{}{\contentsmargin{0pt} \thecontentslabel\enspace}{\contentsmargin{0pt}}{\titlerule*[0.5pc]{.}\contentspage}[]
#+latex_header: \dottedcontents{subsection}[3.1em]{}{1.5em}{0.5pc}
#+latex_header: \usepackage{caption}
#+latex_header: \DeclareCaptionLabelSeparator{custom}{ -- }
#+latex_header: \captionsetup[figure]{name=Рисунок, labelsep=custom, font={onehalfspacing}, justification=centering}
#+latex_header: \usepackage{ragged2e}
#+latex_header: \justifying
#+latex_header: \setlength\parindent{1.25cm}
#+latex_header: \sloppy
#+latex_header: \usepackage{indentfirst}

guap.ru

Собственный экспортер


\begin{titlepage}
\centering{ГУАП} 
\vspace{32pt} 
\centering{ФАКУЛЬТЕТ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ}
\vspace{60pt} 
\raggedright{ОТЧЕТ \\
ЗАЩИЩЕН С ОЦЕНКОЙ}
\vspace{14pt} 
\raggedright{ПРЕПОДАВАТЕЛЬ}
\vspace{12pt} 

\begin{tabularx}{\textwidth}{ >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X }
    преподаватель & & %d \\
    \hrulefill & \hrulefill & \hrulefill \\
    \footnotesize{должность, уч. степень, звание} & \footnotesize{подпись, дата} & \footnotesize{инициалы, фамилия} \\
\end{tabularx}

\vspace{48pt}
\centering{ОТЧЕТЫ О ЛАБОРАТОРНЫХ РАБОТАХ} 

\vspace{76pt} 

\centering{По дисциплине: %t} 

\vspace*{\fill}

\raggedright{РАБОТУ ВЫПОЛНИЛ}

\vspace{10pt} 

\begin{tabularx}{\textwidth}{ >{\raggedright\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X }
    СТУДЕНТ ГР. № & 021к & & %a \\
    & \hrulefill & \hrulefill & \hrulefill \\
    &  & \footnotesize{подпись, дата} & \footnotesize{инициалы, фамилия} \\
\end{tabularx}

\vspace*{\fill}

\centering{Санкт-Петербург \the\year}
\end{titlepage}

guap.ru

ox-gost

Ссылка на проект на GitHub

guap.ru

Дальнейшее развитие

  • доработка экспортера
  • добавление новых ГОСТов
  • использовать данный экспортер, в других информационных системах

guap.ru

Заключение

Я хочу, чтобы каждый из вас, хотя бы попробовал поработать в emacs и в org-mode. Кому-то совершенно это не понравится, но найдутся единицы, которые останутся и смогут помочь emacs и org-mode сообществу с новыми режимами, экспортерами и исправлениями. Им правда нужна поддержка и ваше внимание.

guap.ru

Спасибо за внимание

Особая благодарность:

  • Юрьевой Ирине Александровне
  • Гайкину Кириллу Денисовичу
  • Турсуновой Лидии Сергеевне
  • Панкову Дмитрию Сергеевичу

Мой GitHub

guap.ru