LINUX.ORG.RU

Как переопределить оформление оглавления?

 ,


0

2

Мне нужно, чтобы:

  • оглавление документа называлось «ОГЛАВЛЕНИЕ» и этот заголовок находился посередине
  • и заголовок, и сами пункты оглавления были набраны тем же шрифтом, что и основной текст (то есть тем же и по размеру, и не курсивом или жирным начертанием)

В преамбуле указал

\renewcommand{\contentsname}{ОГЛАВЛЕНИЕ}
и это позволило задать нужное название, но команды вроде \normalfont, \normalsize и \centering в таком переопределении не работают и поменять сам шрифт я не могу (то есть сделать его меньшего размера и не жирным). Как настроить требуемое?

★★

Может поможет:

До сих пор речь шла про сборку материала для оглавления, списка иллюстраций и т. п. Однако же и у самого оглавления есть заголовок, и его оформление тоже можно менять. Чтобы было понятно, как это делать, опишем, как определена команда \tableofcontents встандартном стиле article:

\newcommand{\tableofcontents}% {\section*{\contentsname}\@starttoc{toc}}

Здесь \contentsname — это уже знакомая нам команда, которую при работе с русскими текстами приходится переопределять (см. стр. 104). Как видите, заголовок оглавления оформляется просто как заголовок ненумерованной секции. Вы можете вместо этого оформить заголовок, скажем, с помощью \subsection, или еще каким-либо образом.

Львовский. LaTeX. подробное описание. стр 191

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

Не помогает. Создал стилевой файл, добавил его к документу и написал туда

\renewcommand{\tableofcontents}{\paragraph*{\contentsname}\@starttoc{toc}}
Документ собрался без ошибок, но видимый результат не поменялся.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Ты бы сделел \renewcommand{\tableofcontents}{!\textit{\contentsname}!\@starttoc{toc}}, например, чтобы на результат смотреть. У элементов секционирования свои стили прописаны

XMs ★★★★★
()
Ответ на: комментарий от Hasek

А если сделать \renewcommand{}{} не в своём стилевом файле, а просто в документе (оставив стандартный класс)? Оно, скорее всего, будет ругаться на \@starttoc{toc}, поэтому для теста расположи в переопределении простой какой-нибудь текст

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

Сейчас заметил, что в документе всё же написано «Оглавление» вместо нужного мне «ОГЛАВЛЕНИЕ», то есть или действие \renewcommand{\contentsname}{ОГЛАВЛЕНИЕ} как-то слетело в ходе экспериментов, или я ранее невнимательно посмотрел и принял желаемое за действительное (что более вероятно).


Конструкции вида \renewcommand{}{} работают, потому что используются у меня не только для оглавления и там с ними полный порядок, но почему-то не работают именно с оглавлением. Например, вот это есть для списка литературы:

\renewcommand\bibname{\centering{\normalsize{\normalfont{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ}}}}

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

Использование \renewcommand{\rmdefault}{ftm} не принципиально, от него можно отказаться. Описанное выше переопределение использованной литературы вынес из преамбулы в код файла с литературой, потому что иначе оно не работало.

\documentclass[a4paper, 14pt, style]{extreport}

\frenchspacing

\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english,russian]{babel}
\usepackage{amsmath, amsthm, amsfonts, amssymb}
\usepackage{cmap}
\usepackage{indentfirst}
\usepackage[top=2cm, bottom=2cm, left=3cm, right=1cm]{geometry}

\renewcommand{\rmdefault}{ftm} % имитация шрифта Times New Roman
\renewcommand{\contentsname}{ОГЛАВЛЕНИЕ}
Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

В файле style.sty помещаю свои попытки что-то сделать с оглавлением (первые сообщения этой темы).

Hasek ★★
() автор топика
Ответ на: комментарий от XMs

В этом файле только

\renewcommand{\tableofcontents}{!\textit{\contentsname}!\@starttoc{toc}}
я же не могу использовать команды с @ вне стилевого файла.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Вообще-то можешь:

By default, LaTeX will allow the use of the '@' characters for control sequences from within package and class files, but not from within an end-user document. This way it is possible to protect commands, i.e. to make them accessible from packages only.

However it is possible to override this security with the duo \makeatletter and \makeatother. These commands only make sense in a regular document, they are not needed in package or class files.

\documentclass{...}
%...

\begin{document}

\makeatletter
\@author
\makeatother

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

Спасибо, не знал об этом.

Вставляю сразу после \begin{document}

\makeatletter
\renewcommand{\tableofcontents}{!\textit{\contentsname}!\@starttoc{toc}}
\makeatother
и получаю ошибку при компиляции документа:
! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.2 ...\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre }}{3}
                                                  
? 
! Emergency stop.
 ...                                              
                                                  
l.2 ...\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre }}{3}
                                                  
!  ==> Fatal error occurred, the output PDF file is not finished!
Transcript written on diploma.log.

То же самое и если попробовать разместить эти три строчки в преамбуле.

Hasek ★★
() автор топика
Последнее исправление: Hasek (всего исправлений: 1)
Ответ на: комментарий от XMs

Ошибка всё равно остаётся. И мне в любом случае понадобится кириллица в названии оглавления.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Ошибка всё равно остаётся

