{tabu} を使用してヘッダーの表の線を太くするとエラーが発生します

{tabu} を使用してヘッダーの表の線を太くするとエラーが発生します

各ページのヘッダーにあるページ番号の横に太い縦線を配置したいです。小さな表を作成し、そこに線を追加することにしました。{tabu}表の境界線の太さを定義するオプション (パッケージの一部) を追加するまでは、問題なく動作します。コード (多くのエラーが発生します) は次のようになります。

\documentclass{book}

\usepackage{fancyhdr}
\usepackage{tabu}
\begin{document}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyheadoffset{0.8 cm}
\fancyhead[RO]{\begin{tabu}{|[2pt]c}\bfseries\thepage \\ ~ \end{tabu}}
\fancyhead[LE]{\begin{tabu}{c|[2pt]}\bfseries\thepage \\ ~ \end{tabu}}
\headheight=24pt
~
\newpage
~
\end{document}

表をメインテキスト(つまりヘッダーではない)に配置すると、問題なく表示されます

\begin{tabu}{|[2pt]c}\bfseries\thepage \\ ~ \end{tabu}

行を削除しても[2pt]問題は発生しません。しかし、生成されたエラーから何が問題なのかはわかりません。たとえば、最初のエラーは次のようになります。

!missing number, treated as zero

これをより大きなプロジェクトの一部としてコンパイルすると、コンパイル プロセスが完全にクラッシュします。

私の質問は、なぜこのコードがヘッダー内で機能しないのか、また、望ましい効果を得るにはどのように変更する必要があるのか​​ということです。

答え1

ここに画像の説明を入力してください

残念ながら、このtabuパッケージは多くの場合、LaTeX と互換性がありません (最も顕著なのは、構文を変更するという残念な決定において>、ここではアクティブな文字につまずいています)。

\documentclass{book}

\usepackage{fancyhdr}
\usepackage{tabu}



\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyheadoffset{0.8 cm}
\makeatletter
\fancyhead[RO]{\let\@activechar@info\@gobble\begin{tabu}{|[2pt]c}\bfseries\thepage \tabularnewline ~ \end{tabu}}
\fancyhead[LE]{\let\@activechar@info\@gobble\begin{tabu}{c|[2pt]}\bfseries\thepage \tabularnewline ~ \end{tabu}}
\makeatother
\headheight=24pt
\begin{document}
~ 
\newpage
~
\end{document}

答え2

あなたは大型ハンマーを使用しています。定規を使用して慎重に位置合わせを行うことで、より正確な測定が可能になります。

次のような可能性があります (showframeオプションとgeometryパッケージは例としてのみ使用されています)。

\documentclass{book}

%% the following two packages are just for the example
\usepackage[pass,showframe]{geometry}
\usepackage{lipsum}
%%

\usepackage{calc}
\usepackage{fancyhdr}

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyhf{}
\fancyhead[RO]{\rightpage}
\fancyhead[LE]{\leftpage}

\setlength{\headheight}{24pt}

\newcommand{\digitheight}{\fontcharht\font`0 }
\newcommand{\rightpage}{\mypagenumber{\ }{l}{\ \ \bfseries\thepage}}
\newcommand{\leftpage}{\mypagenumber{\bfseries\thepage\ \ }{r}{\ }}
% Arguments of \mypagenumber:
% #1: tokens to be set at the left of the bar
% #2: position of the bar (use l for the right header, r for the left)
% #3: tokens to be set at the right of the bar
\newcommand{\mypagenumber}[3]{%
  \raisebox{\ht\strutbox-\digitheight}{%
    \makebox[0pt][#2]{%
      \bfseries
      #1%
      \vrule depth \dimexpr 24pt - \digitheight\relax width 2pt
      #3}%
  }%
}

\begin{document}

\lipsum[1-12]
\end{document}

ページ1

ここに画像の説明を入力してください

2ページ

ここに画像の説明を入力してください

フレームなしのページ 1

ここに画像の説明を入力してください

関連情報