UProLa

Неокріпші думки

Титулка диплому

with 2 comments

Так сталось, що оформленням титулки для свого бакалаврського диплому я займався весь день. Весь день було витрачено на оформлення титулки замість власне написання диплому (який, до-речі, не написаний взагалі(!) і який треба зробити до 8 червня). Капітан здоровий глузд повинен сказати: ну якщо так довго, то значить це важливо. І так, це справді важливо, адже нарешті, через більше ніж рік, я зрозумів, чому варто використовувати \LaTeX для набору наукових текстів.

Власне вона, титулка


Зліва – Word перегнаний у PDF, справа – LaTeX перегнаний у PostScript.

Як це зроблено?

Чисто випадково, почитуючи Хабрахабр, побачив статтю Шаблоны ЕСКД и ГОСТ 7.32 для Lyx 1.6.x і згадав, що саме зараз дана інформація мені повинна пригодитись. Було скачано:

  • tex live
  • lyx
  • eskdx
  • шаблони для lyx

Скомпонував все по манам, заповнив преамбулу, поставив українську в налаштуваннях документу (автор ESKDX мабуть десь із наших), вставив \maketitle – і отримав готовий шаблон для диплому! Жодних морок з рамками (які постійно задовбували при наборі у Word) не було. Це мене так розвеселило, що одразу вирішив почати диплом у даному текстовому процесорі.

Підводні граблі

Без них не обійшлось.

Перша грабля була така – слово “Аркуш” на полях рамки по ДСТУ ГОСТ 2.104:2006 форми 2а вилазило, сука, за межі рамки. Слово “Лист” вписується, а слово “Аркуш” – ні. Це мене трохи розчарувало, оскільки я знав частково TeX, проте зовсім не був знайомий з LaTeX. Проблему вирішив, підглянувши у /usr/share/texmf-dist/tex/latex/eskdx/eskdukrainian.def як формується назва даного поля:

\newcommand{\ESKDcolumnVIIname}{%
  \cyr\CYRA\cyrr\cyrk\cyru\cyrsh}

Нехитрим способом, ASCII символи перетворюються у українські букви. (Не дивно, що я не зміг знайти “влоб” рядок “Аркуш” через grep -lir). Чисто не думаючи перевизначив у преамбулі цей код:

\renewcommand{\ESKDcolumnVIIname}{%
  \ESKDfontIIsize{\cyr\CYRA\cyrr\cyrk\cyru\cyrsh}}



Заодно і познайомився з макросами у TeX.

Друга грабля була значно серйозніша. Титульна сторінка по ЄСКД не відповідала канонічному представленню з точки зору кафедри. І взагалі, диплом – це не деталь. Тому вирішив набрати свою титулку у ЛаТеХ, з метою “просвітитись”. Як потім виявилось, краще б уже робив все далі у Word…

Код для титулки

Покажу спочатку преамбулу. Оскільки писав я в Lyx, деякі синтаксичні LaTeX особливості типу \begin{document} і \documentclass{eskdx} приховані.

%Хоп-хоп, заповнимо всі особливі поля. Наскільки я знаю, Word також 
%підтримує такі стилізовані макрозаміни, але ними користуються тільки ТеХніки )))
\renewcommand{\ESKDtitle}{Розробка мультизадачного Форт-ядра для мікроконтролерів AVR}
\ESKDsignature{ІА72.050БАК.009.ПЗ}
\ESKDcolumnI{\ESKDtitle}
\ESKDdate{2011/06/8}
\ESKDcolumnXIfI{Глинський Д.}
\ESKDcolumnXIfII{Глушко Є.}

\renewcommand{\ESKDcolumnVIIname}{%
  \ESKDfontIIsize{\cyr\CYRA\cyrr\cyrk\cyru\cyrsh}}

Наступним кроком був реверс-інжинірінг коду титулки \maketitle. Знаходиться вона у двух файлах – eskdtitle.sty і eskdtitlebase.sty. Обидва файли підписані як автогенеровані. Викладений нижче код є синтезом цих файлів і Гугла.

\newcommand{\KPISTDtitleYear}{2011}

