2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Выравнивание секций
Сообщение13.05.2009, 21:24 
Аватара пользователя


13/05/09
14
Tokyo, Japan
Надеюсь, кто-нибудь сталкивался с данной проблемой: как известно, TeX довольно хитро (и умно) выравнивает заголовки разделов, подразделов или, проще говоря, всех возможных перечислений, данный факт Вы можете увидеть на рисунке 1. Однако в моей ситуации такое выравнивание ни к чему: ГОСТ 2.105-95 (если конкретно, то у меня оформление пояснительной записки по ЕСПД) рекомендует, да-да, именно рекомендует, а не выставляет в качестве образца выравнивание, представленное на рисунке 2.

Собственно вопрос: как можно либо убедить препода в возможно некорректности его действий (ну все же так делают, как по-умолчанию выравнивается, нигде не слышал, чтобы нормоконтроллеры придирались, не вот у нас...), либо сделать необходимое выравнивание по ГОСТ (обычные перечисления не обязательно)?

Из предпринятых действий было изменение левого отступа разделов etc. на 0pt и переопределение команды \thesection с целью вставки дополнительного абзацного отступа. В теории это должно было сработать, в практике TeX оказался хитрее: все выравнивание было так же на основе положения номера, то есть ситуация нисколечко не изменилась. Честно говоря, я не настолько хорошо знаю внутренности TeX/LaTeX для того, чтобы можно было ещё с чем-то экспериментировать.

Если что, используется pdflatex (pdfTeX 3.1415926-1.40.9-2.2 (Web2C 7.5.7)) из TeX Live 2008-r5. Заранее благодарю.

Рисунок 1 - Как у меня: Изображение
Рисунок 2 - Как должно(?) быть: Изображение

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение13.05.2009, 21:59 
Аватара пользователя


11/09/08
150
Могилев
Если класс документа - article, то так:
Код:
\setlength{\parindent}{10mm}
\makeatletter
% Переопределение команды секции
\renewcommand{\section}{\@startsection{section}{1}%
{\parindent}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\bfseries\large}}

% Переопределение команды подсекции
\renewcommand{\subsection}{\@startsection{subsection}{2}%
{\parindent}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\bfseries}}
\makeatother

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение13.05.2009, 22:20 
Аватара пользователя


13/05/09
14
Tokyo, Japan
Спасибо, что откликнулись, но, похоже, Вы не совсем поняли мою проблему. Пусть символ "_" означает пробел (так проще выравнивать на форуме).
У меня выравнивание осуществляется так:
_____3__СХЕМЫ_АЛГОРИТМОВ
________ПРОГРАММЫ

_____3.1__Схема_алгоритма_основной
__________программы

Необходимо, чтобы было так:
_____3__СХЕМЫ_АЛГОРИТМОВ
ПРОГРАММЫ

_____3.1__Схема_алгоритма_основной
программы

Вот именно в этом у меня и возникли затруднения.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение13.05.2009, 23:13 
Аватара пользователя


11/09/08
150
Могилев
Пока, к сожалению, не могу ответить. Посмотрите класс eskdtext.

P.S.
1) Если есть возможность, то лучше сразу согласовать вопросы оформления ПЗ с нормоконтроллером.
2) Честно говоря, никогда не задумывался о подобном оформлении.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение16.05.2009, 22:10 
Заслуженный участник


18/03/07
1068
Тогда уж так как-нибудь:
Код:
\renewcommand{\section}{\@startsection{section}{1}%
{\parindent}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\bfseries\large \let\@hangfrom\@empty}}

Ещё бы только понять, что всё это значит :roll:.
Получено в результате хождения по ссылкам отсюда.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение16.05.2009, 23:37 
Аватара пользователя


11/09/08
150
Могилев
luitzen в сообщении #214526 писал(а):
Тогда уж так как-нибудь:
Код:
\renewcommand{\section}{\@startsection{section}{1}%
{\parindent}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\bfseries\large \let\@hangfrom\@empty}}


