質問

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

このソリューションをテストしましたが、サンプルドキュメントでは良好な出力が生成されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top