TexLive 2021のfancyhdrをバージョンダウンする


経緯

ドキュメント作成にLatexを使用することが多いのですが、Windowsで作成するときに使用しているツールは Texlive 2020です。

  • TexLiveのダウンロードはこちら

\pagestyle{fancy}を使用することが多いのですが、ヘッダーのアルファベットがすべて大文字になってしまうのを防ぐために、かうぱーとさんのブログ記事を参考にさせてもらっています。

こんな感じのtexファイルになります。

\documentclass[11pt,a4paper]{jsbook}
\usepackage{fancyhdr}
\begin{document}

\makeatletter
\def\ps@fancy{%
\def\chaptermark##1{\markboth{\ifnum \c@secnumdepth>\z@ \thechapter\hskip 0.5em\relax \fi ##1}{}}%
\def\sectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne \thesection\hskip 0.5em\relax \fi ##1}}%
\ps@@fancy
\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
\ifdim\headwidth<0sp
\global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
\fi
}
\makeatother

\pagestyle{fancy}

\chapter{fancyのテスト}

\section{はじめに}

fancyのpagestyleをテストします。

\clearpage

2ページ目

\end{document}

TexLive 2021でのエラー

上記のtexファイルですが、TexLive 2021でタイプセット実行すると以下のエラーが出力されます。

エラー表示
This is ptex2pdf[.lua] version 20200520.0.
Processing untitled-2.tex
This is e-pTeX, Version 3.141592653-p3.9.0-210218-2.6 (utf8.sjis) (TeX Live 2021/W32TeX) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./untitled-2.tex
pLaTeX2e <2020-10-01>+2 (based on LaTeX2e <2020-10-01> patch level 4)
L3 programming layer <2021-02-18>
(c:/texlive/2021/texmf-dist/tex/platex/jsclasses/jsbook.cls
Document Class: jsbook 2020/10/09 jsclasses (okumura, texjporg)
(c:/texlive/2021/texmf-dist/tex/platex/jsclasses/jslogo.sty))
(c:/texlive/2021/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty)
(c:/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
(./untitled-2.aux)
! Undefined control sequence.
\ps@fancy ...skip 0.5em\relax \fi ##1}}\ps@@fancy 
                                                  \gdef \ps@fancy {\@fancypl...
l.17 \pagestyle{fancy}

? 

どうもps@fancyのところがエラーになっているようですが、詳しいことはよくわかりません。^^;;

fancyhdrのバージョン比較

fancyhdr.styを比較するとtexlive2020にインストールされているfancyhdrはバージョン3.10、texlive2021のはバージョン4.0.1であることがわかりました。
そこで、fancyhdrをバージョンダウンさせてみます。

fancyhdrのバージョンダウン

  • githubからfancyhdrのリポジトリをクローンします。
git clone https://github.com/pietvo/fancyhdr
cd fancyhdr
  • バージョン3.10をチェックアウトします。
git checkout V3.10
  • スタイルファイルを生成します。
tex fancyhdr.ins

リポジトリには元からスタイルファイルが入っていて、上記のコマンドを実行しても変化なしなのでこの手順はいらないのかもしれません。

  • 出来上がったファイルを、texliveがインストールされているフォルダにコピーします。
md C:\texlive\texmf-local\tex\latex\local\fancyhdr
copy *.sty C:\texlive\texmf-local\tex\latex\local\fancyhdr
  • texlive2021のls-Rファイルを更新します。
mktexlsr

結果

fancyhdrのバージョンダウン後、再度タイプセットを実行するとエラーなくPDF化できました。ヘッダーのアルファベットもちゃんと小文字で出力されています。

Texliveのパッケージ参照について

今回の件では、Texlive 2021のdistに入っているfancyhdr V4.0.1を削除してはいません。
localフォルダにfancyhdr V3.10をインストールしてls-Rを更新すると、localのほうが優先されるようです。

もとはといえば、ブログの内容をべた貼りしていることが問題なのかもしれませんが、latexの書式設定って難しくて。。。
何かの参考になれば。