词汇表和索引页的自定义边框

词汇表和索引页的自定义边框

我正在用 Latex 编写一本技术书籍KOMA 脚本 srcbook班级,我想只在词汇表和索引页上添加灰色边框。这样做的目的是让它们在合上书本时更容易找到,如下例所示:

索引页

我曾见过使用fancyhdr或的类似解决方案tikz,但 (1) 我不知道它们是否可以在不破坏 KOMA 的情况下直接应用,并且 (2) 我发现没有办法将边框限制在索引/词汇表页面上,而且我确信一定有一种明显的方法来同时完成这两件事。

更新:我找到了一个解决方案(见下文)使用eso-picifthen包来绘制边框并etoolbox修补theindex环境并控制它出现的位置。

答案1

您可以将该包background与 TikZ 和定义的节点结合使用current page

\documentclass{scrbook}
\usepackage[]{background}
\backgroundsetup{contents={}}
\usepackage{lipsum}
\usepackage{imakeidx}

\makeindex
\begin{document}
\index{a}\lipsum[1-10]

\AddEverypageHook{%
   \tikz[remember picture,overlay]\draw[line width=1cm](current page.north east) rectangle (current page.south east);%
}
\printindex
\end{document}

答案2

我正在回答我自己的问题,希望有人以后会发现它有用。

我的解决方案受到启发并基于这个答案因为使用 Tikz 会导致类的一些奇怪行为scrbook(至少在我的系统中)。我创建了两个新命令\addthumbindex\clearthumbindex分别用于启用和禁用缩略图索引。第一个命令接收缩略图索引的颜色和宽度作为强制参数,如果您需要在 A4 中打印但希望将其裁剪为 B5,您还可以指定一个可选bleed参数(下面的 MWE 显示了一个例子)。

但这个解决方案并不完美:正如您在下图中看到的,我无法在实际索引开始之前删除页面中的边框,所以我仍在寻找解决方案(无论是对我的方法的改进还是完全不同的方法)。编辑:已修复。

\documentclass[b5paper]{scrbook}
\usepackage[a4,cam,center]{crop} % to show cropping marks (if needed)
\usepackage{xcolor}              % to have colors 
\usepackage{eso-pic}             % put things into background 
\usepackage{ifthen}              % support for conditionals
\usepackage{imakeidx}            % to create the index

\usepackage{lipsum}              % for sample text

\definecolor{thumbindexgray}{RGB}{102,102,102}

% patch `begin{theindex}` to add the border
\AtBeginEnvironment{theindex}{\addthumbindex[bleed]{.5cm}{thumbindexgray}}

% patch `end{theindex}` to clear the border
\AtEndEnvironment{theindex}{\clearthumbindex}

\newcommand{\addthumbindex}[3][]{
    \newlength{\thumbindexwidth}
    \setlength{\thumbindexwidth}{#2}

    \ifthenelse{\equal{#1}{bleed}}{
        %\clearpage (not needed if we patch 'theindex' environment)
        \AddToShipoutPicture{% from package eso-pic: put something to the background
            \ifthenelse{\isodd{\thepage}}{
                % odd page: right bar
                \AtPageLowerLeft{% start the bar at the bottom right of the page
                    \put(\LenToUnit{\dimexpr\paperwidth+\thumbindexwidth-2\thumbindexwidth},
                         \LenToUnit{\dimexpr-\thumbindexwidth}){% move it to the top right
                        \color{#3}\rule{2\thumbindexwidth}{\LenToUnit{\dimexpr\paperheight+2\thumbindexwidth}}%
                    }%
                }%
            }%
            {%
                % even page: left bar
                \AtPageLowerLeft{% start the bar at the left bottom of the page
                    \put(\LenToUnit{\dimexpr\thumbindexwidth-2\thumbindexwidth},
                         \LenToUnit{\dimexpr-\thumbindexwidth}){% move it to the top right
                        \color{#3}\rule{2\thumbindexwidth}{\LenToUnit{\dimexpr\paperheight+2\thumbindexwidth}}%
                    }%
                    %\color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                }%
            }%
        }
    }
    {
        %\clearpage (not needed if we patch 'theindex' environment)            
        \AddToShipoutPicture{% from package eso-pic: put something to the background
            \ifthenelse{\isodd{\thepage}}{
                % odd page: right bar
                \AtPageLowerLeft{% start the bar at the bottom right of the page
                    \put(\LenToUnit{\dimexpr\paperwidth-\thumbindexwidth},0){% move it to the top right
                        \color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                    }%
                }%
            }%
            {%
                % even page: left bar
                \AtPageLowerLeft{% start the bar at the left bottom of the page
                    \color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                }%
            }%
        }
    }
}

\newcommand{\clearthumbindex}{
    \clearpage
    \ClearShipoutPicture
}

\makeindex

\begin{document}

\input{fake_index.tex} % just a collection of \index{XXX}\lipsum[1-10]

% \addthumbindex[bleed]{.5cm}{thumbindexgray} % (not needed if patching 'theindex')
\printindex
% \clearthumbindex{}  % (not needed if patching 'theindex')

\end{document}

编辑:我找到了一个解决方案,即修补使用该包theindex生成的环境。供将来参考,代码在和中都有效,我假设类似的东西也适用于词汇表或首字母缩略词列表。我已将我的更改添加到上面的代码中,并在下方添加了最终结果的图片。makeindexetoolboxpdflatexxelatex

最后结果

相关内容