То есть ничего не меняется или оно по-прежнему жалуется на кириллицу? Скинь полный лог.

И мне в любом случае понадобится кириллица в названии оглавления

Это понятно

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

Абсолютно то же самое и по-прежнему жалуется на кириллицу. В файле diploma.log в конце та же информация. На всякий случай, вот ссылка на полный лог, он на 677 строк.

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.2 ...\IeC {\CYRN }\IeC {\CYRI }\IeC {\CYRE }}{3}
                                                  
? 
! Emergency stop.
 ...                                              
                                                  
l.2 ...\IeC {\CYRN }\IeC {\CYRI }\IeC {\CYRE }}{3}
                                                  
!  ==> Fatal error occurred, the output PDF file is not finished!
Transcript written on diploma.log.
Hasek ★★
() автор топика
Ответ на: комментарий от Hasek
(./title.tex<<t2a.cmap>> [1
 
 
 
{/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]) (./diploma.toc
 
! LaTeX Error: Something's wrong--perhaps a missing \item.

Это первая ошибка, остальные могут быть следствием. Дай полный текст главного файла (того, где преамбула; всё содержимое кроме титульника перенеси в отдельные файлы, если ещё этого не сделал) и, если титульник идёт отдельным файлом, его тоже. Такое ощущение, что упущено что-то банальное и мелкое (предположение построено на гадании на кофейной гуще и жертвенных анютиных глазках)

XMs ★★★★★
()
Последнее исправление: XMs (всего исправлений: 1)
Ответ на: комментарий от XMs

Главный файл:

\documentclass[a4paper, 14pt]{extreport}

\frenchspacing

\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english,russian]{babel}
\usepackage{amsmath, amsthm, amsfonts, amssymb}
\usepackage{cmap}
\usepackage{indentfirst}
\usepackage[top=2cm, bottom=2cm, left=3cm, right=1cm]{geometry}

\renewcommand{\contentsname}{ОГЛАВЛЕНИЕ}

\begin{document}

%\makeatletter
%\renewcommand{\tableofcontents}{!\textit{\contentsname}!\@starttoc{toc}}
%\makeatother

\newgeometry{top=2cm, bottom=1cm, left=1cm, right=1cm}
\include{title}
\restoregeometry
\setcounter{page}{2}
%\tableofcontents
\include{table_of_contents}
\include{introduction}
\include{chapter_1}
\include{chapter_2}
\include{chapter_3}
\include{conclusion}
\include{bibliography}

\end{document}

Это работающая версия, для получения ошибки надо раскомментировать то, что касается переопределения и создания оглавления. В файле table_of_contents при помощи окружения tabbing уже набросал содержание вручную по всем правилам (а что делать, сдавать то надо...)

Титульный лист:

\begin{titlepage}
\thispagestyle{empty}

\begin{center}
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ\\ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ\\ <<МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ\\ имени М.В.ЛОМОНОСОВА>>\\[0.5cm]

ФИЗИЧЕСКИЙ ФАКУЛЬТЕТ\\[0.5cm]

КАФЕДРА ...\\[2cm]

БАКАЛАВРСКАЯ РАБОТА\\[0.5cm]

\textbf{...}\\[2cm]
\end{center}

\begin{flushright}
Выполнил студент\\ ...-й группы:\\ ...\\[1cm]
\rule{4cm}{0.01cm}
\end{flushright}

\hspace{0.5cm}

\begin{flushright}
Научный руководитель:\\ ...\\[1cm]
\rule{4cm}{0.01cm}
\end{flushright}

\hspace{0.5cm}

\begin{flushleft}
Допущена к защите\\[1cm] Зав. кафедрой \rule{4cm}{0.01cm}\\
\end{flushleft}

\hspace{0.5cm}

\vfil

\centering{Москва}\\
\centering{2016}\\
\end{titlepage}

Hasek ★★
() автор топика
Последнее исправление: Hasek (всего исправлений: 1)
Ответ на: комментарий от Hasek

Немного поигрался с твоим кодом. Оглавление не менялось, как и у тебя. Перенёс переопределение в тело документа — заработало. Никаких ошибок в процессе компиляции не получал даже с переопределением \tableofcontents, при раскомментировании команда переопределялась корректно. https://yadi.sk/d/LfZev6B5rvdQq — если интересно, компилируемый код

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

Спасибо! Вот это работает, на основании вашего варианта почти что привёл оглавление к желаемому виду. Но теперь появилась ещё одна проблема — в случае длинного названия LaTeX продолжает его перенос на следующей строке с какого-то отступа и оно не находится на одном уровне с началом названия строчкой выше. Как это можно поправить?

Выглядит примерно так:

ГЛАВА 1. ABCDEFGH...
   IJKLMN
То есть перенесённая часть продолжается точно под буквой В слова глава. Мне нужно, чтобы всё было на одном уровне.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

То есть перенесённая часть продолжается точно под буквой В слова глава. Мне нужно, чтобы всё было на одном уровне

Вообще это очень правильное поведение, призванное улучшить читабельность (глаз цепляется за отступ). Как поменять, если честно, не знаю, лучше спросить кого-то вроде Evgueni

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

Ещё раз спасибо за ответы!
Тему отмечаю как решённую, работу принимают так.

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