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のようにしようかなとも思いましたが、たった一行のために別ファイルを用意するのも何かと思ったのですが、こういう場合はどうするのが賢いやり方なのでしょう。
もう一つ。
ヘッダー幅は本文幅に合わせなさいといった感じの設定は出来ないものでしょうか。普通、ヘッダー幅は本文幅と同じか、それを基準に幾らか加減するものと思います。本文と関係ない数字を決めうちというのは如何にも使いづらいです。
もっと簡単な設定方法があるような気がします。そういう方法があればご教授ください。
お手数をお掛けします。
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}
これもドキュントに書いてありますが,\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}