%!TEX TS-program = xelatex
\documentclass[12pt, a4paper]{article}

%%%%%%%%%% Програмный код %%%%%%%%%%
\usepackage{minted}
% Включает подсветку команд в программах!
% Нужно, чтобы на компе стоял питон, надо поставить пакет Pygments, в котором он сделан, через pip.

% Для Windows: Жмём win+r, вводим cmd, жмём enter. Открывается консоль.
% Прописываем pip install Pygments
% Заходим в настройки texmaker и там прописываем в PdfLatex:
% pdflatex -shell-escape -synctex=1 -interaction=nonstopmode %.tex

% Для Linux: Открываем консоль. Убеждаемся, что у вас установлен pip командой pip --version
% Если он не установлен, ставим его: sudo apt-get install python-pip
% Ставим пакет sudo pip install Pygments

% Для Mac: Всё то же самое, что на Linux, но через brew.

% После всего этого вы должны почувствовать себя тру-программистами!
% Документация по пакету хорошая. Сам читал, погуглите!


%%%%%%%%%% Математика %%%%%%%%%%
\usepackage{amsmath,amsfonts,amssymb,amsthm,mathtools}
%\mathtoolsset{showonlyrefs=true}  % Показывать номера только у тех формул, на которые есть \eqref{} в тексте.
%\usepackage{leqno} % Нумерация формул слева


%%%%%%%%%%%%%%%%%%%%%%%% Шрифты %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[british,russian]{babel} % выбор языка для документа
\usepackage[utf8]{inputenc} % задание utf8 кодировки исходного tex файла

\usepackage{fontspec}         % пакет для подгрузки шрифтов
\setmainfont{Arial}   % задаёт основной шрифт документа

\usepackage{unicode-math}     % пакет для установки математического шрифта
%\setmathfont{Asana Math}      % шрифт для математики
% \setmathfont[math-style=ISO]{Asana Math}
% Можно делать смену начертания с помощью разных стилей

% Конкретный символ из конкретного шрифта
% \setmathfont[range=\int]{Neo Euler}


%%%%%%%%%% Работа с картинками %%%%%%%%%
\usepackage{graphicx}                  % Для вставки рисунков
\usepackage{graphics} 
\graphicspath{{images/}{pictures/}}    % можно указать папки с картинками
\usepackage{wrapfig}                   % Обтекание рисунков и таблиц текстом


%%%%%%%%%% Работа с таблицами %%%%%%%%%%
\usepackage{tabularx}            % новые типы колонок
\usepackage{tabulary}            % и ещё новые типы колонок
\usepackage{array}               % Дополнительная работа с таблицами
\usepackage{longtable}           % Длинные таблицы
\usepackage{multirow}            % Слияние строк в таблице
\usepackage{float}               % возможность позиционировать объекты в нужном месте 
\usepackage{booktabs}            % таблицы как в книгах!  
\renewcommand{\arraystretch}{1.3} % больше расстояние между строками

% Заповеди из документации к booktabs:
% 1. Будь проще! Глазам должно быть комфортно
% 2. Не используйте вертикальные линни
% 3. Не используйте двойные линии. Как правило, достаточно трёх горизонтальных линий
% 4. Единицы измерения - в шапку таблицы
% 5. Не сокращайте .1 вместо 0.1
% 6. Повторяющееся значение повторяйте, а не говорите "то же"
% 7. Есть сомнения? Выравнивай по левому краю!

%%%%%%%%%% Графика и рисование %%%%%%%%%%
\usepackage{tikz, pgfplots}  % язык для рисования графики из latex'a


%%%%%%%%%% Гиперссылки %%%%%%%%%%
\usepackage{xcolor}              % разные цвета

% Два способа включить в пакете какие-то опции:
%\usepackage[опции]{пакет}
%\usepackage[unicode,colorlinks=true,hyperindex,breaklinks]{hyperref}