% Цікава команда. Два бокси по 0.4 ширини сторінки розміщуються з двух сторін сторінки
\newcommand{\blabla}[2]{%
	\parbox[t]{.4\hsize}{\raggedright#1}
	\hfill
	\parbox[t]{.4\hsize}{\raggedright#2}} 

\newcommand{\KPISTDallowedName}{Теленик~С.Ф.}
\newcommand{\KPISTDworkName}{Проектування мультизадачного Форт-ядра для мікроконтролерів AVR}

\newcommand{\KPISTDdepartment}{Міністерство освіти і науки України}
\newcommand{\KPISTDcompany}{Національний технічний університет України \par 				
			<<Київський політехнічний інститут>>}
\newcommand{\KPISTDfaculty}{Факультет інформатики та обчислювальної техніки}
\newcommand{\KPISTDcathedra}{Кафедра автоматики та управління в технічних системах}
\newcommand{\KPISTDtitleFontI}{\fontsize{8pt}{10pt}}
\newcommand{\KPISTDtitleFontV}{\ESKDfontV\upshape\bfseries}

\newcommand{\studentGroup}{IA-72}
\newcommand{\studentFullName}{Глинський Данило Євгенович}
\newcommand{\kurator}{ст. викладач Глушко Є. В.}

%ще одна цікава команда. Робить текст підкресленим, проте саме підкреслення може бути ширшим за текст
\newcommand{\rulerText}[2]{
	\parbox[t]{#1}{\raggedright \centering#2\strut\vspace{-0.2em}\hrule}
}

\newcommand{\KPISTDtitleStudent}{
	\parbox[t]{.25\hsize}{\raggedright\textbf{\ESKDfontV\upshape Студент групи}}
	\rulerText{.1\hsize}{\studentGroup}
	\rulerText{.45\hsize}{\studentFullName}
	\hfill\rulerText{.1\hsize}{\ }
}

\newcommand{\KPISTDtitleKurator}{
	\parbox[t]{.3\hsize}{\raggedright\textbf{\ESKDfontV\upshape Керівник роботи}}
	\rulerText{.50\hsize}{\kurator}
	\hfill\rulerText{.1\hsize}{\ }
}

\newcommand{\maketitleKPI}{%
\begin{ESKDtitlePage}
	\setlength{\topsep}{0mm}
	\noindent
	\parbox[c][.28\vsize][t]{\hsize}{%
		\begin{center}\KPISTDtitleFontV\bfseries\KPISTDdepartment\par\KPISTDcompany\end{center}
		\vspace{5mm}
		\begin{center}\KPISTDtitleFontI\KPISTDfaculty\end{center}     
		\begin{center}\KPISTDtitleFontI\KPISTDcathedra\end{center}     
		\vspace{10mm}
		\blabla{\ }{\ESKDtitleMakeStamp{До захисту допущено\par
							\textbf{Завідувач кафедри}}
			{\MakeUppercase{\KPISTDallowedName}}}
	}
	\par\vspace{30mm}\noindent
	\parbox[c][.30\vsize][t]{\hsize}{% 
		\begin{center}\KPISTDtitleFontV\bfseries Пояснювальна записка \end{center}
		\vspace{5mm}
		\begin{center}\KPISTDtitleFontI до дипломної роботи освітньо-квалфікаційного рівня <<бакалавр>>\par з напрямку підготовки \end{center}     
		\begin{center}\KPISTDtitleFontI 6.050201 <<Системна інженерія>> \end{center}     
		\vspace{10mm}
		\begin{flushleft}\KPISTDtitleFontI на тему: \rulerText{.8\hsize}{\raggedright\ESKDtitleFontI\ESKDtitle\vspace{-1em}\hrule}\hfill \end{flushleft}
		\vspace{20mm}
		\KPISTDtitleStudent
		\par\vspace{5mm}
		\KPISTDtitleKurator
	}
	\vfill
	\begin{center}\ESKDtitleFontX Київ --- \KPISTDtitleYear\end{center} 
	\vspace{20mm}
\end{ESKDtitlePage}}

\maketitleKPI

Й справді, не дуже просто і виявилось клепати цю сторінку, проте якщо винести код у окремий стиль/клас, то його використання може спростити життя близько 20 тис. КПІшних студентів, яких з року в рік заставляють “дотримуватися” усіх правил побудови титулок та інших спеціифікацій.

Від автора

LaTeX – це круто, і добре що виконаною роботою можна ділитись. Є ідея взагалі організувати клюб по оформленню всяких нормативних документів на ЛаТеХ, зібрати воєдино усі можливі класи при побудові, дотриматися усіх правил ДСТУ, ЄСКД, ГОСТ, БЛАблА і навчити людей використовувати редактори на основі розмітки для навколонаукових речей. Мабуть, так і зроблю, якщо встигну написати диплом і пройду вступні екзамени на спеціаліста…

Written by danbst

Червень 4, 2011 at 22:36

Оприлюднено в Програмування

Відповідей: 2

Subscribe to comments with RSS.

  1. От єдине що я не зрозумів – це для чого роботу ніби з програмування робити в рамці для креслення.

    А ще, замість того щоб послатись на статтю про шаблони ЄСКД, ти вдруге послався на мене. Це звісно приємно, але людям від того користі мало.

    bunyk

    Червень 5, 2011 at 09:36

    • Холіфак! Дякую. А чому в рамці – тому що сказали робити по ГОСТу.

      danbst

      Червень 5, 2011 at 12:23


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: