ширина заголовка на последней странице главы
-
06-07-2019 - |
Вопрос
Я пытаюсь отключить marginpar при запуске новой среды multicols с этой новой средой, которая использует пакеты multicols и chngpage:
\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}
Который отлично работает:латексный коллектор http://img6.imageshack.us/img6/6757/screenshotewa.png
Хм, почти, поскольку на последней странице текущей главы "Lorem ipsum" он ведет себя так, как я ему не указывал:\addtolength{\headwidth}{ ewtextwidth}:заголовок latex в конце главы http://img11.imageshack.us/img11/6072/screenshotwbd.png
Как я мог это исправить?
Редактировать:
Я также использую fancyhdr.
2 - я Правка:
ПоЦ:
\documentclass[12pt,a4paper,oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[top=2cm,left=2cm,right=4.5cm]{geometry}
\usepackage{chngpage}
\usepackage{color}
\usepackage{amsmath}
\usepackage[pdftex,bookmarks,pdfpagemode=UseOutlines,bookmarksopen,backref
,colorlinks,urlcolor=blue,linktocpage]{hyperref}
\usepackage{url}
\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{indentfirst}
\usepackage{listings}
\usepackage{boxedminipage}
\pagestyle{fancy}
\setlength{\columnseprule}{1pt}
\setlength{\marginparwidth}{4cm}
\rhead{\large\leftmark}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\makeatletter
\renewcommand*\@makechapterhead[1]{%
{\parindent \z@ \raggedright \normalfont
\huge\bfseries
#1\par\nobreak
\vskip 20\p@
}}
\makeatother
\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\sffamily\raggedleft\footnotesize #1]%
{\sffamily\raggedright\footnotesize
\begin{boxedminipage}{\marginparwidth}#1\end{boxedminipage}
}}
\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}
\begin{document}
\tableofcontents
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\end{document}
Должна быть возможность продолжить работу с одним столбцом на той же странице после "multi", но заголовки должны быть такими, как при запуске страницы в среде "multi".
Зачем мне нужен одностолбцовый файл после многостолбцового на одной странице с параметром marginpar?Представьте, что вы представляете исходный код статьи с небольшими намеками на полях.(Именно для этого существует пакет листинга)
Решение
Я подозреваю, что ваше последнее поле заголовка создается после того, как ваш текст завершит создание многоцветных полей, так что вы выходите за рамки своих изменений.Он возвращается к старому значению.
Вероятно, вам не мешало бы добавить fancyhdr упакуйте и используйте его.Я считаю, что он хорошо работает в многоколоночном режиме.
Ладно, значит, это почти наверняка связано с масштабом.Вы выполняете настройку ширины в своем новом multi
Окружающая среда.Когда ваш текст заканчивается в многопользовательской среде, вы не заполнили последнюю страницу;заголовки не настраиваются до тех пор, пока страница не будет заполнена.Таким образом, ваша среда mutlti завершает поле, вы покидаете область видимости, а ЗАТЕМ страница завершена и отправлена.Используя старую ширину.
Установите ширину заголовка и параметры вне среды.
Другие советы
Я прогнал ваш тестовый документ.Похоже, в этом есть ошибка \newlength{\newtextwidth}
имеет глобальный эффект и поэтому вызывает ошибку.Не уверен, почему это так, но я вытащил его из \newenvironment{multi}
без каких-либо вредных последствий.
Диагноз Чарли определенно верен.Альтернативным решением является завершение страницы после multicols, но перед adjustwidth, таким образом:
\newenvironment{multi}[1]{%
...}
{\end{multicols}\vfill\break\end{adjustwidth}}
Я протестировал это решение, и в вашем примере документа оно дает хороший результат.