\usepackage{hyperref}
\hypersetup{
    unicode=true,           % позволяет использовать юникодные символы
    colorlinks=true,       	% true - цветные ссылки, false - ссылки в рамках
    urlcolor=blue,          % цвет ссылки на url
    linkcolor=red,          % внутренние ссылки
    citecolor=green,        % на библиографию
	pdfnewwindow=true,      % при щелчке в pdf на ссылку откроется новый pdf
	breaklinks              % если ссылка не умещается в одну строку, разбивать ли ее на две части?
}

\usepackage{csquotes}            % Еще инструменты для ссылок


%%%%%%%%%% Другие приятные пакеты %%%%%%%%%
\usepackage{multicol}       % несколько колонок
\usepackage{verbatim}       % для многострочных комментариев

\usepackage{enumitem} % дополнительные плюшки для списков
%  например \begin{enumerate}[resume] позволяет продолжить нумерацию в новом списке

\usepackage{todonotes} % для вставки в документ заметок о том, что осталось сделать
% \todo{Здесь надо коэффициенты исправить}
% \missingfigure{Здесь будет Последний день Помпеи}
% \listoftodos --- печатает все поставленные \todo'шки


%%%%%%%%%%%%%%%%%%%%%%%% Оформление %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[paper=a4paper,top=15mm, bottom=15mm,left=35mm,right=10mm,includefoot]{geometry}
\usepackage{indentfirst}       % установка отступа в первом абзаце главы


\title{Красивый код}
\date{\today}


\begin{document} % конец преамбулы, начало документа

\maketitle

\section{Вольфрам} 


$$
\frac{1}{\pi  \left(z^2+1\right)} \quad \text{,  if} \quad \Re\left(z^2\right)>-1
$$


\[
\left(
\begin{array}{ccccc}
\sin (x+y) & \sin \left(x^2+2 y\right) & \sin \left(x^3+3
y\right) & \sin \left(x^4+4 y\right) & \sin \left(x^5+5
y\right) \\
\sin \left(2 x+y^2\right) & \sin \left(2 x^2+2 y^2\right) & \sin
\left(2 x^3+3 y^2\right) & \sin \left(2 x^4+4 y^2\right) &
\sin \left(2 x^5+5 y^2\right) \\
\sin \left(3 x+y^3\right) & \sin \left(3 x^2+2 y^3\right) & \sin
\left(3 x^3+3 y^3\right) & \sin \left(3 x^4+4 y^3\right) &
\sin \left(3 x^5+5 y^3\right) \\
\sin \left(4 x+y^4\right) & \sin \left(4 x^2+2 y^4\right) & \sin
\left(4 x^3+3 y^4\right) & \sin \left(4 x^4+4 y^4\right) &
\sin \left(4 x^5+5 y^4\right) \\
\sin \left(5 x+y^5\right) & \sin \left(5 x^2+2 y^5\right) & \sin
\left(5 x^3+3 y^5\right) & \sin \left(5 x^4+4 y^5\right) &
\sin \left(5 x^5+5 y^5\right) \\
\end{array}
\right)
\]


\section{Как слышу так и пишу}

Окружение verbatim предназначено для буквального воспроизведения имеющихся в файле символов.

\begin{verbatim}
def monthlength(month,year):
    if year % 4 == 0:
        VisYear = 29
    else:
        VisYear = 28
    return [31,VisYear,31,30,31,30,31,31,30,31,30,31][month]
\end{verbatim}

Можно использовать это окружения для написания команд напрямую. Например, команда \verb|\dots| задает многоточие.


\section{Красивое оформление кода}

Окружение minted красиво и с автоматической подцветкой оформляет код в питоне!

\begin{minted}[breaklines,linenos]{python}
import numpy as np
import pandas as pd

#Вспомогательная функция для получения правильного количества дней. Работает даже с високосным годом.
def monthlength(month,year):
    if year % 4 == 0:
         VisYear = 29
    else:
         VisYear = 28
    return [31,VisYear,31,30,31,30,31,31,30,31,30,31][month]
\end{minted}

Можно писать математические комменатрии к коду. У пакета очень много разных опций.

\begin{minted}[mathescape]{python}
# Код ниже выдаст $\sum_{i=1}^{n}i$

def sum_from_one_to(n):
    r = range(1,n+1)
    return sum(r)
\end{minted}






\end{document} % конец документа
