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, Супермодераторы



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

Сейчас этот форум просматривают: Lenchik


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

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