@@ -1,3 +1,7 @@
1+% creator: ilyakooo0
2+% extra credit: dashared
3+% version: 1.0.4
4+
15\NeedsTeXFormat{LaTeX2e}
26
37\ProvidesClass{TechDoc}
@@ -23,6 +27,8 @@
2327\RequirePackage{enumitem}
2428\RequirePackage{tocloft}
2529\RequirePackage{caption}
30+\RequirePackage{etoolbox}
31+\RequirePackage{iflang}
2632
2733\setcounter{secnumdepth}{4}
2834
@@ -39,13 +45,12 @@
3945
4046
4147\setenumerate[1]{label={\arabic*)}}
42−\setenumerate[2]{label={\asbuk*)}}
43−\setenumerate[3]{label={\roman*)}}
44−
48+\setenumerate[2]{label={--}}
49+\setenumerate[3]{label={\asbuk*)}}
4550
46−\DeclareUnicodeCharacter{306}{{\color{red} \textbf{По всей видимости либо ты откуда-то не очень хорошо скопировал, либо у тиебя с вводом что-то не то потому что буква Й у тебя состоит из двух скаляров юникода. Удали этот Й и напечатай его заново. (Выйди и зайди норимально)} }}
51+\DeclareUnicodeCharacter{306}{{\color{red} \textbf{По всей видимости либо ты откуда-то не очень хорошо скопировал, либо у тебя с вводом что-то не то, потому что буква Й у тебя состоит из двух скаляров юникода. Удали этот Й и напечатай его заново. (Выйди и зайди нормально)} }}
4752
48−\RequirePackage[main=russian,english]{babel}
53+\RequirePackage[russian,english]{babel}
4954
5055\titlelabel{\thetitle.~}
5156
@@ -66,9 +71,17 @@
6671}
6772
6873\geometry{left=20mm, right=10mm, top=25mm, bottom=25mm, headheight=25mm}
69−
74+
75+\DeclareCaptionLabelSeparator{emdash}{ --- }
76+\captionsetup{
77+ justification=centering,
78+ singlelinecheck=false,
79+ labelsep=emdash
80+}
81+
82+
7083 %% Header
71−
84+
7285\pagestyle{fancy}
7386\fancyhf{}
7487\fancyhead[C]{
@@ -78,20 +91,24 @@
7891}
7992\renewcommand\headrulewidth{0pt}
8093
81−\cfoot{
82−\vspace{-7mm}
83−\footnotesize{
84−\begin{tabular}{|p{0.30\linewidth}|p{0.14\linewidth}|p{0.15\linewidth}|p{0.14\linewidth}|p{0.14\linewidth}|}
85− \hline
86− & & & & \\ \hline
87− Изм. & Лист & \textnumero~докум. & Подп. & Дата\\
88− \hline
89− \footnotesize{\@documentCode}& & & &\\
90− \hline
91− Инв. \textnumero~подл. & Подп. и дата & Взам. инв. \textnumero & Инв. \textnumero~дубл.& Подп. и дата \\
92− \hline
93− \end{tabular}
94+\newcommand{\@foot}{
95+ \vspace{-7mm}
96+ \footnotesize{
97+ \begin{tabular}{|p{0.30\linewidth}|p{0.14\linewidth}|p{0.15\linewidth}|p{0.14\linewidth}|p{0.14\linewidth}|}
98+ \hline
99+ & & & & \\ \hline
100+ \IfLanguageName{english}{Change}{Изм.} & \IfLanguageName{english}{Page}{Лист} & \IfLanguageName{english}{Document num.}{\textnumero~докум.} & \IfLanguageName{english}{Signature}{Подп.} & \IfLanguageName{english}{Date}{Дата}\\
101+ \hline
102+ \footnotesize{\@documentCode}& & & &\\
103+ \hline
104+ \IfLanguageName{english}{inv. num. of orig.}{Инв. \textnumero~подл.} & \IfLanguageName{english}{Sig. and date}{Подп. и дата} & \IfLanguageName{english}{inv. num.}{Взам. инв. \textnumero} & \IfLanguageName{english}{inv. num. of copy}{Инв. \textnumero~дубл.}& \IfLanguageName{english}{Sig. and date}{Подп. и дата} \\
105+ \hline
106+ \end{tabular}
107+ }
94108}
109+
110+\cfoot{
111+\@foot
95112}
96113
97114\setcounter{page}{2}
@@ -110,15 +127,21 @@
110127 \renewcommand{\@title}{#1}
111128}
112129
113−\newcommand{\@institute}{правительство российской федерации\\
130+\newcommand{\@institute}{
131+ \IfLanguageName{english}
132+ {national research university\\<<higher school of economics>>}
133+ {правительство российской федерации\\
114134 национальный исследовательский университет \\
115− «высшая школа экономики»}
135+ «высшая школа экономики»}}
116136\newcommand{\institute}[1]{
117137 \renewcommand{\@institute}{#1}
118138}
119139
120−\newcommand{\@faculty}{Факультет компьютерных наук\\
121− Департамент программной инженерии}
140+\newcommand{\@faculty}{
141+ \IfLanguageName{english}
142+ {Faculty of Computer Science}
143+ {Факультет компьютерных наук\\
144+ Департамент программной инженерии}}
122145\newcommand{\faculty}[1]{
123146 \renewcommand{\@faculty}{#1}
124147}
@@ -130,9 +153,12 @@
130153 \renewcommand{\@academicTeacherName}{#2}
131154}
132155
133−\newcommand{\@academicSupervisorName}{В. В. Шилов}
134−\newcommand{\@academicSupervisorTitle}{Академический руководитель образовательной программы «Программная инженерия»
135− профессор департамента программной инженерии, канд. техн. наук}
156+\newcommand{\@academicSupervisorName}{\IfLanguageName{english}{V. V. Shilov}{В. В. Шилов}}
157+\newcommand{\@academicSupervisorTitle}{
158+ \IfLanguageName{english}
159+ {Academic supervisor of the <<software engineering>> programme, PhD}
160+ {Академический руководитель образовательной программы «Программная инженерия»
161+ профессор департамента программной инженерии, канд. техн. наук}}
136162\newcommand{\academicSupervisor}[2]{
137163 \renewcommand{\@academicSupervisorTitle}{#1}
138164 \renewcommand{\@academicSupervisorName}{#2}
@@ -160,19 +186,19 @@
160186 \renewcommand{\@year}{#1}
161187}
162188
163−\newcommand{\@city}{Москва}
189+\newcommand{\@city}{\IfLanguageName{english}{Moscow}{Москва}}
164190\newcommand{\city}[1]{
165191 \renewcommand{\@city}{#1}
166192}
167193
168194\newcommand{\@titleTable}{
169−\reversemarginpar\marginpar{\rotatebox{90}{\begin{tabular}{|l|l|l|l|l|}
195+\reversemarginpar\marginpar{\rotatebox{90}{\begin{tabular}{|p{25mm}|p{35mm}|p{25mm}|p{25mm}|p{35mm}|}
170196 \hline
171− Инв. \textnumero~подл & Подп. и дата & Взам. инв. \textnumero& Инв. \textnumero~дубл.&Подп. и дата\\
197+ \rule{0mm}{5mm}\IfLanguageName{english}{inv. num. of orig.}{Инв. \textnumero~подл} & \IfLanguageName{english}{Sig. and date}{Подп. и дата} & \IfLanguageName{english}{inv. num}{Взам. инв. \textnumero}& \IfLanguageName{english}{inv. num. of copy}{Инв. \textnumero~дубл.}&\IfLanguageName{english}{Sig. and date}{Подп. и дата}\\
172198 \hline
173− & & & & \\
199+ \rule{0mm}{7mm}& & & & \\
174200 \hline
175−\end{tabular}}}
201+\end{tabular}}}
176202}
177203
178204\titleformat{\subsection}{\normalfont\large\bfseries\raggedright}{\thesubsection.~}{0mm}{}
@@ -194,11 +220,11 @@
194220 \@startAdditions
195221 \stepcounter{section}
196222 \begin{flushright}
197− \Large \textbf{\textsc{приложение \arabic{section}}}
223+ \Large \textbf{\textsc{\IfLanguageName{english}{appendix}{приложение} \asbuk{section}}}
198224 \end{flushright}
199225 \setcounter{@tempSection}{\arabic{section}}
200226 \setcounter{secnumdepth}{0}
201− \section[Приложение \arabic{@tempSection}]{#1}
227+ \section[Приложение \Asbuk{@tempSection}]{#1}
202228 \setcounter{secnumdepth}{4}
203229}
204230
@@ -207,51 +233,51 @@
207233\newcommand{\@LU}{
208234 \begin{center}
209235 \textsc{\textbf{\@institute}}
210− \par\vspace{5mm}
236+ \par\vspace{5mm}
211237 \upshape\mdseries
212238 \@faculty
213239
214− \par\vspace{10mm}
215−
240+ \par\vspace{10mm}
241+
216242 \begin{tabular}[h!]{P{0.45\textwidth} P{0.45\textwidth}}
217−
218− \textit{СОГЛАСОВАНО} & \textsl{УТВЕРЖДАЮ}\\
243+
244+ \textit{\IfLanguageName{english}{COORDINATED}{СОГЛАСОВАНО}} & \textsl{\IfLanguageName{english}{APPROVED}{УТВЕРЖДАЮ}}\\
219245 & \\
220− \@academicTeacherTitle & \@academicSupervisorTitle \\
246+ \@academicTeacherTitle & \@academicSupervisorTitle \\
221247 & \\
222− \underline{\hspace{4cm}} \@academicTeacherName & \underline{\hspace{4cm}} \@academicSupervisorName \\
223− <<\underline{\hspace{1cm}}>> \underline{\hspace{3cm}} \@year{} г. & <<\underline{\hspace{1cm}}>> \underline{\hspace{3cm}} \@year{} г.\\
248+ \underline{\hspace{4cm}} \@academicTeacherName & \underline{\hspace{4cm}} \@academicSupervisorName \\
249+ <<\underline{\hspace{1cm}}>> \underline{\hspace{3cm}} \@year{} \IfLanguageName{english}{}{г.} & <<\underline{\hspace{1cm}}>> \underline{\hspace{3cm}} \@year{} \IfLanguageName{english}{}{г.}\\
224250 \end{tabular}
225251
226−
252+
227253 \vspace{15mm}
228254 {\LARGE{\textsc{\textbf{\MakeLowercase{\@title}}}}}
229−
255+
230256 \vspace{6mm}
231257
232258 \textbf{\@documentTitle}
233−
259+
234260 \vspace{6mm}
235261
236− \textbf{\textsc{Лист Утверждения}}
262+ \textbf{\textsc{\IfLanguageName{english}{Approval Sheet}{Лист Утверждения}}}
237263
238264 \vspace{6mm}
239265
240266 \textbf{\@documentCode{}-ЛУ}
241267
242268 \end{center}
243−
244−
269+
270+
245271 \vfill
246272 \hfill
247273 \begin{tabular}{c}
248− \\
249− Исполнитель: \@authorTitle
250− \\
274+ \\
275+ \IfLanguageName{english}{Author}{Исполнитель}: \@authorTitle
276+ \\
251277 \underline{\hspace{4cm}} \@author
252− \\
253− <<\underline{\hspace{1cm}}>> \underline{\hspace{4cm}} \@year~г.
254− \end{tabular}
278+ \\
279+ <<\underline{\hspace{1cm}}>> \underline{\hspace{4cm}} \@year\IfLanguageName{english}{}{~г.}
280+ \end{tabular}
255281
256282 \@titleTable
257283
@@ -260,7 +286,7 @@
260286 \begin{center}
261287 \@city~\@year
262288 \end{center}
263−
289+
264290 \vspace{-20mm}
265291}
266292
@@ -271,52 +297,52 @@
271297\renewcommand{\maketitle}{
272298 \pagestyle{empty}
273299 \clearpage
274−
300+
275301 \begin{titlepage}
276−
302+
277303 \@LU
278−
304+
279305 \newpage
280−
281− \textbf{\textsc{Утверждён}}
282−
306+
307+ \textbf{\textsc{\IfLanguageName{english}{Approved}{Утверждён}}}
308+
283309 \textbf{\@documentCode{}-ЛУ}
284−
310+
285311 \vspace{40mm}
286−
312+
287313 \begin{center}
288− {\LARGE{\textsc{\textbf{\MakeLowercase{\@title}}}}}
289−
314+ {\LARGE{\textsc{\textbf{\MakeLowercase{\@title}}}}}
315+
290316 \vspace{6mm}
291−
317+
292318 \textbf{\@documentTitle}
293−
319+
294320 \vspace{6mm}
295−
321+
296322 \textbf{\@documentCode}
297−
323+
298324 \vspace{6mm}
299−
300− \textbf{Листов \pageref{LastPage}}
325+
326+ \textbf{\IfLanguageName{english}{\pageref{LastPage} pages}{Листов \pageref{LastPage}}}
301327
302328 \end{center}
303−
329+
304330 \vfill
305−
331+
306332 \@titleTable
307−
333+
308334 \vspace{80mm}
309335
310336 \begin{center}
311337 \@city~\@year
312338 \end{center}
313−
339+
314340 \vspace{-20mm}
315341
316342 \end{titlepage}
317−
343+
318344 \pagestyle{fancy}
319−
345+
320346 \setcounter{page}{2}
321347}
322348
@@ -324,18 +350,20 @@
324350\newcommand{\registrationList}{%
325351 \clearpage
326352 \newpage
327−
353+
328354 \@startAdditions
329−
330− \setcounter{secnumdepth}{0}
331− \section{Лист регистрации изменений}
332− \setcounter{secnumdepth}{4}
333−
355+
356+ % \setcounter{secnumdepth}{0}
357+ \section*{\IfLanguageName{english}{Change registration sheet}{Лист регистрации изменений}}
358+ % \setcounter{secnumdepth}{4}
359+
360+ \cfoot{}
361+
334362 \begin{tabular}{|p{0.05\linewidth}|p{0.04\linewidth}|p{0.06\linewidth}|p{0.06\linewidth}|p{0.06\linewidth}|p{0.1\linewidth}|p{0.1\linewidth}|p{0.12\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|}
335−
363+
336364 \hline
337− \multirow{2}{*}{Изм.} & \multicolumn{4}{c|}{Номера листов} & Всего листов в документе & \textnumero{} доку-мента & Входящий \textnumero{} сопрово-дит.~докум. и дата & Под-пись & Дата \\ [5ex] \cline{2-5}
338− & из-ме-нен-ных & заме-нен-ных & но-вых & аннул-лиро-ван-ных & & & & & \\[10ex]
365+ \multirow{2}{*}{\IfLanguageName{english}{\shortstack[l]{Cha-\\nge}}{Изм.}} & \multicolumn{4}{c|}{\IfLanguageName{english}{Page number}{Номера листов}} & \IfLanguageName{english}{Total number of pages}{Всего листов в документе} & \IfLanguageName{english}{Document number}{\textnumero{} доку-мента} & \IfLanguageName{english}{Number of accompanying documents and date}{Входящий \textnumero{} сопрово-дит.~докум. и дата} & \IfLanguageName{english}{Sig-na-ture}{Под-пись} & \IfLanguageName{english}{Date}{Дата} \\ [5ex] \cline{2-5}
366+ & \IfLanguageName{english}{Mo-di-fied}{из-ме-нен-ных} & \IfLanguageName{english}{Re-pla-ced}{заме-нен-ных} & \IfLanguageName{english}{Ad-ded}{но-вых} & \IfLanguageName{english}{An-nul-led}{анну-лиро-ван-ных} & & & & & \\[10ex]
339367 \hline
340368 & & & & & & & & & \\[5ex]
341369 \hline
@@ -364,16 +392,21 @@
364392 & & & & & & & & & \\[5ex]
365393 \hline
366394 \end{tabular}
395+
396+ \newpage
397+ \cfoot{
398+ \@foot
399+ }
367400}
368401
369402
370403%% Code
371404
372405\newcommand{\programmingLanguage}[1]{
373− \lstset{language=#1}
406+ \lstset{language=#1}
374407}
375408
376−%% [#1]: ref id
409+%% [#1]: ref id
377410%% #2: file
378411%% #3: caption
379412\newcommand{\floatCode}[3][]{
@@ -385,7 +418,17 @@
385418}
386419
387420\newcommand{\code}[1]{%
388− \lstinputlisting[frame=single,basicstyle=\footnotesize\ttfamily]{#1}
421+ \lstinputlisting[frame=single,basicstyle=\footnotesize\ttfamily]{#1}
422+}
423+
424+\renewcommand{\code}[2]{%
425+ \lstinputlisting [frame=single, basicstyle=\footnotesize\ttfamily, caption={#2}, captionpos=b] {#1}
426+}
427+
428+\newcommand{\lcode}[1]{
429+ \begin{lstlisting}%
430+#1
431+ \end{lstlisting}%
389432}
390433
391434% [#1]: caption
@@ -422,4 +465,8 @@
422465
423466\titleformat{\section}[block]{\Large\bfseries\filcenter}{\thesection.}{0mm}{~}
424467
468+\newcommand{\sectionsAreChapters}{
469+ \titleformat{\section}[block]{\Large\bfseries\filcenter}{\IfLanguageName{english}{Chapter}{Глава} \thesection.}{0mm}{~}
470+}
471+
425472\newcommand{\sectionbreak}{\clearpage}