\NewPageStyleによるthumb indexの作成について

\NewPageStyleによるthumb indexの作成について

- 北川 直樹 の投稿
返信数: 2

latexで添付したテキストのようなpagestyleを作りたいと思い,jlreqの\NewPageStyleを用いて,以下のようにpagestyleをカスタマイズしていました。

\NewPageStyle{thumbindexstyle}{%
    running_head_position={top-right},
    odd_running_head={_section},
    even_running_head={_chapter},
    mark_format={
        _section={\S \thesection\hspace{1\zw}#1},
        _chapter={第\thechapter 回\hspace{1\zw}#1}
    },
    odd_head_format={
        #1\hspace{3\zw}
        \begin{tikzpicture}
            \useasboundingbox (0,0) rectangle (0,0) ;
            \node[anchor=south west] at(1\zw,-0.35\zw) {\thepage} ;
            \fill[black] (0,-0.2) -- (-0.35,-0.2) -- (-0.35,2) -- (0,2) -- cycle ;
            % ツメ(奇数ページ)
            \pgfmathparse{mod(\thechapter,13) == 0 ? 1 : mod(\thechapter, 13)}
            \let\modchapter=\pgfmathresult
            % \textheight の 1/12 を計算
            \pgfmathparse{1/12*\textheight}
            \let\calcheight=\pgfmathresult
            % \calcheight × \modchapter の座標を計算
            \pgfmathparse{\calcheight*(\modchapter-1)+\headsep}
            \let\yt=\pgfmathresult
            % \calcheight × (\modchapter - 1) の座標を計算
            \pgfmathparse{\calcheight*\modchapter+\headsep}
            \let\yb=\pgfmathresult
            % 塗りつぶし
            \fill[black,rounded corners=5pt] (1,-\yt pt) -- (1,-\yb pt) -- (3,-\yb pt) -- (3,-\yt pt) -- cycle ;
        \end{tikzpicture}
    },
    even_head_format={
        \begin{tikzpicture}
            \useasboundingbox (0,0) rectangle (0,0) ;
            % ページ番号と見出しの境界線
            \node[anchor=south east] at(-1\zw,-0.35\zw) {\thepage} ;
            \fill[black] (0,-0.2) -- (0.35,-0.2) -- (0.35,2) -- (0,2) -- cycle ;
            % ツメ(偶数ページ)
            \pgfmathparse{mod(\thechapter,13) == 0 ? 1 : mod(\thechapter, 13)}
            \let\modchapter=\pgfmathresult
            % \textheight の 1/1 を計算
            \pgfmathparse{1/12*\textheight}
            \let\calcheight=\pgfmathresult
            % \calcheight × \modchapter の座標を計算
            \pgfmathparse{\calcheight*(\modchapter-1)+\headsep}
            \let\yt=\pgfmathresult
            % \calcheight × (\modchapter - 1) の座標を計算
            \pgfmathparse{\calcheight*\modchapter+\headsep}
            \let\yb=\pgfmathresult
            % 塗りつぶし
            \fill[black,rounded corners=5pt] (-1,-\yt pt) -- (-1,-\yb pt) -- (-3,-\yb pt) -- (-3,-\yt pt) -- cycle ;
        \end{tikzpicture}
        \hspace{3\zw}#1
    }
}
 
ここで,ツメはchapterが変わるごとにその位置をリセットしていき,ツメ一つの大きさは\textheightの1/12の大きさになるようにし,また,chapterが13に達すると,ツメの位置がchapter 1のときの位置に戻り,以後繰り返していくようにしました。

このコードでコンパイルすると,chapter 1からchapter 12までは期待通りに出力されました。しかし,chapter 13とchapter 14のときのツメが同じ高さに出力されてしまいます。

modに原因があると思うのですが,回避方法を見出すことができなかったので,ここで質問させていただきます。つまり,chapter 13とchapter 14のときのツメの位置がchapter 1とchapter 2のそれと同じようになる方法をお教えいただきたいです。

以下にコード全体を示しておきます。Lualatex+jlreqです。よろしくお願いします。

\documentclass[book,twoside]{jlreq}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning,shadows}
\usetikzlibrary{bending,decorations.shapes}
\usetikzlibrary{intersections,calc,through,automata}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{cd}
\usepackage{pgfmath}
\usepackage{color}
\usepackage[top=20truemm,inner=20truemm,outer=18truemm,bottom=8truemm]{geometry}
\usepackage{lipsum}
\NewPageStyle{thumbindexstyle}{%
    running_head_position={top-right},
    odd_running_head={_section},
    even_running_head={_chapter},
    mark_format={
        _section={\S \thesection\hspace{1\zw}#1},
        _chapter={第\thechapter 回\hspace{1\zw}#1}
    },
    odd_head_format={
        #1\hspace{3\zw}
        \begin{tikzpicture}
            \useasboundingbox (0,0) rectangle (0,0) ;
            \node[anchor=south west] at(1\zw,-0.35\zw) {\thepage} ;
            \fill[black] (0,-0.2) -- (-0.35,-0.2) -- (-0.35,2) -- (0,2) -- cycle ;
            % ツメ(奇数ページ)
            \pgfmathparse{mod(\thechapter,13) == 0 ? 1 : mod(\thechapter, 13)}
            \let\modchapter=\pgfmathresult
            % \textheight の 1/12 を計算
            \pgfmathparse{1/12*\textheight}
            \let\calcheight=\pgfmathresult
            % \calcheight × \modchapter の座標を計算
            \pgfmathparse{\calcheight*(\modchapter-1)+\headsep}
            \let\yt=\pgfmathresult
            % \calcheight × (\modchapter - 1) の座標を計算
            \pgfmathparse{\calcheight*\modchapter+\headsep}
            \let\yb=\pgfmathresult
            % 塗りつぶし
            \fill[black,rounded corners=5pt] (1,-\yt pt) -- (1,-\yb pt) -- (3,-\yb pt) -- (3,-\yt pt) -- cycle ;
        \end{tikzpicture}
    },
    even_head_format={
        \begin{tikzpicture}[remember picture]
            \useasboundingbox (0,0) rectangle (0,0) ;
            % ページ番号と見出しの境界線
            \node[anchor=south east] at(-1\zw,-0.35\zw) {\thepage} ;
            \fill[black] (0,-0.2) -- (0.35,-0.2) -- (0.35,2) -- (0,2) -- cycle ;
            % ツメ(偶数ページ)
            \pgfmathparse{mod(\thechapter,13) == 0 ? 1 : mod(\thechapter, 13)}
            \let\modchapter=\pgfmathresult
            % \textheight の 1/1 を計算
            \pgfmathparse{1/12*\textheight}
            \let\calcheight=\pgfmathresult
            % \calcheight × \modchapter の座標を計算
            \pgfmathparse{\calcheight*(\modchapter-1)+\headsep}
            \let\yt=\pgfmathresult
            % \calcheight × (\modchapter - 1) の座標を計算
            \pgfmathparse{\calcheight*\modchapter+\headsep}
            \let\yb=\pgfmathresult
            % 塗りつぶし
            \fill[black,rounded corners=5pt] (-1,-\yt pt) -- (-1,-\yb pt) -- (-3,-\yb pt) -- (-3,-\yt pt) -- cycle ;
        \end{tikzpicture}
        \hspace{3\zw}#1
    }
}
\pagestyle{thumbindexstyle}

\begin{document}

\title{thumb index pagestyle}
\author{※ 偶数ページ・奇数ページ確認用タイトル}
\maketitle

\foreach \c in {1,...,24} {
    \chapter{Chapter \c}
   
    \section{Section 1}
    \lipsum[1-3]
   
    \section{Section 2}
    \lipsum[4-6]
   
    \section{Section 3}
    \lipsum[7-9]

    \section{Section 4}
    \lipsum[10-12]
}

\end{document}
添付 参考テキスト.JPG
北川 直樹 への返信

Re: \NewPageStyleによるthumb indexの作成について

- 前田 一貴 の投稿

このコードでコンパイルすると,chapter 1からchapter 12までは期待通りに出力されました。しかし,chapter 13とchapter 14のときのツメが同じ高さに出力されてしまいます。 modに原因があると思うのですが,

その mod のコードは

\pgfmathparse{mod(\thechapter,13) == 0 ? 1 : mod(\thechapter, 13)}

のようですが,これだと13を13で割った余りは0なので1,14を13で割った余りは1なので1となります. 13が1,14が2になって欲しいのですから,12で割った余りを考えて,余りが0の場合は12とすればよいのではないでしょうか.

\pgfmathparse{mod(\thechapter,12) == 0 ? 12 : mod(\thechapter,12)}
前田 一貴 への返信

Re: \NewPageStyleによるthumb indexの作成について

- 北川 直樹 の投稿

返信ありがとうございます。
modの設定をご教授されたように変更したところ,期待通りの結果が得られました。
この度は誠にありがとうございました。