質問
multicolsおよびchngpageパッケージを使用するこの新しい環境で新しいmulticols環境を開始するとき、marginparをオフにしようとしています:
\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} {\ newtextwidth}: http://img11.imageshack.us/img11/の章の最後にあるラテックスヘッダー6072 / screenshotwbd.png
どうすれば修正できますか?
編集:
私もfancyhdrを使用しています。
2回目の編集:
PoC:
\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
環境でadjustwidthを実行しています。マルチ環境でテキストがなくなったとき、最後のページを埋めていません。ヘッダーは、ページがいっぱいになるまで設定されません。したがって、mutlti環境がボックスを終了し、スコープを離れると、ページが終了して出力されます。古い幅を使用しています。
環境外でヘッダーの幅とパラメーターを設定します。
他のヒント
テストドキュメントを実行しました。 \ newlength {\ newtextwidth}
がグローバルな効果を持つため、エラーが発生するというバグがあるようです。理由はわかりませんが、悪影響なしで \ newenvironment {multi}
から取り出しました。
チャーリーの診断は間違いなく正しい。別の解決策は、multicolsの後、adjustwidthの前にページを終了することです:
\newenvironment{multi}[1]{%
...}
{\end{multicols}\vfill\break\end{adjustwidth}}
このソリューションをテストしましたが、サンプルドキュメントでは良好な出力が生成されます。