ヘッダー幅の調整

ヘッダー幅の調整

- 児島 政洋 の投稿
返信数: 3
fancyhdr.styを使ってヘッダーの体裁を整えました。
\usepackage{fancyhdr}
\pagestyle{fancy}

その後、texファイルで左マージンを変更し、右のマージンも左と同じぐらいになるようにテキスト幅を変更しました。
\setlength{\hoffset}{-0.2in}
\setlength{\textwidth}{390pt}

すると、本文のマージンは左右のバランスも問題なく思ったとおりになったのですが、ヘッダーの幅が変更前のままです。

そこでfancyhdr.styの中を調べたところ、313行目の
\headwidth=-123456789sp %magic constant

という行を書き換えると、ヘッダーの幅が変更できることが分かりました。私の場合、
\headwidth=-122000000sp %magic constant

と書くとちょうど良くなりました。

しかしfancyhdr.styは他のファイルなどでも使います。これを書き換えるのは他に支障がでます。ファイル名を変えてfancyhdr_a.styのようにしようかなとも思いましたが、たった一行のために別ファイルを用意するのも何かと思ったのですが、こういう場合はどうするのが賢いやり方なのでしょう。

もう一つ。

ヘッダー幅は本文幅に合わせなさいといった感じの設定は出来ないものでしょうか。普通、ヘッダー幅は本文幅と同じか、それを基準に幾らか加減するものと思います。本文と関係ない数字を決めうちというのは如何にも使いづらいです。

もっと簡単な設定方法があるような気がします。そういう方法があればご教授ください。

お手数をお掛けします。
児島 政洋 への返信

Re: ヘッダー幅の調整

- TONE Kozaburo の投稿

たった1行でもオリジナルと異なるスタイルファイルは別名とすべきです。

選択肢です。

  1. fancyhdr.styの作者に連絡して修正を加えたものをオリジナルとしてもらう
  2. 自分で使うものはfancyhdr_a.styのようにファイル名を変えて使用する
  3. 試していませんが,プリアンブルで\headwidthを再定義するとどうでしょうか
児島 政洋 への返信

Re: ヘッダー幅の調整

- Z. R. の投稿

fancyhdr.sty 中のコメントを読めば判るように、あの \headwidth の妙な magic constnat は「ユーザが正しくない設定方法を用いた時にそれを検知して救済する」ためのものです。だとするならば、正しくない方法に拘るより、正しい方法を用いた方が妥当に思えます。

ドキュメントを読むと、ヘッダ・フッタの幅は、\pagestyle{fancy} 実行時の \textwidth が反映されることが解ります。ということは、\textwidth 設定はこれより前でなければならず、それを守れば正しい結果が得られるように思えます。

\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\setlength{\oddsidemargin}{-5.4mm}% 20mm - 1in
\setlength{\textwidth}{170mm}
\lhead{$\leftarrow$}
\rhead{$\rightarrow$}
\cfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\pagestyle{fancy}
\begin{document}
\noindent This is a\hfill test.
\end{document}
児島 政洋 への返信

Re: ヘッダー幅の調整

- 匿 名 の投稿

これもドキュントに書いてありますが,\pagestyle{fancy} より後で \headwidth を設定するというやり方でもうまく行きそうです(そもそも,fancyhdr.sty の中を見るよりも,ドキュメントを読むほうが先では?).

\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\lhead{$\leftarrow$}
\rhead{$\rightarrow$}
\cfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\pagestyle{fancy}

\setlength{\oddsidemargin}{-5.4mm}% 20mm - 1in
\setlength{\textwidth}{170mm}

\setlength{\headwidth}{\textwidth}

\begin{document}
\noindent This is a\hfill test.
\end{document}