2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 16:40 


05/10/10
152
Здравствуйте.

Верстаю сборник тезисов для конференции в классе article. Сборник разделен на разделы section, каждый тезис - подраздел subsection. После каждого тезиса идет список литературы через окружение thebibliography. Окружение thebibliography в стилевом файле переопределила как subsubsection (знаю, что править стилевой файл - моветон, но не было времени искать нормальное решение). Я хотела воспользоваться пакетом fancyhdr, чтобы на нечетных страницах выводить в колонтитуле название раздела (section), но после первого же списка литературы (а их может быть и по два на странице), в колонтитуле вместо названия раздела появляется надпись "Список литературы". Название раздела в колонтитул я добавляла с помощью сочетания
Код:
\renewcommand{\sectionmark}[1]{\markright{#1}{}}

затем
Код:
\fancyhead[LO]{\rightmark}


Пожалуйста, подскажите как заставить TeX игнорировать списки литературы? И заодно, как переопределить thebibliography в преамбуле, а не в стилевом файле.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 18:17 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
Пожалуйста, верните sty в первобытное состояние и попробуйте

Используется синтаксис LaTeX
\renewcommand\bibname{Список Летиратуры}

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 18:41 


05/10/10
152
Red_Herring, выдает ошибку LaTeX Error: \bibname undefined.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 19:09 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
Ну я же не знаю Вашей преамбулы. Попробуйте вставить
Используется синтаксис LaTeX
\usepackage[russian]{babel}
что вообще делать положено

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 19:44 
Заслуженный участник
Аватара пользователя


11/01/06
3822

(Оффтоп)

Red_Herring в сообщении #1220572 писал(а):
Пожалуйста, верните sty в первобытное состояние и попробуйте
Используется синтаксис LaTeX
\renewcommand\bibname{Список Летиратуры}
В классе article вместо \bibname нужно \refname.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 20:03 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
RIP
Это работает если не загружать babel. С ним будет то, что положено т.е. Список Литературы в русском, а изменить
[url]\usepackage[russian]{babel}
\addto\captionsrussian{\renewcommand{\refname}{Ссылки}}[/url]

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение31.05.2017, 20:20 
Заслуженный участник
Аватара пользователя


11/01/06
3822

(Оффтоп)

Вообще, я так понял, что проблема не в названии списка литературы, а в том, что список литературы воспринимается как секционная единица, достойная занесения в колонтитул. В связи с этим я бы предложил использовать \subsubsection* (со звёздочкой), но не уверен, что это поможет. Я сам ни с fancyhdr, ни с несколькими библиографиями в одном документе дел не имел, поэтому не могу ничего посоветовать.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение01.06.2017, 17:10 


05/10/10
152
Red_Herring, разумеется, пакет babel подключен. RIP все указал верно, проблема именно в том, что список литературы воспринимается при формировании колонтитулов как раздел, несмотря на то что в стилевом файле он изначальное был определен со звездочкой (и как section в оригинальном article, и как subsubsection у меня. Что интересно, если определять обычный раздел section* в тексте, то он в колонтитулы не вносится. Впрочем, сначала я решила проблему, занеся все списки литературы в окружение minipage, а затем, поскольку выглядело это не очень хорошо, решила сделать эти списки в обычном окружении enumerate.
Еще такая проблема: на некоторых страницах TeX слишком сильно растягивает вертикальные отступы между выключенными формулами и текстом. Я добавила в преамбулу
Код:
\setlength{\abovedisplayskip}{3pt plus 0pt minus 0pt}
\setlength{\belowdisplayskip}{3pt plus 0pt minus 0pt}
\setlength{\abovedisplayshortskip}{3pt plus 0pt minus 0pt}
\setlength{\belowdisplayshortskip}{3pt plus 0pt minus 0pt}

но никакого влияния это не оказало.
И еще: название одного из разделов слишком длинное и вылазит в оглавлении на поля вместе с номером страницы. Можно ли как-то принудительно в оглавлении перенести последнее слово в названии на следующую строку?

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение01.06.2017, 17:35 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
 Самое простое:
Используется синтаксис LaTeX
\section[short title]{long long long long long long long long long long long long long long title}

Тогда в оглавление и в бегущей строке будет короткая версия. В документклассе memoir можно даже
Используется синтаксис LaTeX
\section[short title][another short title]{long long long long long long long long long long long long long long title}

раздельно для оглавления и в бегущей строки

Вы, очевидно, считаете, что Вам отвечают ясновидящие, поскольку упорно не хотите показать преамбулу

Также:
https://tex.stackexchange.com/questions/132064/changing-the-table-of-contents-width

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение02.06.2017, 02:50 


05/10/10
152
Сократить название не пойдет. К сожалению, предложенный по ссылке метод просто сдвигает номер страницы, а мне нужно, чтобы заголовок раздела был в оглавлении в две строки. Если, скажем, дописать в него еще слово, то он без проблем разбивается на две строки. Пока что я в определении раздела \section{} в последнем слове указала места для переноса, и тогда происходит перенос на следующую строку внутри этого слова, а хотелось бы, чтобы оно было снесено целиком.

Вот преамбула:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[a4paper,twoside,12pt]{article}
\usepackage[cp1251]{inputenc}
\usepackage{pscyr}
\usepackage[T2A]{fontenc}
\renewcommand{\rmdefault}{ftm}
\usepackage[english,russian]{babel}

\usepackage{cmap} %Поиск по русским символам в pdf, копирование текста из pdf без искажения кодировок (включает таблицу символов в pdf)

%Поля
\usepackage[inner=2cm,outer=2cm,top=2cm,bottom=2cm,marginparwidth=0cm,marginparsep=0cm,ignorefoot,includehead,headsep=2ex,paperheight=29.7cm]{geometry}

%Графика в формате eps
\usepackage[dvips]{graphicx}
\graphicspath{{Pictures/}{Pictures/B/}}

%Математические пакеты
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{array}
\usepackage{mathrsfs}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amsbsy}

\usepackage{indentfirst} %Абзацный отступ в первом абзаце раздела

%Отбивка тире пробелами
\frenchspacing

\renewcommand{\labelitemi}{\normalfont\bfseries{--}} %Переопределение маркеров списка


\clubpenalty=10000 %Не оставлять одну первую строку абзаца на странице
\widowpenalty=10000 %Не оставлять одну последнюю строку абзаца на странице
\tolerance=3000 %От строк на полях

\raggedbottom %Допускает пустое пространство внизу страницы

%Управление оглавлением
\usepackage{tocloft}

\setlength{\cftsecnumwidth}{6.5em} %Пространство под надпись SECTION N
\renewcommand{\cftsecaftersnum}{.} %Точка после номера раздела в оглавлении

\renewcommand{\cfttoctitlefont}{\hfill\bfseries\Large\MakeUppercase} %Большая надпись <<Содержание>>, жирный шрифт, все пописные
\renewcommand{\cftaftertoctitle}{\hfill} %Выравниевание заголовка <<Содержание >> по центру
\renewcommand{\cftparskip}{5pt plus 2 pt minus 2 pt} %Отступы между пунктами в оглавлении

%Настройка отступов

\setlength{\parindent}{5ex} %Абзацный отступ
\setlength{\mathsurround}{2pt} % Устанавливает отступ от формул в строке
\setlength{\parskip}{0pt plus 1pt minus 0pt} %Вертикальный отступ между абзацами

\setlength{\abovedisplayskip}{3pt plus 0pt minus 0pt} %Отступ для выключенных формул сверху
\setlength{\belowdisplayskip}{3pt plus 0pt minus 0pt} %Отступ для выключенных формул снизу
\setlength{\abovedisplayshortskip}{3pt plus 0pt minus 0pt} %Отступ для выключенных формул от коротких строк сверху
\setlength{\belowdisplayshortskip}{3pt plus 0pt minus 0pt} %Отступ для выключенных формул от коротких строк снизу


%Настройка вида списков
\makeatletter
\renewcommand{\@listI}{%
\leftmargin=10pt
\rightmargin=0pt
\labelsep=5pt
\labelwidth=20pt
\itemindent=0pt
\listparindent=0pt
\topsep=15pt
\partopsep=2pt
\parsep=0pt
\itemsep=0pt}
\makeatother

%Настройка вида заголовков
\usepackage {titlesec}

\titleformat{\section}{\thispagestyle{empty}\centering
\hyphenpenalty=10000\normalfont
\Large\bfseries}{}{0pt plus 2 pt minus 2 pt}{\Large\MakeUppercase}

\titleformat{\subsection}{\thispagestyle{plain}\centering
\hyphenpenalty=10000\normalfont
\normalsize\bfseries}{
}{0pt plus 2 pt minus 2 pt}{\normalsize\MakeUppercase}

%Настройка отступов для заголовков
\titlespacing{\subsection}{0pt plus 0pt minus 0pt}{6ex plus 0pt minus 0pt}{6ex plus 0pt minus 0pt}
\titlespacing{\section}{0pt plus 0pt minus 0pt}{0pt plus 0pt minus 0pt}{0pt plus 0pt minus 0pt}
\titlespacing{\subsubsection}{0pt plus 0pt minus 0pt}{0pt plus 0pt minus 0pt}{0pt plus 0pt minus 0pt}

%Настройка колонтитулов
\usepackage{fancyhdr}

\renewcommand{\sectionmark}[1]{\markright{#1}}%Название секции для колонтитула
\fancypagestyle{plain}{
\fancyhead{} %Очистка верхнего колонтитула
\fancyfoot{} %Очистка нижнего колонтитула
\fancyhead[LE,RO]{\thepage} %Номер страницы слева на четных, справа на нечетных
\fancyhead[LO]{\rightmark} %Название раздела слева на нечетных
\fancyhead[RE]{RUSGRAV-16} %Надпись RUSGRAV-16 справа на четных
\renewcommand{\headrulewidth}{0.4pt} %Линейка верхнего колонтитула
}

\makeatletter
\renewcommand\thesection{SECTION~\@Alph\c@section}%Добавляет слово SECTION перед значением счетчика раздела, чтобы в колонтитулах помимо счетчика также было написано SECTION
\makeatother

%Новые команды

\newcommand{\mprg}[1]{\noindent\begin{minipage}{\linewidth}#1\end{minipage}\par\nopagebreak\vspace{10pt}} %Блок авторов, e-mail и аффилиаций, minipage, чтобы не разрывать блок

\newcommand{\auth}[1]{\vspace{-0.85cm}\begin{center}#1\end{center}} %Авторы

\newcommand{\email}[1]{\vspace{-0.85cm}\begin{center} E-mail:~#1\end{center}} %e-mail

\newcommand{\affil}[1]{\vspace{-0.85cm}\begin{center}\begin{it}#1\end{it}\end{center}} %Аффилиация

\newcommand{\e}{\mathrm{e}} %Быстрая команд для экспоненты

\newcommand{\be}[1]{\begin{enumerate}#1\end{enumerate}}%Бытрая команда для нумерованного списка

\newcommand{\toca}[2]{\setcounter{equation}{0}\addcontentsline{toc}{subsection}{\textit{#1}.~#2}} %Быстрая команда для добавления в оглавления названия тезиса и авторов, и обнуления счетчика формул в каждом тезисе

%Стиль колонтитулов
\pagestyle{plain}
 

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение02.06.2017, 03:17 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
А как заголовок раздела "в натуре"? Во сколько строк? Попробуйте поставить там где происходит такая разбивка \\

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение03.06.2017, 01:07 


05/10/10
152
Red_Herring, заголовок как раз получается в две строки. Команда \\ внутри \section{} сработала как надо (при условии защиты). Я уже пробовала такой вариант, но написала изначально
Код:
\section{text text \protect{\\} text}

А нужно было, оказывается,
Код:
\section{text text \protect\\ text}

Правда, таким образом заголовок оказывается двухстрочным и в колонтитулах, что вовсе не нужно.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение03.06.2017, 02:09 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
Anna from Svetl
Просмотрел более внимательно Ваше сообщение и преамбулу. Поскольку тезисы писали не Вы, то контроля у Вас немного.

Что Вы используете для компиляции? Судя по \usepackage[dvips]{graphicx} latex -> dvips -> ps2pdf (или что нибудь в таком духе). cmap не поддерживает dvips

 \usepackage{mathtools} вместо amsmath

\usepackage{microtype} оптимизирует rubber space, protrusion

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение06.06.2017, 00:14 


05/10/10
152
Red_Herring
Я использую latex -> dvipdfm.
Спасибо, посмотрю эти пакеты. Впрочем, все, что относится к математике на всякий случай я собрала, в том числе, из преамбул тезисов.

 Профиль  
                  
 
 Re: Как заставить fancyhdr не реагировать на список литературы
Сообщение06.06.2017, 00:26 
Заслуженный участник
Аватара пользователя


31/01/14
11057
Hogtown
Anna from Svetl в сообщении #1222591 писал(а):
Впрочем, все, что относится к математике на всякий случай я собрала, в том числе, из преамбул тезисов.

Ну правильно. А те тоже собирали по мусоркам.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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



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

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


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

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