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
11064
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
11064
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
11064
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
11064
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
11064
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
11064
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
11064
Hogtown
Anna from Svetl в сообщении #1222591 писал(а):
Впрочем, все, что относится к математике на всякий случай я собрала, в том числе, из преамбул тезисов.

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

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

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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