使用 scrlayer-scrpage 的 scrreprt 缩略图索引:使用任意形状作为 chapterthumb

使用 scrlayer-scrpage 的 scrreprt 缩略图索引:使用任意形状作为 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}%

在此处输入图片描述

相关内容