ширина заголовка на последней странице главы

StackOverflow https://stackoverflow.com/questions/829212

  •  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}}

Я протестировал это решение, и в вашем примере документа оно дает хороший результат.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top