Продолжаем серию статей о верстке диплома в LaTeX. Сегодня суровый челябинский программист расскажет о том, как правильно настроить шрифты и заголовки в LaTeX.
Итак, прежде всего определимся с тем, какие должны использоваться шрифты и как должны выглядеть заголовки. По стандартам ЮУрГУ (впрочем уверен что в других ВУЗах так же) шрифты должны быть следующими:
- Основной текст - Times New Roman, 14й
- Заголовки первого, второго, третьего уровней (а больше уровней и не допускается) - Arial, 16й
- Оглавление (да, да, весь текст оглавления) - Arial, 16й
Замечу, что заголовки НЕ ДОЛЖНЫ выделяться жирным или курсивом, как и оглавление. Да, сразу скажу, слово "Аннотация" в аннотации это не заголовок.
С основным текстом все просто. Уже настраивая геометрию мы указали, что будем использовать 14-й размер шрифта. Для того, чтобы задать гарнитуру Times New Roman - необходимо в преамбулу документа добавить следующую команду:
\renewcommand{\rmdefault}{ftm}
С заголовками дело несколько сложнее. Прежде всего следует отделить настройки размера шрифта и гарнитуры. Размер шрифта задается командами типа \tiny, \large, \Large, \LARGE и т.д. Я переопределил две команды - \large и \Large, назначив им 16-й и 18-й кегль соответственно. В принципе, можно было обойтись только переопределением команды \large. Код команд я поместил в файл eskdps.sty:
\renewcommand\large{\@setfontsize\large{15.5}{17}}
\renewcommand\Large{\@setfontsize\Large{16.5}{19}}
\renewcommand\Large{\@setfontsize\Large{16.5}{19}}
Теперь необходимо настроить использование данных размеров и гарнитуры Arial для отображения разделов документа. Команды, задающие отображение разделов находятся в файле G2-105-95.sty, я переопределил их следующим образом:
\renewcommand\section{%
\renewcommand{\theengost}{\thesection.\@arabic\c@engost}
\setcounter{engost}{0}
\gostnewpage
\@startsection{section}{1}{\z@}%
{-3.25ex \@plus -1ex \@minus -.2ex}%
{1.5ex \@plus.2ex}%
{\normalfont\large\textar}}
\renewcommand\subsection{%
\renewcommand{\theengost}{\thesubsection.\@arabic\c@engost}
\setcounter{engost}{0}
\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\textar}}
\renewcommand\subsubsection{%
\renewcommand{\theengost}{\thesubsubsection.\@arabic\c@engost}
\setcounter{engost}{0}
\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\textar}}
\renewcommand{\theengost}{\thesection.\@arabic\c@engost}
\setcounter{engost}{0}
\gostnewpage
\@startsection{section}{1}{\z@}%
{-3.25ex \@plus -1ex \@minus -.2ex}%
{1.5ex \@plus.2ex}%
{\normalfont\large\textar}}
\renewcommand\subsection{%
\renewcommand{\theengost}{\thesubsection.\@arabic\c@engost}
\setcounter{engost}{0}
\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\textar}}
\renewcommand\subsubsection{%
\renewcommand{\theengost}{\thesubsubsection.\@arabic\c@engost}
\setcounter{engost}{0}
\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\textar}}
команда \large задает размер шрифта, ее мы переопределили выше. Команда \textar задает использование Arial для отрисовки заголовков.
Остался один момент - оглавление. Оглавление (заголовок и текст) должно выводиться Arial'ом, 16-м. Для этого изменим команду \tableofcontents следующим образом:
\renewcommand\tableofcontents{%
\clearpage
\begin{center}
\large\textar{Оглавление}
\end{center}
\large\textar{\@starttoc{toc}}%
\newpage
}
\clearpage
\begin{center}
\large\textar{Оглавление}
\end{center}
\large\textar{\@starttoc{toc}}%
\newpage
}
Вообще использовать слово "Оглавление" внутри данной команды - моветон и не комильфо ни разу, но почему-то когда я использовал команду \contentsname она печатала слово "Содержание" и это не переопределялось с помощью
\renewcommand{\contentsname}{Оглавление}
Чтобы названия разделов-подразделов не выводились жирным и чтобы оглавление выглядело так как в ГОСТ (с соответствующими отступами), я изменил команды отрисовки строчек в содержании (нужно заменить соответствующие команды из файла eskdpz.sty):
\newcommand*\l@sectionx[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.5em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.7 em\relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{2.5cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.5em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.5cm \relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{1cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
\renewcommand*\l@subsection[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.5cm \relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{1cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.5em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.7 em\relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{2.5cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.5em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.5cm \relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{1cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
\renewcommand*\l@subsection[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty%
\setlength\@tempdima{1.5em}%
\begingroup
\@tempdima 1.5cm \relax
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode %\bfseries
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{\hspace{1cm}{#1}\nobreak }%
\leaders\hbox{%
$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep%
mu$}\hfill%
\nobreak%
\hb@xt@\@pnumwidth{\hfil\large \normalcolor #2}%
\par%
\endgroup
\fi}
Собственно на этом настройку шрифтов и разделов можно считать законченой. В следующем сообщении мы поговорим о вставке рисунков и подрисуночных надписей. Оставайтесь на связи и не стесняйтесь задавать вопросы, а также указывать на то, какие темы вам интересны.
Другие статьи серии:
- Верстаем диплом в LaTeX
- Верстаем диплом в LaTeX: делаем рамки в соответствии с ГОСТ
- Верстаем диплом в LaTeX: рисунки и подрисуночные надписи
- Верстаем диплом в LaTeX: таблицы
- Верстаем диплом в LaTeX: заключение - полезные мелочи
Понравилось сообщение - подпишись на блог
12 комментариев:
Возможно кому-то пригодится. У меня заголовки стали корректно отображаться Arial'ом только после того, как я заменил \textar на \arfamily. По сути это одинаковые команды, но первая требует аргумента. Поэтому при переопределении формата заголовков стоит использовать вторую.
Странно, но у меня и с \textar всеп получилось очень хорошо. Поэтому затрудняюсь что лучше использовать, работает и то и другое.
А как заставить \section начинать раздел с новой страницы?
Необходимо переопределить данную команду в стилевом файле. В начало определения команды добавить \newpage
Насколько мне извесно, а позже было проверено при работе, класс article, как и любой другой класс, не поддерживает параметр 14pt. Вместо этого компилятор использует значение по умолчанию, т.е. 10pt.
Сделал так как написано у вас в посту, но система не заработала. Можете ли вы выложить свои, уже изенённый, файлы eskdpz?
\begin{document}
\renewcommand{\contentsname}{Оглавление}
\tableofcontents
так работает...
1. Собственно чем не нравиться нативная Helvetica что йдет в почтавке вместо M$-вой Arial?
2. Жаль... недостандарты. В Госта-х была литературная и школьная гарнитуры. В ПолиграфМаше былы и есть суперские гарнитуры NewStandard... Их своовал Паратайп, и почти все используют подделку Times в которой отвратительные метрики и начертания.
\contentsname переопределяется следующим образом:
\addto\captionsrussian{\renewcommand{\contentsname}{Оглавление}}
Если прописать \renewcommand{\contentsname}{Оглавление} в другом файле и подключить его к главному командой input
то все работает
Интересная особенность.
Да это и не особенность вобщем-то ))
\cmdname печатают разный текст в зависимости от текущего языка, поэтому переопределение любой такой команды посредством \renewcommand остается в силе лишь до следующего переключения языка. Далее новое значение будет потеряно, поскольку любая из команд выбора языка восстанавливает значения всех команд \cmdname, заданные пакетом babel для соответствующего языка:
1. \renewcommand{\appendixname}{Дополнение}\appendixname\\
2. \selectlanguage{english}\appendixname\\
3. \selectlanguage{russian}\appendixname
1. Дополнение
2. Appendix
3. Приложение
Список определений всех команд \cmdname для конкретного языка language хранится в команде
\captionslanguage
(с) Котельников, Чеботаев
Так что надо воспользоваться командой:
\addto{cmd}{defs}
Собственно это и написал выше Соболев )
Татьяна, спасибо за комментарий.
Отправить комментарий
Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!