scrreprt 拇指索引與 scrlayer-scrpage:使用任何形狀作為chapterthumb

scrreprt 拇指索引與 scrlayer-scrpage:使用任何形狀作為chapterthumb

我想使用與矩形不同的形狀作為chapterthumb-symbol,即圓形或帶有圓角的菱形。使用 scrlayer-scrpage 和雙面 scrreprt 設定是否可以實現這一點?我看到可以使用 Tikz 在 LaTeX 中繪製形狀,我如何使用我的設定來實現這一點?

微量元素:

\documentclass[11pt, twoside, openright, BCOR=1cm, headsepline]{scrreprt}
\usepackage[paperheight=24cm, paperwidth=17cm, inner=2.3cm, outer=1.6cm, top=2.5cm, bottom=1.9cm,footskip=1cm]{geometry}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}


\usepackage{graphicx}
\usepackage{xcolor}

%%%---header/footer
\usepackage[manualmark]{scrlayer-scrpage}

%%--"Chapter #" in lehead (only for numbered chapters), chapter name in rohead
\renewcommand*\chaptermark[1]{%
    \markboth{\ifnumbered{chapter}{\chaptermarkformat}{}}{#1}%
}

\AfterTOCHead[toc]{\markboth{}{\contentsname}}

\ofoot[\pagemark]{\pagemark}

\renewcommand\chapterpagestyle{empty} %% no header or page numbers on chapter title pages


%%%---thumb indices using chapterthumb

% the following bases on an example in the KOMA-Script book:
\newcommand*{\firstchapterthumbskip}{.1\paperheight}
\newcommand*{\lastchapterthumbskip}{\firstchapterthumbskip}
\newcommand*{\chapterthumbheight}{2em}
\newcommand*{\chapterthumbwidth}{.1\paperheight}
\newcommand*{\chapterthumbskip}{.1\paperheight}
\newcommand*{\chapterthumbboxcolor}{gray!30}
\newcommand*{\chapterthumbcolor}{white}
\newcommand*{\chapterthumbformat}{\thechapter}
\newkomafont{chapterthumb}{\normalfont\Large\color{\chapterthumbcolor}}

\makeatletter
\newcommand*\chapterthumb@box{%
    \parbox[c][\chapterthumbheight][c]{\chapterthumbwidth}{%
        \centering\usekomafont{chapterthumb}{\chapterthumbformat}%
    }%
}
\newcommand*{\chapterthumbbox}{%
    \if@mainmatter
    \ifnum\value{chapter}>\z@
    \ifnum \value{chapterthumb}<\z@
    \else
    \begingroup
    \protected@edef\reserved@a{\chapterthumbformat}%
    \ifx\reserved@a\lastchapterthumbformat\else
    \stepcounter{chapterthumb}%
    \global\let\lastchapterthumbformat\reserved@a
    \fi
    \@tempcnta=\numexpr 
    \dimexpr 
    \paperheight
    -\firstchapterthumbskip
    -\chapterthumbwidth
    -\lastchapterthumbskip
    \relax / \dimexpr 
    \chapterthumbskip 
    \relax
    +1
    \relax
    \ifnum \value{chapterthumb}<\@tempcnta
    \else
    \setcounter{chapterthumb}{0}%
    \fi
    \vspace*{%
        \dimexpr 
        \firstchapterthumbskip
        + ( \chapterthumbskip )
        * \value{chapterthumb}%
        - \baselineskip
        \relax
    }\par
    \setlength{\fboxsep}{0pt}%
    \ifodd\value{page}
    \hfill
    \makebox[0pt][r]{%
        \rotatebox[origin=tr]{90}{%
            \colorbox{\chapterthumbboxcolor}{%
                \parbox[t][\chapterthumbheight]{\chapterthumbwidth}{%
                    \chapterthumb@box
                    \vskip3mm
    }}}}%
    \else
    \hspace*{-3mm}%
    \makebox[0pt][l]{%
        \rotatebox[origin=tr]{90}{%
            \colorbox{\chapterthumbboxcolor}{%
                \parbox{\chapterthumbwidth}{%
                    \vskip3mm
                    \chapterthumb@box
    }}}}%
    \fi
    \endgroup
    \fi
    \fi
    \fi
}
\makeatother

\newcounter{chapterthumb}
\setcounter{chapterthumb}{10000}
\newcommand*{\lastchapterthumbformat}{\relax}

\DeclareNewLayer[%
background,%
outermargin,%
contents=\chapterthumbbox
]{chapterthumb}

\newcommand*\EnableChapterthumb{%
    \IfLayerAtPageStyle{scrheadings}{chapterthumb}{}
    {\AddLayersToPageStyle{@everystyle@}{chapterthumb}}%
}
\newcommand*\DisableChapterthumb{%
    \RemoveLayersFromPageStyle{@everystyle@}{chapterthumb}%
}

\EnableChapterthumb

\usepackage{lipsum}


\begin{document}

\chapter{First}

\lipsum[1-6]

\chapter{Second}

\lipsum[7-12]

\end{document}

答案1

會出現成為可能。

\documentclass[11pt, twoside, openright, BCOR=1cm, headsepline]{scrreprt}
\usepackage[paperheight=24cm, paperwidth=17cm, inner=2.3cm, outer=1.6cm, top=2.5cm, bottom=1.9cm,footskip=1cm]{geometry}
\usepackage{tikz}

%%%---header/footer
\usepackage[manualmark]{scrlayer-scrpage}

%%--"Chapter #" in lehead (only for numbered chapters), chapter name in rohead
\renewcommand*\chaptermark[1]{%
    \markboth{\ifnumbered{chapter}{\chaptermarkformat}{}}{#1}%
}

\AfterTOCHead[toc]{\markboth{}{\contentsname}}

\ofoot[\pagemark]{\pagemark}

\renewcommand\chapterpagestyle{empty} %% no header or page numbers on chapter title pages


%%%---thumb indices using chapterthumb

% the following bases on an example in the KOMA-Script book:
\newcommand*{\firstchapterthumbskip}{.1\paperheight}
\newcommand*{\lastchapterthumbskip}{\firstchapterthumbskip}
\newcommand*{\chapterthumbheight}{3em}
\newcommand*{\chapterthumbwidth}{.1\paperheight}
\newcommand*{\chapterthumbskip}{.1\paperheight}
\colorlet{chapterthumbboxcolor}{gray!30}
\newcommand*{\chapterthumbcolor}{white}
\newcommand*{\chapterthumbformat}{\thechapter}
\newkomafont{chapterthumb}{\normalfont\Large\color{\chapterthumbcolor}}

\makeatletter
\newcommand*\chapterthumb@box{%
  \usekomafont{chapterthumb}%
    \parbox[c][\chapterthumbheight][c]{\chapterthumbwidth}{%
      \centering
      \begin{tikzpicture}
        \node[circle, inner sep=1.3ex, fill=chapterthumbboxcolor]
          {\chapterthumbformat};
      \end{tikzpicture}%
    }%
}
\newcommand*{\chapterthumbbox}{%
    \if@mainmatter
    \ifnum\value{chapter}>\z@
    \ifnum \value{chapterthumb}<\z@
    \else
    \begingroup
    \protected@edef\reserved@a{\chapterthumbformat}%
    \ifx\reserved@a\lastchapterthumbformat\else
    \stepcounter{chapterthumb}%
    \global\let\lastchapterthumbformat\reserved@a
    \fi
    \@tempcnta=\numexpr
    \dimexpr
    \paperheight
    -\firstchapterthumbskip
    -\chapterthumbwidth
    -\lastchapterthumbskip
    \relax / \dimexpr
    \chapterthumbskip
    \relax
    +1
    \relax
    \ifnum \value{chapterthumb}<\@tempcnta
    \else
    \setcounter{chapterthumb}{0}%
    \fi
    \vspace*{%
        \dimexpr
        \firstchapterthumbskip
        + ( \chapterthumbskip )
        * \value{chapterthumb}%
        - \baselineskip
        \relax
    }\par
    \setlength{\fboxsep}{0pt}%
    \ifodd\value{page}
    \hfill
    \makebox[0pt][r]{%
        \rotatebox[origin=c]{90}{\chapterthumb@box}}%
    \else
    \makebox[0pt][l]{%
        \rotatebox[origin=c]{90}{\chapterthumb@box}}%
    \fi
    \endgroup
    \fi
    \fi
    \fi
}
\makeatother

\newcounter{chapterthumb}
\setcounter{chapterthumb}{10000}
\newcommand*{\lastchapterthumbformat}{\relax}

\DeclareNewLayer[%
background,%
outermargin,%
contents=\chapterthumbbox
]{chapterthumb}

\newcommand*\EnableChapterthumb{%
    \IfLayerAtPageStyle{scrheadings}{chapterthumb}{}
    {\AddLayersToPageStyle{@everystyle@}{chapterthumb}}%
}
\newcommand*\DisableChapterthumb{%
    \RemoveLayersFromPageStyle{@everystyle@}{chapterthumb}%
}

\EnableChapterthumb

\usepackage{lipsum}

\begin{document}

\chapter{First}

\lipsum[1-6]

\chapter{Second}

\lipsum[7-12]

\end{document}

在此輸入影像描述

如果您想要帶有圓角的菱形,請\usetikzlibrary{backgrounds}在後面添加\usepackage{tikz}\begin{tikzpicture} ... \end{tikzpicture}%用以下內容替換該部分:

\begin{tikzpicture}
  \node[inner sep=2.5ex] (n) {\chapterthumbformat};
  \begin{scope}[on background layer]
    \path[fill=chapterthumbboxcolor, rounded corners=2pt]
      (n.north) -- (n.west) -- (n.south) -- (n.east) -- cycle;
  \end{scope}
\end{tikzpicture}%

在此輸入影像描述

相關內容