У меня в этом случае получается два абзацных отступа у заголовка. :?:
Еще один вариант, возможно, немного искусственный:
Код:
\setlength{\parindent}{10mm}
\makeatletter
\renewcommand{\section}{\@startsection{section}{1}%
{\parindent}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\raggedright\hspace{10mm}\bfseries\large%
\let\@hangfrom\@empty}}
\makeatother

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение17.05.2009, 00:13 
Заслуженный участник


18/03/07
1068
yurik78 в сообщении #214566 писал(а):
У меня в этом случае получается два абзацных отступа у заголовка. :?:
Еще один вариант, возможно, немного искусственный…

Код:
\renewcommand{\section}{\@startsection{section}{1}%
{.em}{3.25ex plus 1ex minus .2ex}%
{1.5ex plus .2ex}{\bfseries\large \let\@hangfrom\@empty}}
:)

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение17.05.2009, 00:50 
Аватара пользователя


11/09/08
150
Могилев
Здорово. А разве можно переносить слова в заголовках? В данном случае так получается.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение17.05.2009, 12:15 
Заслуженный участник


18/03/07
1068
yurik78 писал(а):
Здорово. А разве можно переносить слова в заголовках? В данном случае так получается.

Да, есть такая проблема :oops:. Но можно вручную разрывать строки:

Код:
\subsection{Корпус форсунки заменить при наличии\\ трещин}

Хотя тут возникают другие проблемы.

Вообще, интересно узнать, как топикстартер реализует лидеры, идущие после названий подподсекций (или как это реализовано в используемых им пакетах). Узнав же, от этого и плясать, чтобы не поломать реализацию.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение17.05.2009, 12:26 
Заслуженный участник


11/05/08
32166
а кто-нибудь в курсе, как можно автоматически центрировать строки в заголовках -- но, разумеется, без центрирования их же в оглавлении?...

У меня сейчас как раз такая проблема, ибо редактор чего-то недовольна нашим стандартным форматированием.

 Профиль  
                  
 
 Re: Выравнивание секций
Сообщение17.05.2009, 13:41 
Аватара пользователя


13/05/09
14
Tokyo, Japan
luitzen
О, домо аригато, большое спасибо то есть, "\let\@hangfrom\@empty" то, что надо!

По поводу запрета переносов у меня так (взял полностью из eskdx):
Код:
% Выравнивание по левому краю без переносов.
\newcommand{\MTKPsectAlignLeft}{%
  \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip%
  \leftskip\z@skip}

% Выравнивание по центру
\newcommand{\MTKPsectAlignCenter}{%
  \let\\\@centercr
  \rightskip\@flushglue\leftskip\@flushglue
  \parindent\z@\parfillskip\z@skip}

% Плюшки для удобства
\newcommand{\MTKPsectionAlign}{\MTKPsectAlignLeft}
\newcommand{\MTKPsubsectionAlign}{\MTKPsectAlignLeft}
\newcommand{\MTKPsubsubsectionAlign}{\MTKPsectAlignLeft}

% Для установки выравнивания секций в момент сборки
\newcommand{\MTKPsectAlign}[2]{%
  \expandafter\renewcommand\csname\string MTKP#1Align\endcsname{%
  \@nameuse{MTKPsectAlign#2}}}

% Стиль заголовка
\newcommand{\MTKPsectionStyle}{\normalfont\MTKPfontXXVIsize\it\MakeUppercase}

% Спасибо, luitzen
\renewcommand\section{\clearpage\@startsection {section}{1}{.em}%
                               {-15mm \@plus -3mm \@minus -2mm}%
                               {15mm \@plus 1mm \@minus 2mm}%
                               {\let\@hangfrom\@empty
                                \MTKPsectionAlign\MTKPsectionStyle}}

% Остальные заголовки так же.

% Теперь \chapter{Тра-ля-ля} будет без номера по центру
\newcommand\chapter{
  \begingroup\clearpage\MTKPsectAlign{subsection}{Center}%
  \subsection*{#1}%
  \addcontentsline{toc}{section}{#1}\endgroup}


ewert
Обратите внимание на \newcommand{\MTKPsectAlignCenter}

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group