LINUX.ORG.RU

LaTeX - приложение по ГОСТу

 


2

3

Здравствуйте! Вопрос знатокам LaTeX`a,

если не сложно - подскажите =)

Хочу оформить приложения по ГОСТу.

Как получилось сделать:

1)в тексте документа:

____________ПРИЛОЖЕНИЕ 1. НАЗВАНИЕ ПРИЛОЖЕНИЯ (выравнивание по правому краю)

2)в содержании:

Приложение 1. Название приложения . . . . n

По ГОСТу должно быть:

1)в тексте документа:

______________________ПРИЛОЖЕНИЕ 1(выравнивание по правому краю)

_______НАЗВАНИЕ ПРИЛОЖЕНИЯ________ (по центру)

2)в содержании:

Приложение 1. Название приложения . . . . n

То есть проблема в том, что надо сделать перенос строки и изменить выравнивание в тексте после «Приложение 1».

Но в содержании переноса не должно быть!

Собственно вот что у меня уже переопределено:

\def\section{\clearpage\@startsection{section}{1}{\z@}

{-3.5ex \@plus -1ex \@minus -.2ex}{2.3ex \@plus.2ex}

{\let\@hangfrom\@empty\center\normalfont\normalsize\bfseries\MakeUppercase}}

\def\redeflsection{\def\l@section{\@dottedtocline{1}{0.4cm}{8em}}}

\renewcommand{\appendix}{ %...

\addtocontents{toc}{\protect\redeflsection}%

\gdef\thesection{\appendixname\hspace{0.2cm}\@arabic\c@section}

\renewcommand{\section}{\@startsection{section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus.2ex}

{...... \flushright\normalfont\bfseries\MakeUppercase}}

}

TatianaSh ()

Если еще актуально - почитай доки к ccaption - он такое должен уметь. Написал бы, как переопределить, если бы на выходных увидел, а сейчас времени покопаться нету :(

HerrWeigel ★★★★ ()
\documentclass[12pt]{article}
\usepackage[russian]{babel}
\usepackage[utf8]{inputenc}

\usepackage{tocloft}
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}

\newcommand{\intro}[1]{
    \stepcounter{section}
    \section*{\hfillПРИЛОЖЕНИЕ \arabic{section}}
    \begin{center}
        \bf{#1}
    \end{center}
    \markboth{\MakeUppercase{#1}}{}
    \addcontentsline{toc}{section}{Приложение \arabic{section}. #1}
}

\begin{document}
\tableofcontents
\newpage

\appendix

\intro{Название приложения}
Содержание приложения
\newpage

\intro{Список литературы}
Содержание списка литературы
\newpage

\end{document}
anonymous ()
Ответ на: комментарий от anonymous

Огромное спасибо!

Ваш код очень помог =)

Немного поменяла \intro, может кому-н пригодится:

\newcommand{\MyAppendix}[1]{

%.....

\refstepcounter{theAppend}\par\vspace{1.5cm plus 1cm minus .5cm} {\hfill\bfПРИЛОЖЕНИЕ~\arabic{theAppend}. }

\begin{center} \bf\MakeUppercase{#1} \end{center}

\addcontentsline{toc}{section}{Приложение \arabic{theAppend}. #1}

}

Но надо признать, это не совсем то, что хотелось =(

Получается я определила свою команду, которая работает примерно как section.

Для сравнения, команда \appendix переопределяет секцию, делает ее приложением)

Вот в задумке было переопределить \appendix, чтобы он переопределял section, но так, как мне надо.

Но проблема в том, что стандартный \appendix почти не меняет \section

\newcommand\appendix{\par \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\thesection{\@Alph\c@section}}

Переопределение же \section какое-то ограниченное. Почти ничего и нельзя поменять (интервалы да шрифт), например:

\renewcommand{\section}{\@startsection{section}{1}{1cm}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus.2ex}{\center\normalfont\bfseries}}

Такие вот ограничения немного странные для всего такого настраиваемого LaTeX`а...

TatianaSh ()
Ответ на: комментарий от anonymous

Вы используете пакет tocloft.

Я вот как-то пыталась им воспользоваться.

Он печатает разделы жирным, долго пыталась это убрать, но не разобралась.

В итоге обошлась без этого пакета)

Может подскажете, как определить, что в содержании печатать жирным шрифтом, а что обычным? =)

TatianaSh ()
Ответ на: комментарий от HerrWeigel

Не спорю, может и жесть)

Я пытаюсь, но LaTeX не так прост как кажется, если есть «жесткие» требования к оформлению )

TatianaSh ()
Ответ на: комментарий от TatianaSh

За вывод текста в списки содержимого отвечает команда \addcontentsline{file}{level}{text}. file — файл списка, для содержания это toc. level — уровень, text — текст, который будет передан обработчику уровня.

Обработчики уровня тоже можно переопределить. Скажем, за раздел отвечает \l@section. Простейший тип записи определяется командой \@dottedtocline (можно погуглить значения ее аргументов). В более сложном случае форматирование задается вручную, скажем, в book.cls запись главы в содержание сделана так:

\newcommand*\l@chapter[2]{% #1 - название, #2 - номер страницы
  \ifnum \c@tocdepth >\m@ne % глубина оглавления (\tocdepth), если она меньше 1, запись не будет выведена в оглавление
    \addpenalty{-\@highpenalty}% снимается штраф на переполнение вертикального бокса
    \vskip 1.0em \@plus\p@  % вертикальный отступ 1em плюс еще немного
    \setlength\@tempdima{1.5em}% размер дополнительного отступа
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth % отступы 
      \parfillskip -\@pnumwidth % оставляем место под номер страницы, если текст заголовка длинный
      \leavevmode \bfseries % печатаем жирным
      \advance\leftskip\@tempdima % у второй и последующих строк будет дополнительный отступ
      \hskip -\leftskip % первую печатаем без доп. отступа
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par % текст заголовка, затем прижатый к правому краю номер страницы
      \penalty\@highpenalty % штраф на переполнение верт. бокса (чтобы не было разрыва записи)
    \endgroup
  \fi}
Пояснения я запихал в комментарии.

Естественно, все это влегкую выдирается и переопределяется так, как вам нужно.

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.