forked from sorokin/cpp-notes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
how-to-contribute.tex
173 lines (113 loc) · 8.13 KB
/
how-to-contribute.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc} % common
\usepackage[russian]{babel} % for russian lang
\usepackage{graphicx} % for add picture
%\usepackage{daytime} % for displaying version number and date
\usepackage{datetime} % for current data
\usepackage{indentfirst} % Красная строка
\usepackage[usenames]{color} % for \textcolor
\usepackage{xcolor}
\usepackage{hyperref} % for link
\definecolor{linkcolor}{HTML}{799B03} % цвет ссылок
\definecolor{urlcolor}{HTML}{799B03} % цвет гиперссылок
\hypersetup{colorlinks=true, linkcolor=linkcolor, urlcolor=urlcolor,}
\usepackage{minted} % for highlight
% seting size page
\voffset=-20mm
\textheight=220mm
\hoffset=-25mm
\textwidth=180mm
\begin{document}
\begin{center}
{\Large \bf F.A.Q. для конспектов} \\
\vspace{0.5em}
{\large Собрано {\today} в {\currenttime}}
Эта статья призвана помочь писать конспекты и стандартизировать их написание. Я не буду рассказывать все о LaTeX. Я только опишу инструменты, которыми я советую пользоваться, и которых я надеюсь вам будет достаточно.
P. S. сложно добиться того, чтобы только из pdf получилась понятная статья, поэтому это статья-пример, которой следует пользоваться так: смотрим код, потом смотрим во что это компилируется.
\end{center}
\underline{\hbox to 1\textwidth{{ } \hfil{ } \hfil{ } }}
\tableofcontents
\newpage
\section{Установка LaTeX}
\subsection{Linux}
Вам нужно установить:
\begin{enumerate}
\item texlive-live - сам LaTeX
\item minted - для вставки исходного кода
\item pygment - для minted
\end{enumerate}
\textcolor{red}{NB}) Для сборки tex-файла нужно указывать в командной строке флаг \textbf(--shell-escape)
\textcolor{red}{NB}) \href{http://tug.ctan.org/macros/latex/contrib/minted/minted.pdf}{Документация для minted}
\subsection{Win}
TODO
\section{Работа с Git}
Для того, чтобы работать над конспектом необходимо использовать git. Поэтому я привел несколько ситуации, в которые вы неизбежно попадете.
{\bf Суть:} \url{https://github.com/sorokin/cpp-notes.git} - это основной репрезиторий, на котором лежит релиз конспекта. Чтобы редактировать или создавать статьи, нужно копировать его к себе на git ({\bf forked}), а потом залить в основной репрезиторий ({\bf pull request}).
\subsection{Начало работы с основным репрезиторем}
\begin{enumerate}
\item сделать fork: на \href{https://github.com/sorokin/cpp-notes}{странице} основного репрезитория вверху справа будет нужная кнопка. (рядом с "Watch"\ )
Теперь ответвление репрезитория будет у вас на гите. Вы просто работает с ним как со своим.
\item делаем clone на свой компьютер:
\begin{minted}{bash}
git clone git://github.com/my_name/cpp-notes.git
\end{minted}
\end{enumerate}
\subsection{Работа с ответвлением}
Тут все просто: меняем, делаем коммит, потом push. Ведь это ваш репрезиторий.
\textcolor{red}{NB}) Для тех, кому не все просто, отправляю учить \href{https://git-scm.com/book/ru/v1}{основы git}
\subsection{Залив в основной репрезиторий}
Сначала нужно залить все изменения на свой git. Потом нужно кнопку \textbf{New pull request} и после этого ваши изменения предложатся создателю репрезетория.
\subsection{Добавление изменений основного репрезитория в ваш}
Рассмотрим такую ситуацию: вы работаете над статьей. И в это время, кто-то меняет основной репрезиторий. Как вам получить эти изменения и не потерять то, что вы уже сделали?
Решение:
\begin{minted}[breaklines]{bash}
git remote add sorokin "https://github.com/sorokin/cpp-notes.git" # добавим основной репрезиторий в remote
git remote -v # убедимся, что он добавился в remote
git fetch sorokin # сделаем из него ветку
git branch -v # убедимся, что появилась новая ветка со всем нужными нами изменениями
git merge sorokin/master #сливаемся с новой веткой
git push # заливаем все на нас сервер
\end{minted}
\textcolor{red}{NB}) После того, как мы получили ветку основного репрезитория, мы можем делать с ней все, что хотим. В принципе, можно делать rebase.
\textcolor{red}{NB}) Если кто не силен в ветвлении, смотрите все туже \href{https://git-scm.com/book/ru/v1}{книгу}.
\section{LaTeX}
TODO
\subsection{Структура}
\begin{enumerate}
\item Когда вы пишите статью, лучше всего делить ее на секции и подсекции, которые потом будут отражаться в оглавлении. Чем лучше структурирован текст, тем проще ориентироваться в оглавлении.
\end{enumerate}
\subsection{Вставка кода}
Для вставки исходного кода можно использовать разные средства. Я остановился на \textbf{minted}. Мне показалось, что это очень удобная и красивая библиотека. Перейдем к примерам:
Вставим код:
\begin{minted}{c++}
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl;
return 0;
}
\end{minted}
Хорошо теперь наведем порядок, написав преамбулу.
\begin{minted}
[linenos, % нумерация строк
frame=lines, framesep=2mm, % черта сверху и снизу
tabsize = 4, % размер табуляции
breaklines % перенос текста
]{c++}
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl; // comment
return 0;
}
\end{minted}
Также можно вставлять код прямо в с текст \mintinline{c++}{std::shared_ptr; // smart pointer }. И я рекомендую делать именно так.
\textcolor{red}{NB}) Есть различные стили кода, но стандартная вроде не плоха.
\subsection{Вставка ссылок и гиперссылок}
\href{http://blog.harrix.org/article/661#h2_2}{Вот статья на эту тему)}
\url{http://www-sbras.nsc.ru/win/docs/TeX/LaTex2e/hyperref_options.pdf}
Вот так можно вставлять ссылки.
Также желательно их подсветить в нормальные цвета, что я и сделал в этом документе. Но эти свойства будут прописываться в main.tex, поэтому можно об этом не волноваться.
\section{Советы и пожелания}
TODO
\end{document}